6

我想将 HTML 页面转换为 PDF。有几种选择,但它们有一些问题。

  • 通过在IE中打印HTML页面PDFCreator(太繁琐)
  • 使用wkhtmltopdf(低质量)
  • 使用PhantomJS(低质量)

也许我可以使用复杂的解决方案?PhantomJS使用through打印PDFCreator,或提高质量wkhtmltopdf,或者其他什么?

4

4 回答 4

2

也许您可以尝试使用Amyuni WebkitPDF。它不是开源的,但可以免费用于商业用途,并且可以从 C# 中使用。

文档中的 C# 示例代码:

static private void SaveToFile(string url, string file)
{        
    // Store the WebkitPDFContext returned value in an IntPtr
    IntPtr context = IntPtr.Zero;
    // Open the URL. The WebkitPDFContext returned value will be stored in
    // the passed in IntPtr
    int ret = WKPDFOpenURL(url, out context, 0, false);
    if (ret == 0)
    {
        // if ret is 0, then we succeeded in opening the URL.
        // Save the result as PDF to a file. Use the obtained context value
        ret = WKPDFSaveToFile(file, context);
    }
    if (ret != 0)
        Debug.WriteLine("Failed to run SaveToFile on '" + url + "' to generate file '" + file + "'");
    // Make sure to close the WebkitPDFContext because otherwise the
    // internal PDFCreator as well as other objects will not be released
    WKPDFCloseContext(context);
}

通常的免责声明适用

于 2012-10-11T13:38:13.817 回答
2

--print-media-type --no-stop-slow-scripts用键修补了 wkhtmltopdf(一个非常好的基于 WebKit 的命令行工具,速度很快)

chromium --headless --no-zygote --single-process ... --print-to-pdf= ...(较慢,仅限纵向)

通过 DevTools 协议实现 chromium headless(速度慢,只有少数编程语言有绑定)

Blink Engine 的包装器(例如,Qt5 https://code.qt.io/cgit/qt/qtwebengine.git/tree/examples/webenginewidgets/html2pdf?h=5.15

如果您相信容器, - https://github.com/thecodingmachine/gotenberg(内部 - 通过 DevTools 协议无头铬)

于 2020-09-02T07:54:44.497 回答
2

您可以使用 GroupDocs.Conversion for .NET API将 HTML 正确转换为 PDF 。看一下代码:

// Setup Conversion configuration and Initailize ConversionHandler    
ConversionConfig config = new ConversionConfig();    
config.StoragePath = "source file storage path";    
// Initailize ConversionHandler    
ConversionHandler conversionHandler = new ConversionHandler(config);    
// Convert and save converted document    
var convertedDocumentPath = conversionHandler.Convert("sample.html", new PdfSaveOptions{});    
convertedDocumentPath.Save("result-" + Path.GetFileNameWithoutExtension("sample.html") + ".pdf");  

披露:我在 GroupDocs 担任开发人员布道师。

于 2019-06-02T08:18:41.373 回答
1

google chromeSave as PDF
的输出看起来完全一样(由 chrome 呈现)

在这里,我使用 Puppeteer 来自动化这个过程:singlefile or in Folder
https://github.com/FuPeiJiang/puppeteer-pdf

于 2021-01-24T20:27:21.827 回答