我有一个JasperReports报告要在双面打印机上以横向模式打印.在此我要支持PCL5和PCL6打印驱动程序.

在互联网上搜索,我发现了以下代码片段来完成这项工作:

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.print.Book;

import java.awt.print.PageFormat;

import java.awt.print.Printable;

import java.awt.print.PrinterException;

import java.awt.print.PrinterJob;

import javax.print.PrintService;

import javax.print.attribute.HashPrintRequestAttributeSet;

import javax.print.attribute.PrintRequestAttributeSet;

import javax.print.attribute.standard.OrientationRequested;

import javax.print.attribute.standard.Sides;

public class PrintingTest {

public static void main(String[] args) {

try {

//This are for configuration purpose

String orientation = "LANDSCAPE";

String duplexMode = "LONG_EDGE";

int pageOrientation = 0;

PrintRequestAttributeSet atr = new HashPrintRequestAttributeSet();

if ("Landscape".equals(orientation)) {

atr.add(OrientationRequested.LANDSCAPE);

pageOrientation = PageFormat.LANDSCAPE;

} else if ("Reverse_Landscape".equals(orientation)) {

atr.add(OrientationRequested.REVERSE_LANDSCAPE);

pageOrientation = PageFormat.REVERSE_LANDSCAPE;

} else {

atr.add(OrientationRequested.PORTRAIT);

pageOrientation = PageFormat.PORTRAIT;

}

if ("LONG_EDGE".equals(duplexMode)) {

atr.add(Sides.TWO_SIDED_LONG_EDGE);

} else {

atr.add(Sides.TWO_SIDED_SHORT_EDGE);

}

//Printing to the default printer

PrintService printer = javax.print.PrintServiceLookup

.lookupDefaultPrintService();

//Creating the printing job

PrinterJob printJob = PrinterJob.getPrinterJob();

printJob.setPrintService(printer);

Book book = new Book();

PageFormat pageFormat = printJob.defaultPage();

pageFormat.setOrientation(pageOrientation);

// Appending a exampledocument to the book

book.append(new ExampleDocument(), pageFormat);

// Appending another exampledocument to the book

book.append(new ExampleDocument(), pageFormat);

// Setting the Pageable to the printjob

printJob.setPageable(book);

try {

// Here a could show the print dialog

// printJob.printDialog(atr);

// Here I pass the previous defined attributes

printJob.print(atr);

} catch (Exception PrintException) {

PrintException.printStackTrace();

}

} catch (PrinterException ex) {

ex.printStackTrace();

}

}

public static final int MARGIN_SIZE = 72;

private static class ExampleDocument implements Printable {

public int print(Graphics g, PageFormat pageFormat, int page) {

Graphics2D g2d = (Graphics2D) g;

g2d.translate(pageFormat.getImageableX(),

pageFormat.getImageableY());

// Only on the first two documents...

if (page <= 1) {

// Prints using one inch margin

g2d.drawString("Printing page " + page + " - duplex...",

MARGIN_SIZE, MARGIN_SIZE);

return (PAGE_EXISTS);

}

return (NO_SUCH_PAGE);

}

}

}

这在PCL6上工作正常,但是,当在PCL5上测试时,我注意到LONG_EDGE和SHORT_EDGE规则被简单地忽略了.在这两种情况下,作业都以LONG_EDGE的形式发送.这不会有问题,除了Java AWT打印API通过逆时针旋转所有页面90º来解决横向打印,从而导致它在SHORT_EDGE模式下打印.

Obs:我能够使用SWT API以纵向和横向两种配置SHORT_EDGE和LONG_EDGE正确打印.但是我无法在兼容SWT的打印请求中转换jasper打印请求.

我的问题是:有没有人遇到过这种情况?给出了哪种解决方案?

根据我的观察,我发现了这些可能的解决方案:

>不要让AWT翻页并发送纵向打印请求,而是强制它将其作为横向打印请求发送;

>找到一种方法,当页面处于横向模式时,反转LONG_EDGE和SHORT_EDGE命令.请注意,对于这个,我有义务纠正两者都被视为LONG_EDGE请求的问题.

>转换JasperReports以使用SWT打印API.

