操作打印标签 | Java

打印架构简介

XPS 文档XPS 对象模型可以使用打印标签对象(打印架构规范中引入了这些对象)来定义文档在打印机和查看应用程序上的打印首选项。

打印架构是一个基于 XML 的分层架构,用于组织和描述打印机或打印作业的属性。它由两个主要部分组成:打印架构关键字打印架构框架。打印架构关键字是描述打印机属性和打印作业格式意图的元素实例,而打印架构框架则以分层结构定义了一组 XML 元素类型,并指定了如何将这些元素类型一起使用。

打印架构技术(称为PrintTicket)是使用打印架构框架指定的打印架构关键字构建的。打印架构规范允许第三方扩展架构,使打印架构用户能够超越打印架构关键字定义的PropertyFeatureOptionParameterInit实例。第三方元素实例可以添加到打印架构关键字定义的实例中;但是,私有的第三方Property实例必须属于与创建该命名空间的第三方明确关联的命名空间。

Aspose.Page for Java 支持打印标签

Aspose.Page for Java API 包含一组类,这些类封装了由 Print Schema 关键字定义的元素。由于这些类数量众多,本文将仅讨论使用 Aspose.Page API 在 XPS 文档中操作打印标签的几种最常用技术。我们将首先讨论打印标签中包含的每个功能类的实例化,然后演示如何将这些功能集成到打印标签中。

指定输入纸盒

JobInputBin 功能可识别设备中已安装的输入纸盒或设备支持的完整纸盒列表。它允许根据每个作业指定输入纸盒。此外,还有 DocumentInputBinPageInputBin 功能,允许分别按文档和按页面指定输入箱。任何打印票据文档都应仅包含这三个功能之一。所有功能均源自 InputBin 类,并且具有相同签名的构造函数,因此我们将使用 JobInputBin 进行演示。

以下 Java 代码行

1new JobInputBin(InputBin.InputBinOption.AutoSelect);

为作业级打印票据生成一项功能,指示打印设备根据配置自动选择最佳选项。

InputBin.InputBinOption 类定义了静态字段,作为各种输入箱选项的基础。每个选项可以包含其他属性,例如 InputBin.BinTypeInputBin.FeedDirectionInputBin.FeedFaceInputBin.FeedTypeInputBin.MediaCapacityInputBin.MediaPathInputBin.MediaSizeAutoSenseInputBin.MediaTypeAutoSenseInputBin.MediaSheetCapacity。要指定这些属性,您应该克隆基本属性,然后使用所需属性列表调用 add() 方法:

1new JobInputBin(InputBin.InputBinOption.Manual.clone().add(
2    InputBin.FeedFace.FaceDown, InputBin.FeedDirection.LongEdgeFirst, new InputBin.MediaSheetCapacity(100)));

要查看可用属性值的完整列表,请参阅打印模式规范和 Aspose.Page API 参考 的相关部分。

指定出纸盒

JobOutputBin 功能描述了设备中安装的出纸盒或设备支持的出纸盒的完整列表。JobOutputBinDocumentOutputBinPageOutputBin 关键字互斥;一个打印票据中只能指定一个。

每个选项可能包含 OutputBin.BinTypeOutputBin.MediaSheetCapacity 属性。因此,可以按如下方式实例化 JobOutputBin 功能:

1new JobOutputBin(new OutputBin.OutputBinOption(OutputBin.BinType.Sorter),
2    new OutputBin.OutputBinOption(OutputBin.BinType.Stacker, new OutputBin.MediaSheetCapacity(100)));

指定页面方向

PageOrientation 功能定义物理介质页面的方向。可用选项列表可在 API 参考的 PageOrientation.PageOrientationOption 类部分找到。以下是如何生成此功能实例的示例:

1new PageOrientation(PageOrientation.PageOrientationOption.Landscape);

指定输出的双面打印模式

JobDuplexAllDocumentsContiguously 功能描述了输出的双面打印特性。双面打印功能支持在介质的两面打印,作业中的所有文档都将连续地进行双面打印。“JobDuplexAllDocumentsContiguously”和 DocumentDuplex 互斥,驱动程序将决定如何处理这两个关键字之间的约束。后者关键字表示作业中的每个文档都将单独进行双面打印。

此功能提供 三个选项 - OneSidedtwoSidedLongEdgetwoSidedShortEdge。第一个选项没有属性,后两个选项通过 Duplex.DuplexMode 进行参数化。

例如,如果您想为 XPS 文件指定双面打印,使页面与 MediaSizeHeight 平行翻转,您可以按如下方式操作:

