基于.NET服务器的PDF生成

11

我希望能够动态生成内容并将其呈现为PDF文件。这个过程将在远程托管服务器上进行,因此使用虚拟打印机等工具不可行。有没有人可以推荐一个.NET库(首选C#)可以胜任该任务?

我知道我可以生成一堆PS代码并自己打包,但我更喜欢目前阶段稍微简单一点的东西。

谢谢!

13个回答

8

我自己使用这个库,非常棒。好处在于它还允许您向现有的PDF文件添加密码,这是其他一些库所没有的功能。 - Dillie-O
看起来最后一个版本是2005年的,而且是为.NET 1.1构建的。有没有更新的版本? - Chris Ammerman
@ 热衷编程的朋友们:最近更新时间:2008年5月25日(来源:http://sourceforge.net/projects/itextsharp/) - Akshay
我曾经使用过它并喜欢它。然而,API 的设计有些混乱,因此需要超出您通常的 .NET API 学习曲线。 - jcollum
谢谢。不能立即确定,但这看起来像是一个Java组件? - J Evans
显示剩余2条评论

6

我使用SharpPDF 取得了不错的成功。


没错 - 这看起来很简单,可以立即使用。它支持表格和图片,非常棒。谢谢OrbMan。 - J Evans

4
我已成功使用Siberix。 http://www.siberix.com/ 企业许可证:350美元(单个许可证涵盖无限数量的公司开发者席位,无限数量的公司Web服务器和无限数量的作为您应用程序一部分的发布)。

quimbo227 - 谢谢,看起来也很不错。我会试一试的。 - J Evans
1
很遗憾,Siberix Technologies于2014年12月1日关闭了业务。 - splitDiff

4

免费的PDF Generator .NET(WkHtmlToPdf包装器)可以使用一行代码从HTML模板生成漂亮的PDF:

var pdfBytes = (new NReco.PdfGenerator.HtmlToPdfConverter()).GeneratePdf(htmlContent);

(只需要一个DLL,无外部依赖)

我尝试过了,但对于 .NET Core(在我的情况下是版本 6),它不起作用。 - BNG016
1
@BNG016 对于.NET Core/NET6,应使用NReco.PdfGenerator.LT nuget(LT版本适用于非Windows部署),但此构建仅适用于商业用户(需要密钥)。 - Vitaliy Fedorchenko

2

2
我们使用Amyuni PDF Converter已经有几年的成功经验了。我们是通过COM接口来使用它,但它也支持.NET接口。

1
我一直在寻找一款高性能的docx转pdf工具。我们的系统具有电子政务方面,并且向用户社区生成大量报告。目前,性能至关重要。
我之前使用过的工具没有进行并行转换,而是每个exe都需要等待另一个完成。我尝试了Aspose.words,并且非常满意结果。
首先,它非常容易和无缝地集成和部署到我们的项目中。非常顺畅。
其次,由于多个作业并行运行,转换速度更快。
第三,不仅快速,而且没有格式错误。考虑到我们提供的是多语言系统,某些报告包括英文和阿拉伯文字段(请注意从右到左的对齐!),这非常重要。
最后,文件大小相当小,这也非常重要,因为我们的系统通过创建数万个文档来实现。
我们最初采用的是Microsoft Office Interop库。我们通过以下代码将docx转换为pdf文档。该库完美地将docx文档转换为pdf文件,因此我们决定将其上传到报告生成服务器。但是不久之后,我们注意到转换操作正在等待每个可执行文件。这导致同时转换文档时出现大的延迟,因此我们开始寻找一个新的工具来将docx文件转换为pdf文件。 查看图片 以下代码展示了如何使用Aspose.Words for .NET工具将docx文档转换为pdf文件。 查看图片2

0
我在.NET 6中使用了iTextSharp,但它存在加载脚本和CDN以加载样式表的问题,只能使用内联样式。这些字节可以使用File.WriteAllBytes()保存。
using iTextSharp.text;
using iTextSharp.text.html.simpleparser;
using iTextSharp.text.pdf;
using System.Net.Http;
using PageSize = iTextSharp.text.PageSize;

    public static byte[] GenratePdfBytes(string htmlContent)
    {
        byte[] pdfBytes;
        var pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 0f);
        var html = new StringReader(htmlContent);
        var htmlparser = new HTMLWorker(pdfDoc);
        using (var memoryStream = new MemoryStream())
        {
            var writer = PdfWriter.GetInstance(pdfDoc, memoryStream);
            pdfDoc.Open();
            htmlparser.Parse(html);
            pdfDoc.Close();
            pdfBytes = memoryStream.ToArray();
        }
        return pdfBytes;
    }

0

RDLC和报表查看器控件可以在客户端自行决定或服务器命令下生成PDF,然后作为PDF MIME类型提供。


我们在这里进行操作(http://msdn.microsoft.com/en-us/library/ms251671(VS.80).aspx)。使用起来并不太难,但请注意它使用SQL Server 2005 Reporting Services进行基于服务器的生成(而不是本地生成)。 - lotsoffreetime
在ASP.NET上提供RDLC时,“服务器/本地”有点不准确。本地生成是指与ASP.Net应用程序本身相关的本地生成,而服务器生成是指在SQL Server本身上发生的生成。 - Stephen Wrighton

0
我曾经非常成功地使用过O2solutions的PDF4NET。他们支持各种情况和pdf的数字签名。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接