WPF 打印多页预览

2024-02-24

我对这个主题了解得越多,我理解的就越少,所以如果下面的内容看起来完全不合时宜,请提前道歉。

我有一个包含流程文档的用户控件 - 具有相应视图模型的视图。目的是将其发送到预览窗口,用户可以在其中查看文档并打印它。

我从以下示例中提取了一些代码http://www.eggheadcafe.com/tutorials/aspnet/9cbb4841-8677-49e9-a3a8-46031e6​​99b2e/wpf-printing-and-print-pr.aspx http://www.eggheadcafe.com/tutorials/aspnet/9cbb4841-8677-49e9-a3a8-46031e699b2e/wpf-printing-and-print-pr.aspx

当下面被调用时

Public Shared Sub PrintPreview(owner As Window, data As FormData)

        Using xpsStream As New MemoryStream()

            Using package__1 As Package = Package.Open(xpsStream, FileMode.Create, FileAccess.ReadWrite)

                Dim packageUriString As String = "memorystream://data.xps"

                Dim packageUri As New Uri(packageUriString)

                PackageStore.AddPackage(packageUri, package__1)

                Dim xpsDocument__2 As New XpsDocument(package__1, CompressionOption.Maximum, packageUriString)

                Dim writer As XpsDocumentWriter = XpsDocument.CreateXpsDocumentWriter(xpsDocument__2)

                Dim visual As New Form(data)

                Dim printTicket As New PrintTicket()

                printTicket.PageMediaSize = A4PaperSize

                writer.Write(visual, printTicket)

                Dim document As FixedDocumentSequence = xpsDocument__2.GetFixedDocumentSequence()

                xpsDocument__2.Close()

                Dim printPreviewWnd As New PrintPreviewWindow(document)

                printPreviewWnd.Owner = owner

                printPreviewWnd.ShowDialog()

                PackageStore.RemovePackage(packageUri)

            End Using
        End Using

这将打开打印预览窗口并显示保存流程文档的用户控件。但是,它只显示应该是多页的第一页。我假设编写 xps 然后在这个窗口中再次读回它的全部目的是解决打印视觉效果的问题,但我显然误解了整个过程。如果我能帮助我弄清楚我需要做什么才能查看文档中的所有页面,我将不胜感激。

Cheers

我认为上面使用 xpsdocument 和 getfixeddocumentsequence 会将 flowdocument 转换为固定文档,但看到它没有,我可能写错了吗?


您可以将视觉对象打印到 XPS。然而,据我了解,它是your管理页面的工作。如果您的视觉效果太大而无法放在一个页面上,您需要找到一种方法将其拆分到多个页面上。

我在这里发布的源代码打印了多页的项目列表:

https://bitbucket.org/paulstovell/samples/src/a323f0c65ea4/XPS%20Report%20Generator/ https://bitbucket.org/paulstovell/samples/src/a323f0c65ea4/XPS%20Report%20Generator/

如果您能找到一种方法将视觉效果拆分为页面(可能创建 3 个表单,每个表单 15 个项目),则可以使用以下方法:

using (var doc = new XpsDocument("P:\\Test2.xps", FileAccess.Write))
{
    var writer = XpsDocument.CreateXpsDocumentWriter(doc);
    var collator = writer.CreateVisualsCollator();

    collator.BeginBatchWrite();
    collator.Write(form1);
    collator.Write(form2);
    collator.Write(form3);
    collator.EndBatchWrite();
}

var doc2 = new XpsDocument("P:\\Test2.xps", FileAccess.Read);

var seq = doc2.GetFixedDocumentSequence();

var window = new Window();
window.Content = new DocumentViewer {Document = seq};
window.ShowDialog();

另请注意,如果您要新建视觉对象并打印它,则需要先调整其大小,否则可能会出现空屏幕。下面是生成一页数据的示例(当然您会更改尺寸以适合 A4 纸)。