java 横向 打印出来_在双工模式下使用Java打印横向文档相关推荐

  1. java审批流程框架_基于SSM框架下的JAVA企业流程审批系统

    每天记录学习,每天会有好心情.*^_^* 今天将为大家分析一个企业流程审批系统(现代企业对资金流的控制十分严格,但是绝大部分企业的费用审批还停滞在手动填单.逐级递交.逐级审批的现状,既没有效率也不利于 ...

  2. java 框架漏洞网站_在分层架构下寻找java web漏洞

    web开发应用程序(网站),是目前应用最广泛的程序.但是开发者的水平参差不齐,导致了各种各样web漏洞的出现.本文站在分层架构的角度,分析一下如何在java web程序中找到可能出现的种种漏洞. 本文 ...

  3. java 判断是否夏令时_怎么在linux下 使用java代码正确获取夏令时的时间

    通过设备开通WiFi连接获取Mac地址是最可取的,代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 /** * 设备开通WiFi连接,通过wif ...

  4. 开发接口文档_更优更稳更好,看文档驱动开发模式在AIMS中的优势

    ​[摘要]程序员常会说:我最讨厌别人写的代码没有文档,我也最讨厌自己需要写文档. 有一个很老的梗: 我最讨厌别人写的代码没有文档,我也最讨厌自己需要写文档. 有这种想法的程序员应该算是一个老鸟了,对于 ...

  5. java计算机毕业设计html5健身房信息管理系统源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计html5健身房信息管理系统源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计html5健身房信息管理系统源码+mysql数据库+系统+lw文档+部署 本源码技 ...

  6. java计算机毕业设计基于web的老年公寓管理源码+数据库+系统+lw文档+mybatis+运行部署

    java计算机毕业设计基于web的老年公寓管理源码+数据库+系统+lw文档+mybatis+运行部署 java计算机毕业设计基于web的老年公寓管理源码+数据库+系统+lw文档+mybatis+运行部 ...

  7. 基于JAVA中文网络小说平台系统计算机毕业设计源码+系统+数据库+lw文档+部署

    基于JAVA中文网络小说平台系统计算机毕业设计源码+系统+数据库+lw文档+部署 基于JAVA中文网络小说平台系统计算机毕业设计源码+系统+数据库+lw文档+部署 本源码技术栈: 项目架构:B/S架构 ...

  8. java计算机毕业设计网络作业提交与批改系统源代码+数据库+系统+lw文档

    java计算机毕业设计网络作业提交与批改系统源代码+数据库+系统+lw文档 java计算机毕业设计网络作业提交与批改系统源代码+数据库+系统+lw文档 本源码技术栈: 项目架构:B/S架构 开发语言: ...

  9. 基于JAVA东理咨询交流论坛计算机毕业设计源码+系统+数据库+lw文档+部署

    基于JAVA东理咨询交流论坛计算机毕业设计源码+系统+数据库+lw文档+部署 基于JAVA东理咨询交流论坛计算机毕业设计源码+系统+数据库+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开发语 ...

最新文章

  1. linux free命令详解和使用实例(查看内存使用率)
  2. 人脸关键点估计人头姿态
  3. 《Head First 设计模式》之命令模式——遥控器
  4. es中的Coordinator
  5. Oracle 常用SQL技巧收藏
  6. 黄开宁:搞多媒体开发要掌握好信号处理、统计和数理分析
  7. SAP Commerce的Content Page,Content Slot和Component在Spartacus里的应用
  8. 使用log4j监视和筛选应用程序日志到邮件
  9. 计算机教学难点重点,浅述如何解决小学信息技术教学中的重点、难点
  10. JDK8新特性(七)之Stream流的count()、filter()、limit()、skip()方法
  11. qt qtableview mysql_Qt数据库编程中QTableView使用方法
  12. ASP.NET 使用Session,避免用户F5刷新时重复提交(转)
  13. Mybatis-generator自动生成
  14. [PhoenixRC模拟器安装]
  15. oracle12C以上版本创建pdb数据库实例实践
  16. 2015年3月31日通过VMware VCP 认证
  17. python3中多项式创建_Python3多项式
  18. 1、使用类与接口的知识完成如下要求:(1)定义一个接口CanFly,描述会飞的方法public void fly();(2)分别定义类飞机和鸟,实现CanFly接口。(3)定义一个测试类,测试飞
  19. This National Puppy Day
  20. IE ajax无局部刷新_se7en3_新浪博客

热门文章

  1. FPA软件评估方法论
  2. java pdf 修改内容_Java PDFBox – 读取和修改带有特殊字符的pdf(变音符号)
  3. 当语音遇到人工智能,走进《智能语音时代》
  4. eNSP:实现不同网段不同vlan主机之间的互访(配置三层交换)
  5. 解决C++中调用Python脚本的LNK2001错误
  6. python 修改图片尺寸_Python实现更改图片尺寸大小的方法(基于Pillow包)
  7. Android “adb”不是内部或外部命令,也不是可运行的程序或批处理文件
  8. 3D 空间中拟合曲线
  9. c#文本文件文本替换_如何替换许多文件中存在的文本?
  10. Signatures-based、Anomaly-based、Specification-based三种入侵检测方法的简介