0

我在打印 html 文件时遇到问题,我尝试了 doc、xls 和 txt 文件,它们运行良好,但是当我提供 html 文件时,它会显示打印对话框,我必须选择 ghostscript 打印机才能工作。

我的代码是:

    [DllImport("Winspool.drv")]
    private static extern bool SetDefaultPrinter(string printerName);

    [ValidateInput(false)]
    public ActionResult CreatePdf(string file , string html)
    {
        SetDefaultPrinter("Ghostscript");
        Process process1 = new Process();
        if (html != null && html != "")
        { process1.StartInfo.FileName = "example.html"; }
        else
        { process1.StartInfo.FileName = file; }
        process1.EnableRaisingEvents = true;
        process1.StartInfo.Verb = "print";
        process1.StartInfo.Arguments = "\"Ghostscript PDF\"";
        process1.StartInfo.WorkingDirectory = Server.MapPath("~" + "/Export");
        process1.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        process1.StartInfo.CreateNoWindow = true;
        process1.Start();
        try
        {
            process1.WaitForExit();
        }
        catch (InvalidOperationException) { }
        process1.Dispose();
    }

这应该改变我的 output.ps 文件,然后我用它来制作 pdf 文件,它工作得很好,我只需要让它适用于 html 文件。

我遵循了这两个例子:

示例 1 示例 2

编辑:我需要这种转换才能从 html 中获取 pdf 文件,并发现 wkhtmltopdf 最适合我。

4

1 回答 1

1

Ghostscript 不会将 HTML 文档转换(布局和渲染)为 PDF 或 PostScript,它只是一个用于处理 PostScript 和 PDF 文件的库,例如从头开始创建它们并将 PostScript 文件转换为光栅格式。

如果您想将 HTML 转换为 PDF,最好的办法是使用像 PrinceXML 这样的商业库,或者托管 WebKit。

当您的代码工作时,它通过让 Internet Explorer(或任何您的 shell-default Web 浏览器)自行进行渲染和打印来工作。这种技术在服务器端环境中不能可靠地工作。

于 2012-11-15T11:11:16.640 回答