-1

我正在将一个项目从 .NET 框架 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)中也不起作用。

请帮我

4

1 回答 1

0

好的,首先从这个链接下载最新版本的 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);
                    }

就这样。希望对你有帮助

于 2013-07-26T10:29:41.310 回答