4

我正在寻找一种使用 .NET 中的标准 PrintDocument 和 Graphics (GDI) 类生成 PDF 文件的方法。据我所知,唯一的方法是打印到 PDF 打印机。

问题是 PDF 打印机驱动程序总是要求提供文件名,但我需要从我的代码中控制文件名。使用 PDFSharp 或 DynamicPDF 之类的 PDF 库不是一种选择,因为它们都提供了自己的 API 来生成 PDF 文件。

我需要这个用于内部应用程序,所以依赖关系不是问题。

我的问题很简单:有没有办法控制打印机驱动程序(Adobe Acrobat、PDFCreator、...),从而可以指定文件名并且不提示用户输入任何内容?

4

9 回答 9

4

PrintDocument 的 System.Drawing 代码可以重复使用,以使用 webSupergoo 的 ABCpdf.NET 生成 PDF。有关更多详细信息,请参阅System.Drawing 示例。该组件不使用打印机驱动程序 - 它直接创建 PDF - 因此不需要指定文件名。

于 2010-05-10T09:19:09.603 回答
2

一个名为 Amyuni 的产品可以做到这一点(我在一个项目中使用它),但我不喜欢许可,你可以接受它。

见 Amyuni.com

瑞安

于 2009-07-10T13:55:34.187 回答
1

Amyuni PDF Converter 可以满足您的需求,它提供了 Microsoft 认证的打印机驱动程序,您可以使用 COM 接口或 .net 程序集完全操作它,并且您可以使用标准 GDI(或 Windows.Forms 类)生成 PDF 文件(您可能检查了 Amyuni PDF Creator,这是一个自定义 API,正如您在对此答案的评论中所述)。

于 2011-01-06T17:51:23.877 回答
0

除非您使用的打印机驱动程序手动支持此功能(据我所知不存在),否则您必须编写自己的打印机驱动程序,您可以在打印操作期间将信息传递给(例如文件名) .

这样做的缺点是您必须实现打印机驱动程序,以及它必须是非托管代码(您不能在 .NET 中编写驱动程序)。

于 2009-07-10T13:45:16.350 回答
0

有几家公司创建了文档格式转换工具。他们中的一些人使用打印机驱动程序将文档“打印”成所需的格式。寻找可以从 Word 文档转换为 PDF 的工具。其中一个应该具有您需要的驱动程序,有些将提供允许您控制文件名等的 API。

于 2009-07-10T13:55:12.923 回答
0

做了更多的研究,虽然我仍然没有找到完美的解决方案,但有一些产品安装了 PDF 打印机驱动程序,并允许您以某种方式控制要生成的文件的名称:

Bullzip 和 PDFCreator 是免费的。

更新:找到另一个看起来很有希望的:

于 2009-07-10T14:58:05.623 回答
0

Dane-Prairie Systems http://www.win2pdf.com/似乎从 GDI 调用中捕获了“打印到文件”字符串,并将在您指定的任何地方创建您的 PDF。这是手册中的引述:

将 DOCINFO 结构的 lpszOutput 字段设置为文件的完全限定路径名,然后将 DOCINFO 结构传递给 Win32 StartDoc 函数。

彼得

于 2010-12-07T19:38:06.707 回答
0

C1Pdf 组件执行此操作。它具有模仿 GDI plus(DrawString、DrawImage 等)并生成 PDF 的方法。它不安装或不需要任何打印机驱动程序。如果您需要更多详细信息,请参考文档链接:

http://www.componentone.com/newimages/Products/Documentation/WinForms.PDF.pdf

于 2015-03-06T17:51:14.797 回答
-1

不确定这是否是您会考虑的解决方案,但我使用iTextSharp填写 PDF 表单并使用在代码中生成的文件名保存它们,而不是由用户生成。它还可以从头开始生成完整的 PDF,但我还没有深入研究它。

于 2009-07-10T13:51:56.763 回答