C# 用于打印PDF文件的.NET库

C# 用于打印PDF文件的.NET库,c#,.net,pdf,C#,.net,Pdf,我在寻找一个库,它可以接受一个已经创建的PDF文件,并将其直接发送到打印机。我不希望用户需要安装Adobe Reader或其他任何东西,应用程序将生成一个PDF,我想打印它。对不起,我的第一个回答(删除后——FGITW回答说只需使用)假设它是PDF FAQ#1,而实际上它是PDF FAQ#~5,这是罪过 没有系统提供的原生PDF处理,因此除了使用诸如FoxIt之类的应用程序之外 或者Acrobat——你不应该太快打折——使用PDF的人会有一个或另一个,并且会选择他们喜欢哪一个,因为他们并不都是平

我在寻找一个库,它可以接受一个已经创建的PDF文件,并将其直接发送到打印机。我不希望用户需要安装Adobe Reader或其他任何东西,应用程序将生成一个PDF,我想打印它。

对不起,我的第一个回答(删除后——FGITW回答说只需使用)假设它是PDF FAQ#1,而实际上它是PDF FAQ#~5,这是罪过

没有系统提供的原生PDF处理,因此除了使用诸如FoxIt之类的应用程序之外 或者Acrobat——你不应该太快打折——使用PDF的人会有一个或另一个,并且会选择他们喜欢哪一个,因为他们并不都是平等的,特别是如果你进入更高级的功能及其相关的许可和货币化方案

不知道有任何特定的库可以满足这个要求,尽管我上面链接的另一个问题应该有一个很好的答案。。。研究;时光流逝。。。表面上说应该合适,看起来直截了当

基于Pdfsharp的FAQ wiki的反思,与Pdfsharp类似

一种可能在范围内,也可能不在范围内的替代方法是生成和/或转换为XPS文件,该文件具有内置打印支持(非常确定.NET 3.5,可能更早的版本将其作为客户机配置文件中的标准组件)


在这一切中,有一点是不应该错过的,那就是它非常优秀,如果你打算在阅读、写作或提供PDF表单方面做任何事情,你应该把它放在书架上。类似地,如果您选择FLOSS库,则必须认真考虑iText。

我不知道有任何可用的免费/开源库可以做到这一点,但在评估了一些之后,我选择了。就系统资源(即RAM)而言,它是迄今为止效率最高的。我试过的其他产品都是高组件,还有。与cete的产品相比,所有这些都使用了大量RAM。打印管理器具有良好的文档,易于使用

您还可以从.NET调用gsprint,它是的一部分,是用于GhostScript的FOSS GUI。我没有这样做,但也注意到它似乎比动态PDF使用了更多的系统资源。如果你可以把它和你的软件打包,这样对用户来说就更透明了。我知道这不符合你的标准,但这似乎是唯一可能的免费解决方案

如果您遇到PDFSharp,请注意它使用Adobe Reader进行打印

有一个命令行PrintPDF实用程序,您也可以从.NET调用该实用程序。我在购买Print Manager后遇到了它,所以我还没有尝试过

更新:您可以使用从中以静默方式打印。我怀疑它会在发送到打印机之前将PDF光栅化,但对于较小的文件,它应该可以工作。

您可以尝试。它支持打印PDF文件和将PDF页面转换为图像


免责声明:我为开发PDFView4NET的公司工作。

有一些商业图书馆。例如,我会推荐

附言。
我为提供这种解决方案的公司工作

我希望这会对某人有所帮助。 在网上查找之后,我发现了这个很棒的开源库(C#),它非常适合我


祝您好运,

免费的PDFiumViewer通过Nuget提供,并具有打印功能,请参见此处的代码示例

非常容易使用-虽然我花了很长时间才找到-所以我将其发布给搜索“错误”问题的人:


我创建了一个名为PdfilePrint的小型.Net 4.0库,您可以通过nuget软件包管理器获取该库,也可以在nuget软件包管理器控制台中调用“安装软件包PdfilePrint”。这里是指向.

Ruben的链接,不是重复的。我不想创建PDF文档,我想将其打印到打印机上。对不起,更好的VTC替代方案:@OP我建议悬赏那是一个公平的警察,但这是我发布的第二个问题链接的副本!检查:事实上,你提出了一个很好的观点,转换成另一种格式,甚至png,可能更容易打印。谢谢,我会看一看,虽然价格非常$$$真实,但很遗憾没有免费的东西。我在企业界使用它,所以它实际上比Adobe 30000美元的服务器产品便宜得多。@jrm82:您有该产品的exp,但您确定它仍然使用AR打印吗?你闻到了吗?啊,你说得对-@Ruben上次我查过了。我看了一下消息来源,甚至有一条有趣的评论说“现在用Adobe reader做一些神奇的打印”@Ruben我想dosomeveryDirtyHackingetwork();是我的红旗:)
    using RawPrint;

    Printer.PrintFile("Printer Name", @"C:\Path\To\Print\File.prn");