生成PDF的代码不起作用
本文关键字:不起作用 代码 PDF 生成 | 更新日期: 2023-09-27 18:25:04
我正在将一个项目从.NET framework 1.1转换为4.0。该项目具有一些使用以下代码生成PDF的功能。
public class GeneratePDF
{
public GeneratePDF(){}
public string ShowPDF(string url, string pdfFile, string exeFile)
{
try
{
Process p = new Process();
p.StartInfo.FileName = exeFile;
string args = " --webpage -f " + pdfFile + " " + url;
p.StartInfo.Arguments = args;
p.Start();
p.WaitForExit();
return "1";
}
catch(Exception ex)
{
return (ex.ToString());
}
}
}
页面上的代码如下:
if(!System.IO.Directory.Exists(Request.PhysicalApplicationPath + "pdf"))
{
System.IO.Directory.CreateDirectory(Request.PhysicalApplicationPath + "pdf");
}
string response;
url = "http://localhost/abc/PDFSpeechDetails.aspx?SpeechNumber=" + speechNumber +"&SpeechType=S";
pdfFile = Request.PhysicalApplicationPath + "pdf''" + speechNumber + ".pdf";
exeFile = Request.PhysicalApplicationPath + "html2pdf''ghtmldoc.exe";
GeneratePDF gPDF = new GeneratePDF();
response = gPDF.ShowPDF(url, pdfFile, exeFile);
gPDF = null;
if(response == "1")
{
email.sendMailWithAttachments(txtRecEmail.Text,"","",txtSenEmail.Text,txtSenName.Text,txtSubject.Text,txtMessage.Text,Request.PhysicalApplicationPath + "pdf''" + speechNumber + ".pdf", "speech.pdf");
Response.Redirect("EmailThanks.aspx?Email="+txtRecEmail.Text);
}
else
{
throw new Exception(response);
}
此外,该项目在解决方案资源管理器中有一个"html2pdf"文件夹,其中有一个代码指向的exe文件ghtmldoc.exe。作为回应,我总是得到1作为输出,但PDF不会生成。
我的问题是:我们可以使用此代码生成PDF吗?如果可以,那么为什么该代码对我不起作用,因为它在旧项目中也不起作用(1.1)。
请帮我
好的,首先从这个链接下载最新版本的HTMLDoc软件。现在提取文件并在您的计算机上安装软件。它会询问"libeay32.dll文件丢失。从解决方案资源管理器中的文件夹中添加此文件。现在转到安装后由它创建的文件夹。复制所有文件和文件夹,并将其粘贴到项目中的文件夹。
现在更改您的代码如下:
if (!System.IO.Directory.Exists(Request.PhysicalApplicationPath + "pdf"))
{
System.IO.Directory.CreateDirectory(Request.PhysicalApplicationPath + "pdf");
}
string response;
url = "http://google.com";
pdfFile = Request.PhysicalApplicationPath + "pdf''" + speechNumber + ".pdf";
//pdfFile = @"D:''test.pdf";
exeFile = Request.PhysicalApplicationPath + "html2pdf''htmldoc.exe";
GeneratePDF gPDF = new GeneratePDF();
response = gPDF.ShowPDF(url, pdfFile, exeFile);
gPDF = null;
if (response == "1")
{
email.sendMailWithAttachments(txtRecEmail.Text, "", "", txtSenEmail.Text, txtSenName.Text, txtSubject.Text, txtMessage.Text, Request.PhysicalApplicationPath + "pdf''" + speechNumber + ".pdf", "speech.pdf");
Response.Redirect("EmailThanks.aspx?Email=" + txtRecEmail.Text);
}
else
{
throw new Exception(response);
}
仅此而已。希望它能帮助你