WPF至XPS至PDF

WPF至XPS至PDF,wpf,pdf,.net-4.0,xps,pdfsharp,Wpf,Pdf,.net 4.0,Xps,Pdfsharp,我在标准WPF控件中实现了一个报告,还实现了一个DocumentPaginator,以获取这些控件并将其转换为文档进行打印 我还实现了一些代码,它使用document paginator将页面呈现为图像,并使用将其写入PDF,但是这不允许复制和粘贴,而且图像质量也有问题 我曾试用过该实用程序,并考虑将其保存到XPS文档中,然后使用将其转换为PDF,这是很有希望的,但是当前版本包含一个错误,使得从生成的PDF复制的数据无效 因此,我想我会在这里要求尝试并找到一种有效的方法来实现这一点,是否有人可以

我在标准WPF控件中实现了一个报告,还实现了一个
DocumentPaginator
,以获取这些控件并将其转换为文档进行打印

我还实现了一些代码,它使用document paginator将页面呈现为图像,并使用将其写入PDF,但是这不允许复制和粘贴,而且图像质量也有问题

我曾试用过该实用程序,并考虑将其保存到XPS文档中,然后使用将其转换为PDF,这是很有希望的,但是当前版本包含一个错误,使得从生成的PDF复制的数据无效

因此,我想我会在这里要求尝试并找到一种有效的方法来实现这一点,是否有人可以建议一种好的方法,使用
DocumentPaginator
将其直接保存到PDF中,使用复制/粘贴功能,或者使用此功能将其从XPS文档转换为PDF

谢谢, 亚历克斯

编辑-PDFSharp修复程序: 按要求确定以下是我为PDFSharp 1.31 XPS转换器编译修复程序所做的工作:

1) 我从这里下载了源代码:

2) 我遵循了这篇文章中的指示:

XpsParser.ImageBrush.cs(ln22,新增):brush.Opacity=1;

PdfContentWriter.cs(ln 526,已更改):如果(不透明度PDFsharp 1.31中包含XPS转换器,这是一个测试版,但它几乎支持所有内容,并且可以满足您的需要


PDFsharp 1.31可以从SourceForge或CodePlex下载。

如果可以选择商业SDK,我遇到的一家公司有专业的XPS到PDF转换选项(以及更多)

警告:我没有加入这家公司,也没有尝试过他们的产品。另一方面,我听说了他们的好消息。

我使用它处理文档分页,并允许您在类似于创建GUI的设计器中创建报告。我决定只购买第三方产品,因为我不想花费太多时间开发时间编写我自己的分页器等。此外,此工具可能比自定义解决方案更能防止错误,并允许您灵活地设计打印输出/报告。将来如果您需要更复杂的打印或报告,此工具可以做更多。我不为Telerik工作,但该产品很好


它允许导出为PDF、Word、Excel、HTML、PowerPoint、PNG等格式。

依我看,您的想法是对的:在我看来,XPS是将数据序列化为可用格式的最简单方法,尤其是用于转换的方法

至于第三方工具,我有一个同行(和我一样,不是我自己),他在某种程度上取得了成功;它是免费软件,提供命令行转换(即序列化文档并转换la生成的.bat文件)

它还允许您处理关键字、标题等,以及更重要的项目,如甚至分页

据我所知,没有已知的差异

或者,如果转换MSXPS让您头疼,您可能想看看,它将MSXPS转换为OpenXPS,并且作为窗口的驱动程序,它可以在任何使用.NET 3及更高版本的计算机上使用


无论您尝试何种解决方案,都可以随时向我们更新虚拟报告。我也在使用自定义的
DocumentPaginator
进行打印。PDF和XPS是通过打印到虚拟打印机生成的。它也适用于大型文档。我正试图避免使用虚拟打印机,因为我希望最大限度地减少用户依赖性。@AlexHopeO'Connor我和你的问题是同一条船,如果你能分享你对PDFSharp 1.31的修复,我将不胜感激。@NJones为我的问题添加了更多细节question@AlexHopeO康纳:谢谢!我让事情顺利进行,但不得不做一些其他的错误修复。我在这里写了一篇关于它的博客:这非常有效,但我想知道是否可能你可以详细说明为什么XPS转换器没有出现在1.32版中?它已经停止了吗?我问Stefan(PDFsharp的开发人员)。XPS转换器没有停止,但有点休眠。他想重新安排(重写)一些部分,但不知道什么时候能找到时间(我认为缺少的一些细节将导致更大的更改)。AFAIK XPS转换器也应该与PDFsharp 1.32配合使用(但您必须下载1.31才能获得转换器源代码)。很高兴听到它对你有用。我自己从未尝试过,但我看到的演示给人留下了深刻的印象。作为一个人,我期待着他什么时候能重新拿起它。与此同时,我深入研究,发现了一些额外的bug,可以解决一些问题。我在这里写了一篇关于它的博客:显然官方来源中有50页的限制,你会发现需要自己修改和编译(如果还没有这样的fork)@user-007我已经用pdf sharp将xps转换为pdf格式,但当它在xps中显示图像时,id不能在pdf上显示我。我更愿意使用开源工具。他们还在做生意吗?我试图向销售人员发送电子邮件,但被退回。最后我听说他们不再直接存在,而是被混合软件(PDFSharp)收购,但有一些轻微的问题修改工作做得很好,但是我必须返回一个版本,并用我通过谷歌找到的自定义修复程序编译源代码。
XpsParser.ImageBrush.cs (ln 22, added): brush.Opacity = 1;
PdfContentWriter.cs (ln 526, changed): if (opacity <= 1)