问题标签 [documentpaginator]

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 投票
5 回答
1265 浏览

wpf - 在后台线程中创建 WPF 组件

我正在开发一个报告系统,DocumentPage将通过DocumentPaginator. 这些文档包括许多要实例化的WPF 组件XpsDocumentWriter,因此分页器在稍后发送到(又发送到实际打印机)时包含正确的内容。

我现在的问题是DocumentPage创建实例需要相当长的时间(足以让 Windows 将应用程序标记为已冻结)所以我尝试在后台线程中创建它们,这是有问题的,因为 WPF 期望它们的属性从图形用户界面线程。我还想显示一个进度条,指示到目前为止已经创建了多少页。因此,看起来我试图让两件事在 GUI 上并行发生。

这个问题很难解释,我真的不知道如何解决它。简而言之:

  • 创建一系列DocumentPage。
    • 这些包括WPF 组件
    • 这些将在后台线程上创建,或者使用其他一些技巧,这样应用程序就不会被冻结。
  • 创建每个页面后,应更新WPF ProgressBar 。

如果没有合适的方法来做到这一点,那么替代解决方案和方法将非常受欢迎。

0 投票
2 回答
2905 浏览

.net - WPF DocumentPaginator 和 DocumentPage 意外裁剪

我正在尝试在多个页面上打印 WPF 画布。

我对缩放它以适应页面宽度非常满意,然后为每一页剪裁和翻译画布;所有非常简单的数学。

我不明白的是如何获得可打印区域的尺寸,以及如何告诉打印机打印到哪里。无论我尝试什么,我使用的值似乎都是纸张的大小,因此由于打印机无法打印到纸张的边缘,因此我会出现裁剪。

能力具有以下属性:

什么是“可成像”区域?那是我可以在纸上放置内容的区域吗?我猜是因为:

但是底部和右边距呢?我在哪里可以找到这些信息?

应该将PageSize属性DocumentPaginator设置为什么?我应该设置这个capabilities.PageImageableArea吗?或者dialog.Print()函数是否设置了这个,我只需要从中读取GetPage()

最后,当我返回 a 时,我将DocumentPage什么传递给三个几何参数pageSize和?bleedBoxcontentBox

谢谢 :)

0 投票
0 回答
643 浏览

wpf - DocumentPaginator 可与任何 Visual 一起使用?

打印任何视觉效果都很容易。

打印大于单页的文件很难。

我被困住了。文档很少,我已经尽我所能。

我想知道是否有人有一个扩展 DocumentPaginator 的类,该类可以采用任何视觉对象(甚至是 UIElement)并将其拆分为多个页面。我试图创建一个,但除了一遍又一遍地打印第一页之外,我什么也做不了。

拜托,我已经看到了那里的所有链接。粘贴不专门满足问题的链接是没有意义的。实践经验是+。

0 投票
2 回答
2935 浏览

wpf - WPF DocumentPaginator 是否将所有 DocumentPages 保留在内存中,直到完成打印作业?

关于 WPF 的 DocumentPaginator 的严格理论问题:

使用 WPF DocumentPaginator 类打印多页文档时,分页器是否将其请求的所有 DocumentPages 保留在内存中,直到文档完成打印为止?或者它是否曾经在打印作业完成之前处理掉不再需要的任何 DocumentPages(即释放内存)?有没有办法在打印过程中手动告诉分页器释放旧的/不需要的 DocumentPages 而不会遇到异常?

非常感谢您对此的帮助!

0 投票
1 回答
2030 浏览

c# - 在 DocumentViewer 中“快速”显示

我正在构建一个 WPF 应用程序,我需要在其中显示文档预览,例如使用 DocumentViewer 和 DocumentPaginator 可以实现的内容。然而,事实证明,当报表很大时,将报表转换为 XPS 并将其加载到 DocumentViewer 中会非常慢(就像我需要显示的常见报表一样)。

这让我开始思考,可能有某种方法可以开始显示报告的前几页,而其余页面正在“加载”到 DocumentViewer 中——基本上是在创建页面时加载/显示页面。

有谁知道这样的事情是否可能?如果是这样,你会建议我如何开始尝试让它发挥作用?我花了几个小时在网上四处寻找更快显示报告的解决方案,但没有提出任何建议。

为了充分披露,在这种情况下,我需要显示的报告是用 HTML 创建的。我知道我需要将其转换为 XPS 才能使用 DocumentViewer,但我提出这个是因为如果有人有快速显示 HTML 的方法,也请随时提出。我不能使用 WebBrowser 控件,因为我必须在“打印预览”类型的模式下显示。 决定如何对 HTML 站点进行“分页”的一个好的算法可能会引导我解决这个问题,然后我可以创建一个自定义控件来显示它。我会使用 DocumentPaginator,但是输出的文件是 XPS,然后我回到 DocumentViewer 问题。

