问题标签 [xps]

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 投票
0 回答
175 浏览

xaml - 打印 XAML - 缺少字体问题

可能重复:
从 Windows 服务进行 Xps 打印

我有一个在 XAML 文档中引用的自定义 .TTF 字体。

前任:

  1. 如果我在 IE 中查看 xaml 文档,字体呈现得很好
  2. 如果我将 xaml 打印到 .xps 文件,当我在 IE 中查看 .xps 文档时,字体会呈现得很好
  3. 如果我尝试将 xaml 文档打印到常规打印机,则不会呈现字体,而是使用默认面。
  4. 如果我尝试将 .xps 文档打印到常规打印机,则不会呈现字体,而是使用默认面

我尝试将字体作为资源嵌入,我尝试在 XAML 和 xaml 的代码隐藏中直接引用字体文件。

我可以获取一个普通的 html 文件,引用字体并将其打印到常规打印机,它呈现得很好。

如何让此自定义字体在此 XAML 文档中正确打印?

0 投票
0 回答
864 浏览

.net - 带有 Print Ticket 的 XPS 文档无法正确打印

我正在尝试将在 .Net 中创建的 XPS 文件打印到几种不同品牌的打印机上。

我已经编写了一些代码来创建 XPS 并通过 PrintDialog 连同文档级打印票一起打印它,这可以正常工作。但是,我要创建的文档需要按如下方式布置:

  • 第 1 页和第 2 页双面打印
  • 第 3 页和第 4 页单面打印
  • 整个文件需要装订。

目前我可以创建一个包含所有页面的 XPS 文件。但是,我必须对所有页面(3 和 4 之后的空白页)进行双面打印,因为打印机会忽略单个页面级别的打印票。

我想要做的是创建 2 个单独的文档,每个文档都有自己的打印票,指定双面打印,然后将它们组合到另一个 XPS 文档中,该文档包含一个用于装订输出的文档级打印票。

虽然我可以创建此文档,但打印机会忽略文档打印票并仅打印所有页面。

我目前正在测试的打印机是 HP CM4730 MFP 和 Kyocera FS-2020D。

有没有人有任何想法/代码示例可以解决这个问题。

0 投票
1 回答
3010 浏览

.net - .NET 库将 MS Word 文档转换为 XPS 文档

有谁知道将 Microsoft Word 文档转换为 XPS 文件的 3rd 方库?

我知道使用 MS Word 或使用 Word 自动化可以做到这一点,但我希望有一个库来进行不依赖计算机安装 MS Word 的转换。

我需要使用 API 完全在代码中进行转换。在转换过程中不会有用户交互。

谢谢,克里斯。

0 投票
2 回答
1213 浏览

wpf - 超链接可以在 WPF 控件中显示的 XPS 文件中使用吗?

我正在尝试为软件应用程序创建一个帮助系统。界面是用 WPF 编写的。我有一个想要从应用程序访问的 XPS 文件(由 Word 文档生成)。XPS 文件包含在 XPS 文件中重定向的超链接。我可以使用 DocumentViewer 控件显示文件,但超链接不起作用。(当我在 XPS 查看器中查看相同的 XPS 文件时,超链接有效。)我是 WPF 新手,所以我可能会忽略一些东西,但我已经尝试让这个工作一周了,尽管我'我一直在学习,我手头的任务没有任何进展。我将不胜感激任何帮助。-戴夫

0 投票
0 回答
680 浏览

wpf - 打印使用 OnLoaded 进行渲染的 UserControl

我正在尝试打印我在代码中创建的 WPF UserControl。我正在使用文章末尾的 DocumentPaginator 实现来执行此操作。

我遇到的问题是 DocumentPage 类没有在我的 UserControl 上调用 Loaded,因此控件没有完全呈现。我无法将 OnLoaded 中的代码移动到更好的位置,因为我不是控件的维护者。