private StackPanel CreatePage()
{
    var panel = new StackPanel();
    panel.Width = 1000;
    panel.Height = 1000;

    for (var i = 0; i < 10; i++)
    {
        panel.Children.Add(new TextBlock() {Text = "Item " + i});
    }

    panel.Measure(new Size(1000, 1000));
    panel.Arrange(new Rect(0, 0, 1000, 1000));

    return panel;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WPF 打印多页预览 的相关文章

  • ComboBox.SelectedValue 未从绑定源更新

    这是我的绑定源对象 Public Class MyListObject Private mylist As New ObservableCollection Of String Private selectedName As String
  • 将可见性属性绑定到变量

    我有一个Border with Label里面一个Window
  • 如果在构造函数中初始化该属性,则似乎不会设置 XAML 绑定

    当属性在构造函数内初始化时 我遇到了控件模板内数据绑定的问题 这是展示案例 您也可以下载样品溶液 http www filehosting org file details 75794 WpfApplication5 zip 自定义控件1
  • 有没有办法判断当前屏幕是否支持触摸? [复制]

    这个问题在这里已经有答案了 可能的重复 是否可以让我的 c wpf 程序知道用户是否有触摸屏 https stackoverflow com questions 5673556 is it possible to let my c shar
  • 网格上的 SharedSizeScope 使表单“跳舞”

    我的页面上有一个 StackPanel 也尝试过使用 Grid
  • WPF 绑定中的“{Binding Path=.}”是什么意思?

    什么是 Binding Path 在 WPF 绑定中意味着什么 我看到有人用它 但找不到任何解释 绑定语法中是否还有其他特殊符号 除了 Binding 我找到了这个WPF 绑定备忘单 http www nbdtech com blog ar
  • WPF TreeView 绑定[重复]

    这个问题在这里已经有答案了 我有一个带有父级和子级属性的课程 ADO NET 实体框架分层页面类 http img148 imageshack us img148 6802 edmxxe8 gif http img148 imageshac
  • 内部分页:避免不工作

    我的 Wordpress 网站有一个打印样式表 我希望图像打印在单个页面上而不是跨页面拆分 在某些情况下 甚至几行文本也会被分割到不同的页面上 我已经包括了img page break avoid 在我的打印样式表中 但没有运气 我找到了一
  • 行为和视图模型在 MVVM 中如何关联?

    所以我在学习MVVM的时候偶然发现了一个问题 我有一个包含 TextBlock 的 TreeView 当我双击 TreeView 中的任何 TextBlock 时 我想对其执行操作 我开始学习行为 并且我有一个很好的示例来说明如何实现行为
  • 如何在c# wpf中获取元素的标签?

    我正在尝试使用 WPF 构建一个 GUI 在其中我可以绘制一些基本形状并将它们存储到 xml 文件中 形状是在 xaml 文件中设计的 我为每个形状添加了标签 现在我想在代码中获取它们的标签值 并将其作为属性存储在输出 xml 文件中 例如
  • WPF 中的数据绑定?

    我正在尝试在 WPF 中设置数据绑定 我有班级人员 它通过一个文本框进行更新 类似老式的 另一个文本框应该通过数据绑定镜像对人员对象的更改 它曾经是 type twoway 但抛出了xamlparse 异常 它不是这样工作的 点击显示 pe
  • WPF - 在样式中使用 ControlTemplate 资源

    创建样式时 是否可以将 ControlTemplate 属性设置为先前定义的资源 例如 如果我在 ResourceDictionary 中有以下内容
  • 从模板绑定到 viewmodel 的属性

    我为我的 GameViewModel 创建了一个视图 我有一些像这样的xaml
  • C#/WPF:禁用 RichTextBox 的文本换行

    有谁知道如何禁用文本换行RichTextBox 例如 如果我有一个大字符串不适合窗口 RichTextBox将字符串中无法显示的部分放在新行中 我想禁用它 并使其仅通过使用Scrollbar 多谢 Cheers A RichTextBox
  • TargetType="controlType" 和 TargetType="{x:Type controlType}" 之间的区别

    在 WPF 中 您可以设置TargetType类型的名称 或者您可以将其设置为 x Type nameOfType 有谁知道有什么区别 没有什么 由于属性类型是Type XAML 解析器知道尝试将您提供的任何内容转换为Type 在其他情况下
  • WPF DataGrid 绑定 DataGridCell 内容

    希望这将是一个非常简单的答案 我认为我只是没有看到众所周知的树木 我有一个 DataGridCell 样式 我想将单元格的内容绑定到图像的源属性 这是我目前使用的 XAML
  • WPF 元素宿主内存泄漏

    我在 Windows 窗体上使用元素主机时遇到奇怪的内存泄漏 我有一个主窗体 它打开另一个窗体 该窗体上只有 elementhost 控件 此时 它没有 wpf 控件子控件 只能打开 1 个主机表单 每次我打开窗体时 应用程序内存都会增加2
  • 如何在 RichTextBox 中以编程方式移动插入符位置?

    我有一个 RichTextBox 其中的特殊文本位具有自定义格式 但是 存在一个错误 即插入字符后 插入符号会放置在新插入的字符之前而不是之后 这是因为对于每次编辑 代码都会重新计算内容以应用自定义格式 然后像这样设置 CaretPosit
  • 窗口关闭后仍在调用方法

    首先我不知道这是不是一个愚蠢的问题 我有这样的场景 首先我有一个主窗口 public MainWindow InitializeComponent dt is a System Windows Threading DispatcherTim
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况

随机推荐

  • 从 maven 在 nexus 中部署工件会出现错误“返回代码是:401”?

    我在 Nexus 中部署时收到 401 错误 我没有对已安装的 Nexus 进行任何更改 Nexus 正在运行localhost 8080 nexus我可以使用默认用户 密码登录 当我跑步时mvn deploy我收到这个错误 这是我的 PO
  • 将所有数据框字符列转换为因子

    给定一个包含各种类型列的 预先存在的 数据框 将其所有字符列转换为因子而不影响任何其他类型列的最简单方法是什么 这是一个例子data frame df lt data frame A factor LETTERS 1 5 B 1 5 C a
  • 使用 JPA Criteria API,您可以执行仅产生一个连接的获取连接吗?

    使用 JPA 2 0 似乎默认情况下 没有显式获取 OneToOne fetch FetchType EAGER 字段在 1 N 次查询中获取 其中 N 是包含定义与不同相关实体的关系的实体的结果数 使用 Criteria API 我可能会
  • Openpyxl - 对象没有属性“load_workbook”

    我正在尝试使用 openpyxl 加载现有工作簿 但当我试图奔跑时这段代码 http packages python org openpyxl usage html read an existing workbook 我收到以下错误 Att
  • ASP.NET Core 3.1 无法取消保护消息。状态在调试器中运行

    我已使用默认模板从 VS 2022 创建了 ASP NET Core 3 1 Web 应用程序 并选择 Microsoft Identity 来使用 Azure AD 身份验证 向导在我的 Azure AD 租户中生成了应用程序注册 一切看
  • 是否可以创建一个剪切的div?

    是否可以创建一个剪切 倾斜的标题 div 如下图所示 它适用于移动网站 是的 这是可能的 DEMO http jsfiddle net jbutler483 2qmmpmb9 2 wrapper overflow hidden height
  • 媒体查询/根据屏幕尺寸加载不同的图像

    这可能是基本的 但我迷失在我在网上找到的所有解决方案中 我有一个基于 Twitter Bootstrap 3 的正在运行的网站 www webstalab com 但使用的图像 描绘了两个拿着球的雕像 相当大 大约 900kb 因此在较慢的
  • 将 War 部署到 Mule 独立服务器中

    我有一个 mule 独立服务器 其中包含我正在开发的应用程序 该应用程序使用的许多服务将来将从 Mule 容器移至 JBoss 集群中 因此 我在 Mule 流和 Web 服务之间保持了严格的分离 然而 截至目前 我需要将 War 文件部署
  • 如何在 Maven 中包含/引用 jackson-all.jar

    我无法找到 jackson all jar 的存储库条目 不知道为什么我可以看到单独的杰克逊罐子信息 所以 如何引用 jackson all jar 对于 杰克逊 2 请查看com fasterxml jackson http search
  • awk 中的字符串比较

    我需要按字母顺序比较两个字符串 而不仅仅是相等测试 我想知道有没有办法在 awk 中进行字符串比较 当然可以 pax echo hello goodbye gawk if 0 hello print HELLO HELLO 你也可以做不等式
  • 将内部 div 不透明度设置为 1,但不生效

    我有一个带有背景图像和背景颜色的 div 我把这个div的不透明度设置为0 7 之后 我在这个 div 内部创建了一个内部 div 但我不想给这个 div 带来不透明度 这是我的CSS代码 outer position relative b
  • System.Windows.Forms.SaveFileDialog 不强制执行默认扩展名

    我正在努力使SaveFileDialog and FileOpenDialog对用户输入的文件名强制执行扩展名 我尝试过使用中提出的示例问题 389070 https stackoverflow com questions 389070 h
  • 为网站实现字体?

    我在 CSS 中使用字体 AR CENA 但在浏览网站时它没有加载字体 对我来说它运行良好 但我认为因为我已经安装了字体 所以它从我的电脑加载它 有没有办法实现这种字体并正常出现在网站上供用户使用 u2966 5 z index 500 w
  • 如何从 python 中激活 pyvenv virtualenv? (activate_this.py 被删除了?)

    我正在使用 Python 3 4 并创建了 pyvenv 我希望从 python 进程中激活它 对于 virtualenv 我曾经使用过activate this py 但这似乎在 pyvenv 中消失了 现在有没有一种简单的方法可以有效地
  • 为什么我不能将 Promise.resolve 与 osmosis 实例一起使用?

    我试图理解为什么这些console log语句的行为不同 我希望他们的行为是一样的 使用 Node 7 考虑以下情况 1 Promise resolve 对象 Promise resolve按照我的预期处理对象 Promise resolv
  • 如何使用pandas加速数据加载?

    我正在使用 pandas 和 Jupiter 笔记本 我正在读取 700MB 的 CSV 文件 加载需要 69 秒 出于测试目的 这是可以接受的 因为我只需要加载它一次 并且它在笔记本实例的持续时间内保留在内存中 pd read csv p
  • 找到第三点

    我有2分P1 and P2 我需要找到P3 为了使 所有点都在同一条线上 P3应该在距离d来自P2 远离P1 I started a complicated system apparently hardly to resolve PS 矢量
  • “克隆”索引映射

    我有一个索引 我将重新索引它 目前我想创建一个新索引 它应该包含与原始索引中完全相同的映射 我有这个 var srcMappings client GetMapping new GetMappingRequest Indices sourc
  • 找出所有可能的组合

    我之前问过这个问题 但涉及另一种编程语言 假设我有几个词根 前缀和后缀 roots car insurance auto insurance prefix cheap budget suffix quote quotes Python 中是
  • WPF 打印多页预览

    我对这个主题了解得越多 我理解的就越少 所以如果下面的内容看起来完全不合时宜 请提前道歉 我有一个包含流程文档的用户控件 具有相应视图模型的视图 目的是将其发送到预览窗口 用户可以在其中查看文档并打印它 我从以下示例中提取了一些代码http