再次,非常感谢任何帮助。谢谢!

0 投票
0 回答
897 浏览

wpf - 如何通过 GetPageAsync 和 XpsDocumentWriter 异步使用 DocumentPaginator?

这里的想法是我有一个 DocumentPaginator,我想将它与 XpsDocumentWriter 或 PrintDialog 一起使用,因为两者都可以选择在给定分页器的情况下进行打印。当我使用任何一个,即 XpsDocumentWriter.Write[Async] 或 PrintDialog.PrintDocument 时,分页器是通过 GetPage 与 GetPageAsync 访问的,我在派生的 DocumentPaginator 类中覆盖了它。

除了手动使用分页器并将 Visuals 提供给文档编写器之外,有没有办法触发 DocumentPaginator 的 Asyc 函数的使用?

0 投票
1 回答
1971 浏览

wpf - 在 wpf / c# 中混合横向和纵向打印

在 WPF / C# 应用程序中,我正在使用 DocumentPaginator 打印一些页面。但是,我想在横向和纵向模式下混合 1 个打印作业页面:例如,纵向第 1 页、横向第 2 页和纵向第 3 页。

但是,如果我更改 PageSize(从 DocumentPaginator 覆盖)以反映横向,则页面将保持纵向模式。

换句话说在

我相信我不能更早地将 Orientation 或 PageSize 设置为 Landscape,因为这取决于正在打印的页码......

在 1 个打印作业中混合纵向和横向的任何想法、建议和解决方法?

谢谢!R。

0 投票
1 回答
1939 浏览

c# - 实现 DocumentPaginator 时的空白页

我正在尝试实现这样的分页器:

它编译,它运行,但页面是空白的(白色)。“画布”是 System.Windows.Controls.Canvas 的一个实例。

当我把它放在像 ScrollViewer 这样的屏幕容器中时,它会完美呈现。

唯一有效的是将页面的大小设置为画布的大小。我错过了什么?

0 投票
2 回答
6575 浏览

c# - 如何设置 Xps 文档的页面大小?

我正在尝试使用FixedDocument保存 XPS 文档。到目前为止,我未能更改页面大小。如何将其更改为自定义尺寸?

我的代码基于这个问题的第一个答案,更具体地说,我正在使用这个代码:

它将用户控件复制到 XPS 文档中并成功完成,但正如我所说,使用默认纸张大小。

我尝试使用该DocumentPaginator.PageSize属性来设置新的页面大小(在实例化之后FixedDocument),但是我分配给该属性的任何内容似乎都被忽略了;生成的 XPS 文档中的页面保留其默认纸张大小。

逐步执行时,我可以看到PageSize属性的值确实发生了变化,所以它并不像新值不被DocumentPaginator.

我找到了各种在线资源,但都没有解决我的问题:

  • 这个在 MS Social 上发帖的论坛坚持认为设置PageSize属性是有效的,但据我所知并没有。
  • 文档声称设置PageSize属性有效,并提供了一个与我尝试过的相同的示例。(除此之外,基于此文档页面,我什至无法说出要使用的数字的单位。)
  • 文档还指向DocumentPage.Size属性,但是该属性不能公开更改。在将页面添加到文档之前,我是否真的必须覆盖某些页面类才能获得不同的页面大小?
  • 这个论坛帖子描述了同样的问题,但答案对我来说似乎很荒谬。我DocumentPaginator只使用过一次该属性,因此没有“再次调用 (...).DocumentPaginator”可以保存一个实例。
  • 这个问题听起来很有希望,但实际上不是关于页面大小,而是关于给定页面上图像的比例。
  • 除了前面提到的属性(PageSize无论如何这里设置为默认大小),本教程使用. 但是,为快速测试分配一些正随机值会导致我的 XPS 文档明显损坏,并且 XPS 查看器在打开它时会显示错误消息。WidthHeightFixedPage
0 投票
0 回答
264 浏览

wpf - WPF FlowDocumentPageViewer

我有DocumentPaginator(包括页眉和页脚)的自定义实现,我想在FlowDocumentPageViewer.

我该怎么做?我试图在我的自定义 DocumentPaginator 中实现IDocumentPaginatorSource,但 FlowDocumentPageViewer 抛出异常:"FlowDocumentPageViewer supports only FlowDocument as content."