【问题标题】:Can PDFSharp create Pdf file from a Html string in Net Core?PDFSharp 可以从 Net Core 中的 Html 字符串创建 Pdf 文件吗?
【发布时间】:2020-02-21 16:26:33
【问题描述】:

这可能听起来“简单”,但我还没有找到真正的解决方案。我需要从 .Net Core 上的 API 的 Html 字符串创建 Pdf 文件。 图书馆必须是免费的(不是付款或任何相关的)。 我发现 PDFSharp 是一个不错的选择,但现在我发现 PDFSharp 不适用于 .Net Core,并且它不允许注入 Html 字符串。

那么,对于这种情况,PDFSharp 是一个不错的选择吗?或者你会推荐什么其他图书馆?

非常感谢。

【问题讨论】:

    标签: .net-core pdf-generation pdfsharp


    【解决方案1】:

    我最近自己也遇到了完全相同的问题。目前在 .NET Core 中处理 PDF 的方法非常有限。通过它们...

    • PDF Sharp - 不支持 .NET Core/Standard。
    • SelectPDF - 在其网站页脚中隐藏了“免费”社区版本。在大多数情况下应该可以使用。 https://selectpdf.com/community-edition/
    • IronPDF - “企业”定价。起价 1.5 万美元
    • WKHTMLTOPDF - 这实际上只是一个可执行文件,有人在顶部编写了一个 C# 包装器来运行该 exe。不是一个很好的解决方案。
    • iTextSharp - 具有“隐藏”定价,但显然这是唯一一款专门在 .NET Core 下的 Linux 上运行的产品(如果这对您很重要)。

    IMO 唯一可以满足您需求的免费软件是 SelectPDF。这说明了一些事情,因为我不评价库或 API。但它是免费的并且有效。

    更多信息:https://dotnetcoretutorials.com/2019/07/02/creating-a-pdf-in-net-core/

    【讨论】:

    • 嗨@MindingData,非常感谢您的回答和您的时间。最后我决定使用 Google Chrome 的 print-to-pdf 功能。直到经理批准我使用付费图书馆。再次感谢,祝您有美好的一天
    • IronPDF 的定价现在更便宜、更灵活,单个项目许可证起价为 399 美元。
    • 我最终选择了 iText7 (iTextSharp)。它的付费版本确实有“隐藏”定价,但它也有一个带有 AGPL 许可证的免费和开源版本。
    【解决方案2】:

    如果有人需要这个选项,这是我决定使用的最终解决方案。

        var url = "https://stackoverflow.com/questions/564650/convert-html-to-pdf-in-net";
    var chromePath = @"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe";
    var output = Path.Combine(Environment.CurrentDirectory, "printout.pdf");
    using (var p = new Process())
        {
            p.StartInfo.FileName = chromePath;
            p.StartInfo.Arguments = $"--headless --disable-gpu --print-to-pdf={output} {url}";
            p.Start();
            p.WaitForExit();
        }
    

    https://stackoverflow.com/a/59943987/3877537

    感谢@leonard-AB

    【讨论】:

    • 我喜欢这个简单的!
    【解决方案3】:

    安装 NuGet 包 - Polybioz.HtmlRenderer.PdfSharp.Core https://www.nuget.org/packages/Polybioz.HtmlRenderer.PdfSharp.Core/1.0.0?_src=template

    using PdfSharpCore;
    using PdfSharpCore.Pdf;
    using TheArtOfDev.HtmlRenderer.PdfSharp;
    
     var document = new PdfDocument();
    var html = "<html><body style='color:black'>PMKJ</body></html>";
     PdfGenerator.AddPdfPages(document, html , PageSize.A4);
    
     Byte[] res = null;
                    using (MemoryStream ms = new MemoryStream())
                    {
                        document.Save(ms);
                        res = ms.ToArray();
                    }
    

    【讨论】:

    • 如果 .net framework 5.0 需要它怎么办,因为它不能在其中工作。
    猜你喜欢
    • 2017-06-19
    • 1970-01-01
    • 2016-01-22
    • 2019-07-24
    • 2019-08-11
    • 1970-01-01
    • 1970-01-01
    • 2012-05-21
    • 1970-01-01
    相关资源
    最近更新 更多