java 横向 打印出来_在双工模式下使用Java打印横向文档
我有一个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打印横向文档相关推荐
- java审批流程框架_基于SSM框架下的JAVA企业流程审批系统
每天记录学习,每天会有好心情.*^_^* 今天将为大家分析一个企业流程审批系统(现代企业对资金流的控制十分严格,但是绝大部分企业的费用审批还停滞在手动填单.逐级递交.逐级审批的现状,既没有效率也不利于 ...
- java 框架漏洞网站_在分层架构下寻找java web漏洞
web开发应用程序(网站),是目前应用最广泛的程序.但是开发者的水平参差不齐,导致了各种各样web漏洞的出现.本文站在分层架构的角度,分析一下如何在java web程序中找到可能出现的种种漏洞. 本文 ...
- 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 ...
- 开发接口文档_更优更稳更好,看文档驱动开发模式在AIMS中的优势
[摘要]程序员常会说:我最讨厌别人写的代码没有文档,我也最讨厌自己需要写文档. 有一个很老的梗: 我最讨厌别人写的代码没有文档,我也最讨厌自己需要写文档. 有这种想法的程序员应该算是一个老鸟了,对于 ...
- java计算机毕业设计html5健身房信息管理系统源码+mysql数据库+系统+lw文档+部署
java计算机毕业设计html5健身房信息管理系统源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计html5健身房信息管理系统源码+mysql数据库+系统+lw文档+部署 本源码技 ...
- java计算机毕业设计基于web的老年公寓管理源码+数据库+系统+lw文档+mybatis+运行部署
java计算机毕业设计基于web的老年公寓管理源码+数据库+系统+lw文档+mybatis+运行部署 java计算机毕业设计基于web的老年公寓管理源码+数据库+系统+lw文档+mybatis+运行部 ...
- 基于JAVA中文网络小说平台系统计算机毕业设计源码+系统+数据库+lw文档+部署
基于JAVA中文网络小说平台系统计算机毕业设计源码+系统+数据库+lw文档+部署 基于JAVA中文网络小说平台系统计算机毕业设计源码+系统+数据库+lw文档+部署 本源码技术栈: 项目架构:B/S架构 ...
- java计算机毕业设计网络作业提交与批改系统源代码+数据库+系统+lw文档
java计算机毕业设计网络作业提交与批改系统源代码+数据库+系统+lw文档 java计算机毕业设计网络作业提交与批改系统源代码+数据库+系统+lw文档 本源码技术栈: 项目架构:B/S架构 开发语言: ...
- 基于JAVA东理咨询交流论坛计算机毕业设计源码+系统+数据库+lw文档+部署
基于JAVA东理咨询交流论坛计算机毕业设计源码+系统+数据库+lw文档+部署 基于JAVA东理咨询交流论坛计算机毕业设计源码+系统+数据库+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开发语 ...
最新文章
- linux free命令详解和使用实例(查看内存使用率)
- 人脸关键点估计人头姿态
- 《Head First 设计模式》之命令模式——遥控器
- es中的Coordinator
- Oracle 常用SQL技巧收藏
- 黄开宁:搞多媒体开发要掌握好信号处理、统计和数理分析
- SAP Commerce的Content Page,Content Slot和Component在Spartacus里的应用
- 使用log4j监视和筛选应用程序日志到邮件
- 计算机教学难点重点,浅述如何解决小学信息技术教学中的重点、难点
- JDK8新特性(七)之Stream流的count()、filter()、limit()、skip()方法
- qt qtableview mysql_Qt数据库编程中QTableView使用方法
- ASP.NET 使用Session,避免用户F5刷新时重复提交(转)
- Mybatis-generator自动生成
- [PhoenixRC模拟器安装]
- oracle12C以上版本创建pdb数据库实例实践
- 2015年3月31日通过VMware VCP 认证
- python3中多项式创建_Python3多项式
- 1、使用类与接口的知识完成如下要求:(1)定义一个接口CanFly,描述会飞的方法public void fly();(2)分别定义类飞机和鸟,实现CanFly接口。(3)定义一个测试类,测试飞
- This National Puppy Day
- IE ajax无局部刷新_se7en3_新浪博客
热门文章
- FPA软件评估方法论
- java pdf 修改内容_Java PDFBox – 读取和修改带有特殊字符的pdf(变音符号)
- 当语音遇到人工智能,走进《智能语音时代》
- eNSP:实现不同网段不同vlan主机之间的互访(配置三层交换)
- 解决C++中调用Python脚本的LNK2001错误
- python 修改图片尺寸_Python实现更改图片尺寸大小的方法(基于Pillow包)
- Android “adb”不是内部或外部命令,也不是可运行的程序或批处理文件
- 3D 空间中拟合曲线
- c#文本文件文本替换_如何替换许多文件中存在的文本?
- Signatures-based、Anomaly-based、Specification-based三种入侵检测方法的简介