【发布时间】:2012-11-30 15:45:45
【问题描述】:
我已经在标准 WPF 控件中实现了一个报告,并且还实现了一个DocumentPaginator 来获取这些控件并将它们转换为用于打印的文档。
我还实现了一些代码,它使用文档分页器将页面呈现为图像并使用PDFSharp 将它们写入 PDF,但是这不允许复制和粘贴,图像质量也值得怀疑。
我已经尝试了GhostXPS 实用程序,并正在考虑通过保存到 XPS 文档然后使用GhostXPS 将其转换为 PDF 来使用它,这很有希望,但是当前版本包含一个错误渲染从生成的 PDF 复制的数据无用...
所以我想我会在这里要求尝试找到一种有效的方法来执行此操作,有人可以提出一个很好的方法来获取DocumentPaginator 并将其直接保存到 PDF 中,具有复制/粘贴功能或使用此功能将其从 XPS 文档转换为 PDF?
谢谢, 亚历克斯。
编辑 - PDFSharp 修复: 好的,按照这里的要求,我为 PDFSharp 1.31 XPS 转换器编译修复程序:
1) 我从这里下载了源代码:
2) 我按照这篇文章中的说明进行操作:
XpsParser.ImageBrush.cs (ln 22, added): brush.Opacity = 1;
PdfContentWriter.cs (ln 526, changed): if (opacity <= 1)
3) 然后只需编译源代码,首先打开“PdfSharp-WPF.csproj”并构建它,然后打开“PdfSharp.Xps.csproj”并构建它,相关库是“PdfSharp-WPF. dll'和'PdfSharp.Xps.dll'
请注意,在尝试构建源代码时,您可能会收到一些错误,具体取决于您所针对的 .NET 版本,如果您只是阅读错误消息,这些很容易修复。
编辑(2):NJones 创建了一篇博文,其中包含有关 PdfSharp 修复的更多详细信息:Output to PDF in WPF
【问题讨论】:
-
我也在使用自定义
DocumentPaginator进行打印。 PDF 和 XPS 是通过打印到虚拟打印机生成的。它也适用于大型文档。 -
我试图避免使用虚拟打印机,因为我想尽量减少用户依赖。
-
@AlexHopeO'Connor 我和你有同样的问题,如果你分享你对 PDFSharp 1.31 所做的修复,我将不胜感激。
-
@NJones 为我的问题添加了更多详细信息
-
@AlexHopeO'Connor 谢谢!我得到了工作,但不得不进行一些其他错误修正。我在这里写了博客:nathanpjones.com/wp/2013/03/output-to-pdf-in-wpf-for-free
标签: wpf pdf .net-4.0 xps pdfsharp