在 C# 中在运行时创建 pdf 文件 [关闭]

Posted

技术标签:

【中文标题】在 C# 中在运行时创建 pdf 文件 [关闭]【英文标题】:Creating pdf files at runtime in c# [closed] 【发布时间】:2010-10-02 16:48:36 【问题描述】:

是否有附加/可以附加到 .NET 3.5 的 pdf 库,它允许在运行时创建 pdf 文件,即打开一个新的 pdf 文件,逐行写入,嵌入图像等并关闭所有 pdf 文件在 C# 代码中?

我想要的是一组工具和规范,允许我在 C# 中实现自定义的 pdf 编写器,而无需使用 Reporting Services 的 pdf 输出选项。

【问题讨论】:

【参考方案1】:

iTextSharp http://itextsharp.sourceforge.net/

复杂但全面。

itext7前iTextSharp

【讨论】:

哇,我发布了,在 60 秒内,同样的事情还有其他三个建议!我猜它很受欢迎。 非常受欢迎 - 与 IMO 合作有点乏味,但您可以获得一些不错的结果。而且它是免费的。 新的源链接:sourceforge.net/projects/itextsharp 这不是免费的家伙!哪里说的? AGPL version 是免费的。但不再是最佳答案。【参考方案2】:

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

Samples for common tasks 可在图书馆网站上找到。

免责声明:我为 Bit Miracle 工作。

【讨论】:

DocoticPdf 可用于执行 OP 的要求。然而,当它说得容易时,这个答案会产生误导。如果您喜欢浪费时间在特定坐标处放置文本/文本框行来构建简单的发票,请不要误会我的意思,那么您会喜欢 DocoticPdf。 DocoticPdf 没有用于创建 PDF 文档的有用概念,例如模板、可重复使用的页面组件,甚至没有简单实现表格的方法。它确实具有许多用于阅读 PDF、创建交互式表单和其他功能的功能,但它们缺乏有用的文档,并且示例过于简单且没有帮助。 @DVS 感谢您的反馈。该库确实没有提供用于创建表的 API。同时,您可以重用页面组件(请参阅 PdfXObject)。您还可以制作页面和文档的副本。该库附带一个免费的 html 到 PDF 插件,您可以使用它来创建发票和类似文档。请随时联系 support@bitmiracle.com 索取示例代码或对任何不清楚/不完整的文档提出问题。【参考方案3】:

看看PDFSharp

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

【讨论】:

PDFsharp 以MIT license 发布。 (非常宽容) PDFSharp(MigraDoc) 非常容易上手。我在一两个小时内得到了我想要的输出。 各位,PDFSharp 是否允许您创建 PDF 表单,以便用户可以直接在表单字段中输入数据并将其通过电子邮件发送给我们?我在他们的功能页面上看不到类似的东西,但它确实说 AcroForm 支持有限。什么是 AcroForm?一样的吗? 这个项目现在不支持了吗? 这个示例展示了如何从两个现有的 PDF 文件创建一个新文档。 pdfsharp.com/PDFsharp/…【参考方案4】:

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

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

重要更新正如@DenNukem 指出的那样,它取决于 iTextsharp,当我发现它时忘记编辑答案(当我尝试使用它时),所以如果你的项目不是开源的并且有资格获得他们的 AGPL 许可证,使用起来可能太贵了。

【讨论】:

警告:依赖于 iTextsharp,它是一个 AGPL 组件,需要未公开的商业许可证才能在没有 AGPL 限制的情况下使用。 是的,我要求 iTextsharp 报价一台服务器,差不多 2000 美元,所以这是不行的 :( 感谢您了解价格,为我节省了一些时间。我现在倾向于 PDFJet,因为他们的免费版本现在似乎满足了我的需求。 RazorPDF 将与 LGPL 版本的 iTextSharp 一起使用,只需使用 NuGet-package nuget.org/packages/iTextSharp-LGPL【参考方案5】:

Amyuni PDF Converter .Net 也可以用于此。它还允许您修改现有文件、对其应用 OCR 并提取文本、创建光栅图像(例如用于生成缩略图)、优化输出 PDF 以供 Web 查看等。

通常的免责声明适用。

【讨论】:

【参考方案6】:

iTextSharp 不再获得 MIT/LGPL 许可。高于 4.1.6 的版本根据 Affero GPL 获得许可,这意味着如果没有根据 GPL 或与 GPL 兼容的许可许可您的代码,您甚至无法在 SaaS(软件即服务)场景中使用它。

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

PDF Clown(确保您获得最新版本的补丁) PDFSharp PDFJet open source edition(也有商业版,需要安装 JDK 来构建)

还有几个 Java PDF 库(如 PDFBox)可以使用 IKVM 转换为 .NET。

【讨论】:

+1 用于引用许可证更改。现在要学习一个新的 PDF 库... 哪里还有可以下载4.1.6版iTextSharp的地方?为什么不应该下载这个旧版本有什么问题吗? @drasto 我是通过 Google 找到的:github.com/itextsharper/iTextSharp-4.1.6 另外,您似乎可以通过 NuGet 获得旧版本。我还没有证实这一点。【参考方案7】:

我过去使用过 Gnostice,发现它们非常好。

http://www.gnostice.com/PDFOne_dot_Net.asp

【讨论】:

【参考方案8】:

为此,我研究了运行 LaTeX 应用程序以生成 pdf。尽管此选项可能比此处列出的选项更复杂、更繁重。

【讨论】:

【参考方案9】:

我在我的一个博客中发布了如何使用 iTextSharp 的示例:

http://devpinoy.org/blogs/marl/archive/2008/02/14/create-pdf-in-c-2008-a-pdf-sample-app-for-grade-1-pupils.aspx

【讨论】:

此链接已失效,并说明了为什么不鼓励仅使用链接的答案。【参考方案10】:

好吧,免费且不免费,我使用WebSuperGoo ABCpdf .NET 组件,我就是喜欢它!

不是免费的,因为您需要付费。

免费因为即使您必须付费,他们也有试用版,如果您不介意,您可以request a free license,在您的站点中显示“此站点使用 WebSuperGoo ABCpdf .NET组件”,并带有指向其网站的链接。

我这样做了,并且获得了免费许可证(当时是第 5 版)所以,我可以说它可以工作(即使网站不再在线)-我仍然拥有并使用该组件 ~:)

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

【讨论】:

【参考方案11】:

iTextSharp怎么样?

iText 是一个 PDF(以及其他)生成库,它也被移植(并保持同步)到 C#。

【讨论】:

重复建议【参考方案12】:

我强烈推荐:iTextSharp

【讨论】:

这是重复的建议 @epotter 抱歉回复晚了,但事实是,几乎所有建议 iTextSharp 的人都在一分钟内完成了这项工作 是的,但由于成本原因,它不再是首选。它不再免费了【参考方案13】:

我过去使用过 (iTextSharp),效果很好。

【讨论】:

重复建议

以上是关于在 C# 中在运行时创建 pdf 文件 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# MVC 应用程序中在运行时创建 SQL Server Express 数据库?

如何在 PHP 中在浏览器中打开文件之前验证用户 IP? [关闭]

有没有办法用 C# 编辑 pdf? [关闭]

在 C# 中在运行时挂钩托管方法

在没有向量、指针的情况下在 C++ 中在运行时增加数组大小 [关闭]

如何在 C# 中从外部站点的 url 读取 PDF 文件 [关闭]