在C#中动态创建PDF文件

86

有没有可以附加/可以被附加到.NET 3.5的pdf库,允许在运行时创建pdf文件,即通过C#代码打开一个新的pdf文件,逐行写入内容,嵌入图像等,最后关闭pdf文件?

我的需求是一组工具和规范,允许我在不使用报告服务的pdf输出选项的情况下,实现自定义的C# pdf编写器。

13个回答

122

iTextSharp不再使用MIT/LGPL许可证。 版本大于4.1.6的软件使用 Affero GPL 许可协议,这意味着您不能在SaaS(软件即服务)场景下使用它而不将您的代码许可为GPL或兼容GPL的许可证。

其他本地.NET中的开源PDF实现包括:

还有一些Java PDF库(例如PDFBox),可以使用IKVM转换为.NET。


31
参考许可证变更加一分。现在得学习一个新的PDF库了… - Mayo
1
有没有任何地方可以下载iTextSharp 4.1.6版本?是否存在任何问题,导致不能下载这个旧版本? - Rasto
1
@drasto 我通过谷歌找到了这个链接:https://github.com/itextsharper/iTextSharp-4.1.6此外,似乎你可以通过 NuGet 获取旧版本。我还没有确认过。 - darkphoenix

39

2
哇,我发了帖子,不到60秒就有另外三个人推荐同样的事情!看来它很受欢迎。 - ine
4
非常流行 - 在我看来有点繁琐,但你可以得到一些不错的结果。而且它是免费的。 - Knobloch
3
新的源代码链接:http://sourceforge.net/projects/itextsharp/ - travis
5
不是免费的,伙计们!哪里写了呢? - Fandango68
3
AGPL版本是免费的,但不再是最佳选择。 - aggsol
显示剩余2条评论

37

请查看PDFSharp

它是开源的,使用.NET编写, 我自己用它来生成一些PDF发票。


8
PDFsharp使用MIT许可证发布。(许可证非常宽松) - bretddog
PDFSharp(MigraDoc)非常容易上手。我在一两个小时内就得到了我想要的输出结果。 - Chuck Savage
各位,PDFSharp是否允许您创建PDF表单,以便用户可以直接在表单字段中输入数据并将其电子邮件发送回我们?我在其功能页面上没有看到类似的内容,但它确实提到了有限的AcroForm支持。什么是AcroForm?是同一件事吗? - Fandango68
这个项目现在已经不再受支持了吗? - Johnny_D
这个示例展示了如何从两个现有的PDF文件创建一个新文档。http://www.pdfsharp.com/PDFsharp/index.php?option=com_content&task=view&id=34&Itemid=45 - Andrei Krasutski

4

嗯,免费的和收费的,我使用 WebSuperGoo ABCpdf .NET 组件,我非常喜欢它!

收费的因为你需要支付费用。

免费的因为即使你要付款,他们有试用版,如果你不介意在你的网站上显示“该网站使用 WebSuperGoo ABCpdf .NET 组件”并链接到他们的网站,你可以request a free license

我就是这样做的,并且我得到了一个免费许可证(当时是第5版),所以我可以说它有效(尽管该网站已经下线),我仍然拥有并使用这个组件 ~:)

我喜欢这个组件的一件美妙的事情是,你可以用它做任何你能想到的事情,创建 PDF 表单并动态填充并通过邮件发送给用户或让他们下载,从头开始创建 PDF,将 HTML 页面转换为 PDF 等等,请阅读文档,这是一个很棒的组件。


2

15
这是一个重复的建议。 - epotter
3
抱歉回复晚了,实际上几乎所有建议使用 iTextSharp 的人都是在一分钟内提出的。 - Przemek
6
是的,但由于成本原因,它不再是首选了。它不再是免费的。 - Fandango68

1

0

Docotic.Pdf library 可以轻松地用于在运行时创建 PDF 文件。该库还可以修改现有的 PDF 文档(提取文本/图像、追加页面、填充表单字段等)。

常见任务的示例 可在库网站上获得。

声明:我为 Bit Miracle 工作。


DocoticPdf可以用来完成OP所要求的操作。然而,当它说“容易”时,这个答案是误导性的。别误会,如果你喜欢花费数天时间在特定坐标放置文本/文本框来构建一个简单的发票,那么你会喜欢DocoticPdf的。DocoticPdf没有有用的概念来创建PDF文档,如模板、可重用页面组件甚至简单实现表格的方法。它确实有很多功能来阅读PDF、创建交互式表单和其他功能,但它们缺乏有用的文档,并且示例过于简单,没有帮助。 - DVS
@DVS 感谢您的反馈。 该库确实没有提供创建表格的API。 与此同时,您可以重用页面组件(请参见PdfXObject)。 您还可以复制页面和文档。 该库带有免费的HTML到PDF插件,您可以使用它来创建发票和类似的文档。 如有任何不清楚或不完整的文档问题,请随时通过support@bitmiracle.com联系我们索取示例代码或提出问题。 - Bobrovsky
Docotic.Pdf现在提供了布局插件,支持表格、段落、分页等功能:https://bitmiracle.com/pdf-library/create-pdf.aspx - Vitaliy Shibaev

0

7
这个链接已经失效,说明为什么只提供链接作为答案是不被鼓励的。 - dckuehn

0

为此,我研究了运行LaTeX应用程序以生成PDF的方法。尽管这个选项可能比这里列出的选项更复杂和重型。


0

有一个新项目,RazorPDF,可以从ASP.NET MVC中使用。它作为nuget包提供(搜索RazorPDF)。

这里有更多信息:http://nyveldt.com/blog/post/Introducing-RazorPDF

重要更新 如@DenNukem所指出的那样,它依赖于iTextsharp,当我尝试使用它时,我忘记编辑答案了,因此,如果您的项目不是开源的并且符合他们的AGPL许可证,那么使用它可能会太昂贵。


4
注意:这取决于iTextsharp,它是AGPL组件,如果要在没有AGPL限制的情况下使用,需要未公开的商业许可证。 - DenNukem
2
是的,我询问了iTextsharp在一个服务器上的报价,差不多2000美元,所以这行不通 :( - Goran Obradovic
1
谢谢你帮我找到价格,这帮我省了不少时间。我现在倾向于使用PDFJet,因为他们的免费版本看起来符合我的需求。 - DenNukem
RazorPDF将与iTextSharp的LGPL版本一起工作,只需使用NuGet包https://www.nuget.org/packages/iTextSharp-LGPL/。 - Toft

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