2011-09-16 27 views
4

我有一大堆的2D图形,用于屏幕上的渲染控制和用于打印,这是非常自定义的图形,不能由任何第三方报告工具或现成的控制。有没有办法将System.Drawing.Graphics从C#写入PDF?

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

由于用户正在通过电子邮件发送文档,他们发现文档太大。

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

+0

我知道它不是一个免费的库,但[Windows窗体Infragistics.Documents控件](http://www.infragistics.com/dotnet/netadvantage/winforms/infragisticsdocuments.aspx#Overview)提供了一种方法来轻松地撰写PDF文件。这是一个开发许可证,你可以免费测试它。 – JPBlanc

回答

3

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

编辑:以上库已被移动到http://www.pdfsharp.net/

+0

这项工作相当完美。实际上,我必须复制所有内容并进行微妙的更改,但它使我的数学保持一致,这比使用iText更容易。图书馆几年没有更新,所以如果需要可能会有所贡献:) –

+0

是的,这是一个相当的工作 - 在它的中间。使用XPS非常容易,但我的客户坚持使用PDF。呃,好吧! ...它确实帮助知道你已经推进并得到了一个工作解决方案:) – noelicus

1

你可以直接用什么显卡的WMF(EMF),然后你拉弦手,为iText的。

+0

虽然没有读过它,但我确实没有尝试这种方法,这看起来像使用PDF锐利的可行替代方案。我可以稍后再看看,谢谢你的回答。 –

1

您的意思是说你有一个System.Drawing.Image?如果是这样,你可以直接通过iTextSharp.text.Image.GetInstance()这将给你一个iTextSharp Image对象。否则,您可以直接绘制到PDF画布,see this post以获取更多信息。

+0

我之前使用的是图像方法,但前面提到我的文件太大,需要做直接绘制。是的,我可以使用直接绘图,虽然它与GDI +系统完全不同,我需要从头开始,我正在寻找更多GDI +的写作方式,Eugen的答案只是门票。 –

0

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

+0

我确实调查了这种方法,尽管这种方法存在一些注意事项,正如您提到的一样,它很冒险,另一种是我们不保存文件,而是编写通过电子邮件发送而无需用户干预的文档。我还需要在我们不需要的机器上安装驱动程序,因为我们正在使用点击一次,谢谢它,虽然它是一个可行的选择。 –

相关问题