问题标签 [xpsdocument]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2787 浏览

c# - 从嵌入式资源加载 XPS 到文档查看器

我正在尝试为我的申请提供帮助。我有我正在加载到 documentviewer 的 xps 文档。这些文件嵌入在资源文件中。

我能够以字节数组的形式访问这些。例如 Properties.Resources.help_sudoku_methods_2 返回 byte[]

但是,documentviewer 无法读取它并且需要固定的documentsequence。所以我从bytearray创建内存流,然后是xpsdocument,然后是fixeddocumentsequence,如下所示:

这是非常不干净的方法,如果文件中有图像也不起作用 - 而不是新文档中的图像显示来自第一个加载的文档的图像。

有没有更简洁的方法将 XPS 从嵌入式资源加载到文档查看器?还是我需要一些想法,例如将文件从资源复制到应用程序目录并从这里加载而不是内存流?谢谢你。

0 投票
2 回答
6171 浏览

wpf - 将 FixedDocument 保存到 XPS 文件会导致内存泄漏

我创建了一个 .NET Windows 服务,它执行某些操作并生成报告。这些报告是我保存在某个目录中的 XPS 文档。

熟悉 WPF,我选择创建报告的方式是实例化 a System.Windows.Documents.FixedDocument,根据需要添加FixedPage具有内容的对象。

我的问题是服务内存使用量随着时间的推移不断上升。

起初,我严格检查了我的代码,确保所有一次性对象都被释放,等等,以及其他明显的内存泄漏候选,但仍然存在问题。然后我使用 CLR Profiler 详细查看了 Service 的内存使用情况。

我发现当服务生成这些报告并将它们保存为 XPS 文件时,与对象(、、、、等)FixedDocument关联的所有各种 UI 元素都保留在内存中。FixedDocumentDispatcherFixedPageUIElementCollectionVisual

当我在我的 WPF 应用程序中做同样的事情时,这似乎不会发生,所以我的直觉是它与在 WPF 应用程序之外使用的 WPF UI Dispatcher 模型有关。

FixedDocument在这样的服务中(或一般在 WPF 应用程序之外)使用对象时,如何“处置”我的对象?

======== 编辑 =========

好的,我发现我的内存泄漏与创建/填充 FixedDocument 无关。如果我这样做了,但实际上并没有将它作为 XPS 保存到磁盘,则不会发生内存泄漏。所以,我的问题一定与另存为 XPS 文件有关。

这是我的代码:

我试过的:

  • 手动垃圾收集
  • 在获取它的分页器之前调用UpdateLayout()每一页myFixedDocument(如下面的答案中所建议) - 我也尝试过myFixedDocument直接传递给Write() ie 而不是分页器
  • 将这些代码行放在自己的线程中并手动关闭调度程序

仍然没有运气。

========== 解决方法 ==========

通过使用http://msdn.microsoft.com/en-us/library/system.appdomain.aspx示例中所示的通用方法将上述代码隔离到它自己的 AppDomain 中,内存泄漏不再影响我的服务(我说“不再影响”,因为它仍然会发生,但是当 AppDomain 被卸载时,所有泄漏的资源都会被卸载)。

我仍然渴望看到一个真正的解决方案。

(在相关说明中,对于那些感兴趣的人,使用单独的 AppDomain 会导致我用来将某些 XPS 文件转换为 PDF 文件的 PDFSharp 组件中的内存泄漏。原来 PDFSharp 使用在正常情况下不会增长的全局字体缓存显着。但是使用这些 AppDomain 后缓存越来越大。我编辑了 PDFSharp 源代码,使我能够手动清除 FontDescriptorStock 和 FontDataStock,解决了这个问题。)

========== 解决方案 ==========

请参阅下面的答案以获取最终解决方案。

0 投票
1 回答
915 浏览

c# - 如何在 WPF 中设置与 DocumentPageView.DocumentPaginator 的绑定

如何在 WPF 中绑定 DocumentPageView?
我的代码:

Source 是 DocumentPaginator 的类型。错误是:

错误 1 ​​无法在“DocumentPageView”类型的“DocumentPaginator”属性上设置“绑定”。只能在 DependencyObject 的 DependencyProperty 上设置“绑定”。

请帮我。天...

0 投票
1 回答
822 浏览

pdf - 比较 XPS 和 PDF,哪个会是未来的标准?

微软提出XPS,其地位与PDF相比如何?XPS 与 pdf 相比有什么优势吗?

0 投票
2 回答
6144 浏览

c# - 将 BlockUIContainer 打印到 XpsDocument/FixedDocument

0 投票
2 回答
488 浏览

c# - 重新打包xps解压到zip

我将 xps 提取到一个文件夹,编辑了一些图像,我想重新压缩它以保持它可以使用 XPS 查看器打开,但是有问题!.. 如果我不更改任何内容,我无法重新压缩它并打开它使用 XPS 查看器。

我正在使用 Windows“发送到压缩文件夹”和带有“无压缩 | 超快 | Enh. Deflate”和 ICSharpCode.SharpZipLib.dll 的 WinZip。但没有成功。

请帮忙!

0 投票
1 回答
3171 浏览

c# - 合并 xps 文档使最后一个重复

将多个 XPS 文档合并为一个时出现问题。当我合并它们时,结果 xps 包含最后一个重复的 XPS 文档。这是我的合并功能(此问题的修改版):

结果转到 DocumentViewer 并将其显示给用户。

0 投票
2 回答
749 浏览

java - 在 Android 中以位图或 jpeg 或 png 图像的形式查看 PowerPoint XML

我有许多 PowerPoint 演示文稿,我需要能够将它们添加到我的应用程序的 res 文件夹中。如果我不将它们保存为 XML、PDF 或 XPS,它们将占用大量内存。PDF 和 android 根本不容易结合在一起,所以我选择 XML 或 XPS 的路径。我需要这些能够被查看和/或编辑为位图。

我不明白 PowerPoint XML 如何能够/实现以在屏幕上查看或绘制。我也不明白如何对 PowerPoint XPS 做同样的事情,但只需要一种方法(XPS 或 XML)。我确实知道 PDF 已经慢慢成为文件复杂性的选项,并且没有标准的查看器 API。

所以基本上...

  • 我需要在 android 上以位图的形式显示/查看 XML 或 XPS PP 演示文稿
  • 我可以使用 XML 和 Java
  • 我已经进行了研究,但我仍然需要了解执行此操作的潜在因素

我会在下面附上代码,但对于 Stack Overflow 来说太大了。如果需要,我建议使用 PP 进行测试并保存为 PowerPoint XML 格式。

非常感谢你的帮助。

0 投票
1 回答
4861 浏览

xps - 如何合并 .xps 文件?

有没有办法将多个文档合并到 .xps 文件中?我希望我可以做到这一点而无需安装第三方软件。任何帮助将不胜感激。

0 投票
1 回答
1157 浏览

wpf - WPF Printing large custom control

I'm sorry if this is a duplicate, but I couldn't find anything relating to it.

I'm trying to create an XpsDocument from a custom control that I have. The custom control already defines properties for a header and a footer, along with the body.

The idea is to be able to use that same control (or derivatives of it) as an input to some custom DocumentPaginator that will create a printer-ready version of that "report", with the header and the footer put on every page, and the controls, inside the body, showing in full (I don't want to create a bitmap of the whole control, then scale it and cut it where the page ends).

Any ideas on how I can split the contents of a user control into pages? Or suggestions on a different way to achieve the printing of the control onto pages?

Thanks a lot in advance