在控件上触发 Loaded 事件的正确方法是什么?我意识到只有在控件附加到 PresentationSource 时才会触发该事件,但我试图发送打印作业而不在屏幕上显示内容。我可能可以在某处使用 Visibility=Hidden 来渲染控件,但这感觉既便宜又笨拙。

0 投票
3 回答
14130 浏览

windows - Windows:如何告诉打印机在打印期间发出 FormFeed?

我需要告诉打印机驱动程序发出换页。

我正在使用以下方法直接打印到打印机:

一组 API 调用。

很多灵感来自KB138594 - HOWTO: Send Raw Data to a Printer by Using the Win32 API。该知识库文章中需要注意的重要一点是,它们(和我复制的代码)以RAW模式启动文档:

注意: RAW模式(相对于TEXT模式)意味着我们向打印机驱动程序发出原始字节。我们承诺用它理解的语言交谈。

然后我们可以用它WritePrinter来写我们想要的一切:

这里的问题是0x0c换页符。因为我们已经在RAW模式下打开了打印机,所以我们承诺我们将发送它可以处理的打印机驱动程序字节。大多数打印机的驱动程序0x0C意味着您要发出换页。

问题是其他打印机(PDF 打印机Microsoft XPS 打印机)希望RAW打印作业使用它们自己的打印机语言。如果您使用上述方法打印到 XPS 或 PDF 打印机:没有任何反应(即没有保存对话框,没有打印)。

不久前我要求解决这个问题,得到的答复是您必须更改文档模式RAW

TEXT

这可能是因为您将“RAW”数据直接发送到打印机,而 RAW 可以是任何 PDL。但是 XPS 驱动程序可能只会理解 XPS,它可能会忽略您的“未知:你好,世界!0xFF”PDL。如果有的话,XPS 驱动程序可能只在您直接写入 XPS 数据时才接受它。

如果要在 XPS 驱动程序上呈现文本,则应使用 GDI。如果您将“TEXT”指定为数据类型,您可能能够向驱动程序发送纯文本。然后,连接到驱动程序的打印处理器将通过 GDI 将作业呈现给驱动程序,从而为您“转换”纯文本。

这样就行了,我更改了代码以将打印文档声明为TEXT

然后出现 XPS 和 PDF 打印机的“另存为”对话框,并正确保存。我认为一切都已解决。

除了几个月后,当我尝试打印到 <quote>real</quote> 打印机时:换页没有发生 - 大概是因为我不再以“原始打印机命令”模式打印。

所以我需要的是Windows 式的发送表单的方式。我需要 API 调用来告诉打印机驱动程序我希望打印机执行换页。

我的问题:如何告诉打印机在打印过程中发出 Form-Feed?


数据类型背景

打印处理器告诉假脱机程序根据文档数据类型更改作业。它与打印机驱动程序一起工作,将假脱机打印作业从硬盘驱动器发送到打印机。

软件供应商偶尔会开发自己的打印处理器来支持自定义数据类型。通常,打印处理器不需要管理员进行任何设置或干预。

数据类型

Windows 打印过程通常支持五种数据类型。两种最常用的数据类型,增强元文件 (EMF) 和准备打印 (RAW),以不同方式影响客户端计算机和打印服务器计算机的性能。

RAW是除基于 Windows 的程序之外的客户端的默认数据类型。RAW 数据类型告诉后台处理程序在打印之前根本不要更改打印作业。使用这种数据类型,准备打印作业的整个过程都在客户端计算机上完成。

EMF或增强的元文件是大多数基于 Windows 的程序的默认数据类型。使用 EMF,将打印的文档更改为比 RAW 文件更便携的元文件格式,并且通常可以在任何打印机上打印。EMF 文件往往比包含相同打印作业的 RAW 文件小。关于性能,只有打印作业的第一部分被更改或呈现在客户端计算机上,但大部分影响都在打印服务器计算机上,这也有助于客户端计算机上的应用程序更快地将控制权返回给用户。

