【问题标题】:Redirect GDI Code directly to PDF?将 GDI 代码直接重定向到 PDF?
【发布时间】:2015-01-01 16:21:09
【问题描述】:

有没有办法将现有的 GDI 代码重定向到 PDF 文件?

我有一个现有的 .NET / C# 项目,它通过创建 PrintDocument 对象(PrintPageEventHandler、Graphics...)来打印页面。现在这个应用程序还应该创建 PDF 文件。

我正在寻找一种不需要在系统中设置打印机驱动程序的解决方案。 PDF 生成应直接在我们的应用程序中进行,无需使用外部打印机驱动程序。

我们使用 VStudio 2013 和 .NET 4.5

【问题讨论】:

  • 我认为这是不可能的。您要么使用打印机,要么编写新代码以使用某种 PDF 生成 API。
  • 如果有帮助,the company I work for sells a PDF printer driver 您可以在每次打印作业之前/之后以编程方式从您的应用程序安装/卸载(第一次需要管理员,通常在安装您的应用程序时),所以它可以“几乎”对最终用户不可见。
  • @yms - 该产品具有有趣的功能,但我的应用程序不需要这些功能。如果我需要“管理员”,那么我也可以使用任何其他 PDF 打印机,如 FreePDF 等。目前,我正在寻找一个带有 ghostscript 的解决方案,如果可行,我会在这里报告。

标签: c# .net pdf pdf-generation gdi


【解决方案1】:

PDFsharp 使用 XGraphics 对象来实现 Graphics 对象的功能。

这取决于您的代码使其适应 XGraphics 对象的难度。

PDFsharp 网站:
http://pdfsharp.net/wiki/Graphics-sample.ashx

可在此处下载:
http://pdfsharp.codeplex.com/releases

【讨论】:

  • 我已经看过 PDFSHArp,但我发现它的 XGraphics 类不是从 Graphics 类派生的。事实上,它是一个单独的类。由于我有现有的代码,这对我来说并不是很有用。
  • @Georg:是的,反过来说:一个 XGraphics 对象包含一个 Graphics 对象(在需要时)。因此,一旦更改 XGraphics 对象的代码,您将能够在 PDF 和 Graphics 对象上绘图。我知道的最好的解决方案 - 它可以在没有打印机驱动程序的情况下工作。也是开源的,可免费用于商业用途。
  • 谢谢!我又试了一次。我发现 PDFSharp 确实是一个非常棒的库,但它仍然有其局限性。首先是我的项目使用 MILLIMETERS 作为单位,而 PDFSharp 仅使用 POINT ...然后,没有“XRectangleF”对象,只有 XRectangle 等。似乎 PDFSharp 试图重新发明轮子......可能会更好地编写一个库,从图形中取出一个元文件,然后从中创建一个 PDF。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-04
  • 2011-04-26
  • 1970-01-01
  • 2020-08-07
  • 2016-04-11
相关资源
最近更新 更多