15

我已经在标准 WPF 控件中实现了一个报告,并且还实现了一个DocumentPaginator来获取这些控件并将它们转换为用于打印的文档。

我还实现了一些代码,它使用文档分页器将页面呈现为图像并使用PDFSharp将它们写入 PDF ,但是这不允许复制和粘贴,图像质量也值得怀疑。

我已经尝试过GhostXPS实用程序,并正在考虑通过保存到 XPS 文档然后使用GhostXPS将其转换为 PDF 来使用它,这很有希望,但是当前版本包含一个错误,该错误会呈现从生成的 PDF 复制的数据无用...

所以我想我会在这里要求尝试找到一种有效的方法来执行此操作,有人可以提出一个好的方法来获取DocumentPaginator并直接将其保存为 PDF,具有复制/粘贴功能或将其从 XPS 文档转换到具有此功能的 PDF?

谢谢,亚历克斯。

编辑 - PDFSharp 修复:好的,按照这里的要求,我为 PDFSharp 1.31 XPS 转换器编译修复:

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

PDFSharp - SourceForge

2)我按照这篇文章中的说明进行操作:

PSFSharp 修复

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 修复的更多详细信息:在 WPF 中输出到 PDF

4

4 回答 4

14

PDFsharp 1.31 附带了一个 XPS 转换器。这是一个测试版,但 AFAIK 它支持几乎所有内容,并且可以满足您的需求。

PDFsharp 1.31 可以从 SourceForge 或 CodePlex 下载。

于 2012-12-21T08:05:59.530 回答
3

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

http://www.nixps.com

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

于 2012-12-22T09:18:31.167 回答
1

我使用Telerik Reporting来处理文档分页,并允许您在设计器中创建报表,类似于创建 GUI。我决定只购买第 3 方产品,因为我不想花费开发时间编写自己的分页器等。此外,这个工具可能比自定义解决方案更能证明错误,并为你想要的方式提供很大的灵活性设计您的打印输出/报告。将来,如果您需要更复杂的打印或报告,此工具的功能会更多。我不为 Telerik 工作,但那里的产品很好。

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

于 2012-12-23T20:08:59.420 回答
1

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

至于第三方工具,我有一个同行(例如,不是我自己)使用CheckPrixa并取得了一定程度的成功;它是免费软件,它提供命令行转换。(即序列化文档并转换 la 生成的 .bat 文件。)

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

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

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

让我们随时了解您尝试的任何解决方案,虚拟报告越来越受欢迎。

于 2012-12-24T01:11:30.247 回答