.NET 库来打印 PDF 文件
Posted
技术标签:
【中文标题】.NET 库来打印 PDF 文件【英文标题】:.NET library to print PDF files 【发布时间】:2011-06-26 14:11:26 【问题描述】:我正在寻找一个可以接受已经创建的 PDF 文件并将其直接发送到打印机的库。我不希望用户需要安装 Adobe Reader 或其他任何东西,该应用程序将生成 PDF,我想打印它。
【问题讨论】:
鲁本,不是复制品。我不想创建 PDF 文档,我想将其打印到打印机。 抱歉,更好的 VTC 替代方案:***.com/questions/273675/…@OP 我建议对那个提供赏金 这是一个公平的警察,但它是我发布的第二个问题链接的副本! 签出:nuget.org/packages/PDFFilePrint 【参考方案1】:对不起,我的第一个答案(自删除后——FGITW 的答案说只使用 iTextSharp)假设它是 PDF 常见问题解答 #1,而实际上它是 PDF 常见问题解答 #~5,这是一个过失......
没有系统提供的原生 PDF 处理,所以除了使用 FoxIt 等应用程序之外 或 Acrobat——你不应该太快打折——使用 PDF 的人会选择其中一个,并且会选择他们更喜欢哪一个,因为他们并不都是平等的,尤其是如果你使用更高级的功能和他们的相关的许可和货币化方案。
不知道有任何特定的库可以满足这一要求,尽管我上面链接的另一个问题应该有一个很好的答案。 ……研究;时间过去了……other question 上的An answer 说PDFSharp 应该适合,the sample 看起来很简单。
基于查看 Pdfsharp 的 FAQ wiki 的反思,iTextSharp 与 PDFSharp 具有相似的stuff for generating TIFFs/images。
可能或可能不在范围内的替代方法是生成和/或转换为例如 XPS 文件,该文件确实具有内置的打印支持(非常确定 .NET 3.5,并且可能更早将其作为标准组件在客户资料中)。
在这一切中不应错过的一点是Lowagie book (iText In Action) 非常棒,如果您要在阅读、写作或提供 PDF 表单方面做任何事情,您应该将它放在书架上。同样,如果您确实走 FLOSS 库路线,则必须认真考虑 iText。
【讨论】:
其实你提出了一个很好的观点,转换成另一种格式,甚至是png,可能更容易打印。【参考方案2】:我不知道有任何免费/开源库可用于执行此操作,但在评估了少数库后,我选择了cete DynamicPDF Print Manager.NET。就系统资源(即 RAM)而言,它是迄今为止最有效的。我尝试过的其他产品来自 Tall Components、Gnostice 和 BCL EasyPDF SDK。与 cete 的产品相比,所有这些都使用了大量的 RAM。 Print Manger 具有良好的文档,易于使用。
您还可以从 .NET 调用 gsprint,这是 gsview 的一部分,它是 GhostScript 的 FOSS GUI。我没有走这条路,但也注意到它似乎比动态 PDF 使用更多的系统资源。如果您可以将它与您的软件打包在一起,那么对用户来说它会更加透明。我知道它不符合您的标准,但这似乎是唯一可用的免费解决方案。
如果您遇到 PDFSharp,请注意它使用 Adobe Reader 进行打印。
Apache's PDFBox 有一个命令行 PrintPDF 实用程序,您也可以从 .NET 调用它。我是在购买 Print Manager 后才发现它的,所以我还没有尝试过。
更新:您可以使用Sumatra PDF 从command line 静默打印。我怀疑它会在发送到打印机之前对 PDF 进行光栅化,但是对于应该可以工作的较小文件。
【讨论】:
谢谢,我去看看,虽然价格很贵 不错,没有免费的东西太可惜了。我在企业界使用它,所以它实际上比 Adobe 的 30,000 美元服务器产品便宜得多。 @jrm82:你obv有产品的exp,但你确定它仍然使用AR打印? the sample 没有味道吗?啊,你是对的 - ***.com/questions/883456/printing-pdfs-with-pdfsharp @Ruben 上次我检查它时确实如此。我查看了源代码,有一个甚至有趣的评论说“现在用 Adobe 阅读器做一些魔法打印” @Ruben 我认为 DoSomeVeryDirtyHacksToMakeItWork();对我来说是危险信号:)【参考方案3】:我希望这会对某人有所帮助。 在网上查找后,我发现了这个很棒的开源库 (C#),它非常适合我。
https://github.com/tonyedgecombe/RawPrint
using RawPrint;
Printer.PrintFile("Printer Name", @"C:\Path\To\Print\File.prn");
祝你好运,
【讨论】:
这对我的目的来说就像一个魅力,但是使用该方法遇到文件访问错误,我使用 Printer.PrintRawStream 解决了【参考方案4】:我创建了一个名为 PDFFilePrint 的小型 .Net 4.0 库,您可以通过 nuget 包管理器获取它,也可以在 nuget 包管理器控制台中调用“install-package PDFFilePrint”。这是package的链接。
【讨论】:
【参考方案5】:你可以试试PDFView4NET。它支持打印PDF文件和将PDF页面转换为图像。
免责声明:我为开发 PDFView4NET 的公司工作。
【讨论】:
【参考方案6】:那里有一些商业图书馆。例如,我会推荐http://pdfprinting.net。
附: 我为提供该解决方案的公司工作。
【讨论】:
【参考方案7】:免费的 PDFiumViewer 来自 Nuget,并具有打印功能,请参见此处的代码示例。
真正易于使用 - 虽然我花了很长时间才找到 - 所以我将它发布给在“错误”问题中搜索的人:
https://***.com/a/41751184/586754
【讨论】:
以上是关于.NET 库来打印 PDF 文件的主要内容,如果未能解决你的问题,请参考以下文章
使用 Ghostscript.NET 包装器打印 PDF - 空白页