有没有办法从 C# 将 System.Drawing.Graphics 写入 PDF?

发布于 12-04 17:56 字数 310 浏览 4 评论 0原文

我有一大堆 2D 图形,用于屏幕上的渲染控件和打印,这是非常自定义的图形,任何第三方报告工具或现成的控件都无法完成。

该程序可以生成打印内容的 PDF 文件,但当我编写它时,我作了作弊,只是将 Graphics 对象打印到内存图像中,然后将其嵌入到 PDF 页面中。

由于用户通过电子邮件发送文档,因此发现文档太大。

我已经开始使用 iText 从头开始​​编写 PDF,但是有没有办法将 System.Drawing.Graphics 内容直接获取到 PDF 中? iText 的工作方式和 Graphics 的工作方式完全不同。

I have a whole bunch of 2D graphics that is being used for both rendering controls on screen and used to print, it's pretty custom graphics that couldn't be done by any 3rd party reporting tools or off the shelf controls.

The program can generate PDF files of the printed content but when I wrote it I cheated and just print the Graphics object to an in memory image and then embed that into the PDF page.

Since the users are emailing the documents they're finding they are too large.

I've started writing the PDF from scratch using iText, however is there a way to get System.Drawing.Graphics content directly into PDF? The way iText works and Graphics works is completely different.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

软甜啾2024-12-11 17:56:57

试试这个库 http://www.pdfsharp.com/PDFsharp/

编辑:以上库已移至http://www.pdfsharp.net/

try this library http://www.pdfsharp.com/PDFsharp/

Edit: Above library has been moved to http://www.pdfsharp.net/

甜心2024-12-11 17:56:57

您可以将使用 Graphics 绘制的内容定向到 WMF (EMF),然后将其交给 iText。

You can direct what your drawing with Graphics to a WMF (EMF) and then hand that to iText.

月棠2024-12-11 17:56:57

您的意思是您有一个 System.Drawing.Image 吗?如果是这样,您可以将其直接传递给 iTextSharp.text.Image.GetInstance() ,这将为您提供一个 iTextSharp Image 对象。否则,您可以直接在 PDF 画布上绘图,请参阅这篇文章了解更多信息。

Do you mean that you have a System.Drawing.Image? If so you can pass that directly to iTextSharp.text.Image.GetInstance() which will give you an iTextSharp Image object. Otherwise you can draw directly to the PDF canvas, see this post for more.

当爱已成负担2024-12-11 17:56:57

一种(hacky)方法是简单地使用 PDF 打印机驱动程序,例如 这个 。您可以通过打印 API 重复使用相同的 GDI+ 代码。

One (hacky) way would be to simply use a PDF printer driver like this one. You can reuse the same GDI+ code through the printing API.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文