下表(取自 MSDN)显示了默认 Windows 打印处理器支持的五种不同数据类型:

数据类型:RAW
到后台处理程序的方向 : 打印文档而不做任何更改。
用途:这是所有不基于 Windows 的客户端的数据类型。

数据类型RAW [FF appended]
假脱机程序的方向:附加换页符 (0x0C),但不做其他更改。(如果没有尾随换页,PCL 打印机会省略文档的最后一页。)
用途:某些应用程序需要。Windows 不会分配它,但可以在“打印处理器”对话框中将其设置为默认值。

数据类型:RAW [FF auto]
到后台处理程序的方向: 检查尾随换页并添加一个,如果它不存在,但不做其他更改。
用途: 某些应用程序需要。Windows 不会分配它,但可以在“打印处理器”对话框中将其设置为默认值。

数据类型NT EMF 1.00x
假脱机程序的说明:将文档视为增强的元文件 (EMF),而不是打印机驱动程序输出的 RAW 数据。
用途:EMF 文件由 Windows 创建。

数据类型TEXT
假脱机程序的说明:将整个作业视为 ANSI 文本,并使用打印设备的出厂默认设置添加打印规范。 用途:当打印作业是简单文本并且目标打印设备无法解释简单文本时,这很有用。

您可以通过控制面板中的打印机属性查看打印机可用的打印处理器,以及每个处理器支持的数据类型:

替代文字

也可以看看

0 投票
1 回答
587 浏览

wpf - 在 WPF 中查看格式错误的 URI 的 XPS 文档

我正在尝试使用 DocumentViewer(或更具体地说,DocumentViewer 的 DocumentPageView)来加载从 Powerpoint 保存为 XPS 的演示文稿。

然而,幻灯片的作者很聪明,将他的其中一个 URL 输入为伪正则表达式(例如http://[blog|www]mywebsite.com)。内置的 XPS 查看器能够毫无问题地加载文档。但是,DocumentViewer 会抛出异常,因为它会尝试验证 URI:

我当然可以进入幻灯片并修复 URI 以便显示文档。但是,由于我无法控制将与我的应用程序一起使用的文档,我更愿意找到一种方法来显示文档,尽管 URI 无效(如 XPS 查看器)。

有什么想法吗?

0 投票
2 回答
3055 浏览

wpf - 在 WPF/XAML 中使用 CMYK 颜色

有没有办法直接在 XAML 文档中指定CMYK颜色?

用# 字符作为前缀将创建 RGB 颜色,但如何指定 CMYK 颜色?

一些注意事项:

  1. 问题不在于从 CMYK 转换为 RGB,而是要使用真正的 CMYK
  2. 目的是允许生成的XPS文档(例如使用 System.Windows.Xps.Packaging)将颜色视为 CMYK,并将颜色代码生成为“ContextColor /swopcmykprofile.icc a,b,c,d,e”而不是“# aarrggbb"

我试图通过使用 ColorContext 来定义 CMYK 颜色,但没有成功。

0 投票
1 回答
1300 浏览

c# - 我的打印方法保存了 XPS 文件但不打印?

我的代码导致 saveFileDialog 保存 .xps 文件,而不是实际打印任何内容。我的代码有问题吗?如果没有,我该如何配置我的机器以使此代码工作?

代码:

0 投票
1 回答
483 浏览

.net - 从 wpf 打印的 xps 文档 - 太短、奇怪的纸张尺寸?

我正在通过仅打印到 xps 文件来测试 wpf 应用程序的打印功能.. 奇怪的是,即使纸张尺寸设置对系统来说是正确的,它似乎也将我的 8.5x11" 纸张缩短到了一些奇怪的边,几乎接近正方形而不是矩形。这严重弄乱了我的报告的布局。打印到 PDF 的同一份报告似乎工作正常,以及打印到物理打印机。

任何奇怪的 XPS 错误或我应该注意的东西?