1new JobDuplexAllDocumentsContiguously(Duplex.DuplexOption.twoSidedLongEdge(Duplex.DuplexMode.Automatic));

如果您喜欢单面打印,则可以在打印票中包含以下功能:

1new JobDuplexAllDocumentsContiguously(Duplex.DuplexOption.OneSided);

指定输出的颜色设置

PageOutputColor 功能描述了输出颜色设置的特性。此功能有三个选项:ColorGrayscaleMonochrome,每个选项都包含两个整数属性:DeviceBitsPerPixelDriverBitsPerPixel

例如,如果您希望彩色打印机以灰度打印 XPS 文件,则可以在打印标签中添加以下功能:

1new PageOutputColor(PageOutputColor.PageOutputColorOption.Grayscale(0, 8));

使用不同级别的打印标签

如果您正在处理由其他人创建的 XPS 文件,则可能需要调整其打印标签(如果存在)。要检索作业级别的打印标签,您只需调用 XpsDocument 对象的 getJobPrintTicket() 方法即可:

1JobPrintTicket pt = document.getJobPrintTicket();

要检索 XPS 文件中特定文档的打印票证,您应该使用 getDocumentPrintTicket() 方法:

1DocumentPrintTicket pt = document.getDocumentPrintTicket(<n>);

其中 <n> 是 XPS 文件中文档的编号。

要检索 XPS 文件中特定页面的打印标签,您应该使用 getPagePrintTicket() 方法:

1PagePrintTicket pt = document.getPagePrintTicket(<m>, <n>);

其中 <m> 是 XPS 文件中文档的编号,<n> 是第 m 个文档的页码。

检索到打印票据实例后,如果该实例不等于 null,则可以添加如上文所示构造的功能:

1pt.add(<features>);

其中 <features> 是一个可变长度的数组,其中包含适用于特定级别打印标签的功能。如果旧打印标签已包含您尝试添加的某些功能,则新实例将覆盖这些功能。

如果您不想修改现有打印标签,而是分配一个全新的实例(例如新的 XPS 文件),那么对于作业级打印标签,您应该使用 setJobPrintTicket() 方法:

1document.setJobPrintTicket(new JobPrintTicket(<features>));

其中 <features> 是一个适用于作业级打印标签的可变长度特征数组。

如果您想为 XPS 文件中的特定文档分配打印标签,请使用 setDocumentPrintTicket() 方法:

1document.setDocumentPrintTicket(<n>, new DocumentPrintTicket(<features>));

这里,“”代表 XPS 文件中文档的编号,“”是一个可变长度的特征数组,适用于文档级打印标签。

最后,如果您想为 XPS 文件中的特定页面分配打印标签,您应该使用 setPagePrintTicket() 方法:

1document.setPagePrintTicket(<m>, <n>, new PagePrintTicket(<features>));

其中 <m> 是 XPS 文件中文档的编号,<n> 是第 m 个文档的页码,<features> 是一个可变长度的特征数组,用于表示页面级打印标签。

以下是 Aspose.Page for Java 示例项目中作业级打印标签的完整代码示例:

 1// For complete examples and data files, please go to https://github.com/aspose-page/Aspose.Page-for-Java
 2// The path to the documents directory.
 3String dataDir = Utils.getDataDir();
 4
 5// Create new XPS document
 6final XpsDocument document = new XpsDocument();
 7try {
 8    // Set a custom job-level print ticket
 9    document.setJobPrintTicket(new JobPrintTicket(
10        // Specify input bin.
11        new JobInputBin(InputBin.InputBinOption.Manual.clone().add(
12            InputBin.FeedFace.FaceDown, InputBin.FeedDirection.LongEdgeFirst, new InputBin.MediaSheetCapacity(100))),
13        // Specify output bin.
14        new JobOutputBin(new OutputBin.OutputBinOption(OutputBin.BinType.Sorter),
15            new OutputBin.OutputBinOption(OutputBin.BinType.Stacker, new OutputBin.MediaSheetCapacity(100))),
16        // Specify page orientation.
17        new PageOrientation(PageOrientation.PageOrientationOption.Landscape),
18        // Specify duplex mode fof the output.
19        new JobDuplexAllDocumentsContiguously(Duplex.DuplexOption.twoSidedLongEdge(Duplex.DuplexMode.Automatic)),
20        // Specify the color settings for the output.
21        new PageOutputColor(PageOutputColor.PageOutputColorOption.Grayscale(0, 8))));
22
23    // Save the document with the custom job-level print ticket.
24    document.save(dataDir + "output1.xps");
25} finally {
26  if (document != null)
27    document.close();
28}

Have any questions about Aspose.Page?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.