Java调用PDFBox打印自定义纸张PDF
打印对象
一份设置为A3纸张, 页面边距为(10, 10, 10, 10)mm的PDF文件.

PageFormat
默认PDFPrintable无法设置页面大小.
PDFPrintable printable = new PDFPrintable(document);
PrinterJob job = PrinterJob.getPrinterJob();
job.setPrintable(printable);
需要把它放到一个Book中, 再设置即可
Book book = new Book();
book.append(printable, pageFormat);
printerJob.setPageable(book);
printerJob.print();
设置纸张属性
Paper paper = new Paper();
paper.setSize(width, height);
// 设置边距
paper.setImageableArea(marginLeft, marginRight, width - (marginLeft + marginRight), height - (marginTop + marginBottom));
// 自定义页面设置
PageFormat pageFormat = new PageFormat();
// 设置页面横纵向
pageFormat.setOrientation(PageFormat.PORTRAIT);
pageFormat.setPaper(paper);
注意: 这边计量单位都是在dpi 72下的尺寸.
如果拿到是mm, 需要转为px. 例如10mm转换
10 * 72 * 10 / 254 = 28px
如果打印出现了截断, 一般是因为没有添加自定义纸张导致的.
完整代码如下
InputStream in = new FileInputStream("d:\\a3.pdf");
PDDocument document = PDDocument.load(in);
PDFPrintable printable = new PDFPrintable(document, Scaling.ACTUAL_SIZE);
PrinterJob printerJob = PrinterJob.getPrinterJob();
PaperSize a3 = PaperSize.PAPERSIZE_A3;
// A3 纸张在72 dpi下的宽高 841 * 1190
int width = a3.getWidth().toPixI(72);
int height = a3.getHeight().toPixI(72);
// 10mm边距, 对应 28px
int marginLeft = 28;
int marginRight = 28;
int marginTop = 28;
int marginBottom = 28;
Paper paper = new Paper();
paper.setSize(width, height);
// 设置边距
paper.setImageableArea(marginLeft, marginRight, width - (marginLeft + marginRight), height - (marginTop + marginBottom));
// 自定义页面设置
PageFormat pageFormat = new PageFormat();
// 设置页面横纵向
pageFormat.setOrientation(PageFormat.PORTRAIT);
pageFormat.setPaper(paper);
Book book = new Book();
book.append(printable, pageFormat);
printerJob.setPageable(book);
printerJob.print();
Java调用PDFBox打印自定义纸张PDF的更多相关文章
- C#调用windows api控制打印机 状态获取 打印 自定义纸张 完整版
using System; using System.Text; using System.Runtime.InteropServices; using System.Security; using ...
- C#下水晶报表打印自定义纸张
在VB6中,如果要自定义纸张很方便: Rpt.PaperSize = crPaperUser Rpt.SetUserPaperSize lZZG, lZZK 但在C#中却不行了,没有发现 SetU ...
- java 调用打印机 打印服务
import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import javax ...
- Java调用打印机打印指定路径图片
依赖 javax.print package com.xgt.util; import org.apache.commons.io.IOUtils; import org.slf4j.Logger; ...
- Java读取打印机自定义纸张.
打印出现截断? 对于自定义纸张打印, 一定要先在打印机配置那边添加, 不然会出现截断. 例如打印1000*500, 出来是正常的, 打印216*139, 出现了截断. 因为java默认的打印, 会从打 ...
- Java文件操作系列[1]——PDFBox实现分页提取PDF文本
需求:用java分页提取PDF文本. PDFBox是一个很好的可以满足上述需求的开源工具. 1.PDF文档结构 要解析PDF文本,我们首先要了解PDF文件的结构. 关于PDF文档,最重要的几点: 一, ...
- Java jacob调用打印机打印word文档
前面说了Java如何生成复杂的Word文档,今年记录下Java如何调用打印机打印word文档. 起初用的是自带的PrintJob,但是系统提供的打印机制并不成熟完整.网上的代码也是千篇一律,在我的打印 ...
- java 用PDFBox 删除 PDF文件中的某一页
依赖: <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox-app ...
- Java实现POS打印机自定义无驱打印
Java实现POS打印机自定义无驱打印 热敏打印机使用越来越广泛,而安装驱动相当复杂,万幸的是,几乎所有的热敏打印机都支持ESC/P指令,参考网络上一些资料后,在此整理了一份自定义打印的方案 • 打印 ...
随机推荐
- CQRS微服务架构模式
什么是微服务? 这是维基百科里面的定义:“微服务是面向服务架构(SOA)架构风格的一种变体,它将应用程序构建为一系列松散耦合的服务.在微服务体系结构中,服务应该是细粒度的,协议应该是轻量级的.将应用 ...
- 一些神奇的JS功效
1: 沉睡排序 var numbers=[1,2,3,4,5,5,99,4,20,11,200]; numbers.forEach((num)=>{ setTimeout(()=>{ co ...
- HTML5对音视频的处理
前 言 现在网上有许多的框架和插件,能够满足程序猿的各种需求,慢慢的,就有些忽视最基础的东西. 比如,大多数视频是通过插件(比如 Flash)来显示的.然而,并非所有浏览器都拥有同样的插件. H ...
- Docker安装和卸载
一:卸载旧版本 老版本的Docker被称为docker或docker-engine.如果安装了这些,请卸载它们以及相关的依赖项. $ sudo yum remove docker \ docker-c ...
- C#中窗体的close,dispose,以及application.exit()的区别
close关闭窗体,对象仍然存在,调用Close函数释放资源后可能还需要再次使用. dispose,销毁对象,窗体对象被回收了,也就是不存在了,Dispose函数释放的资源不再使用. applicat ...
- C# 关闭窗体立即停止进程
C#在关闭窗体的时候,有时线程还在后台执行,没有及时退出. 处理方案: 为Form添加FormClosing事件,加入以下语句,在退出时,杀死本进程. System.Diagnostics.Proce ...
- OpenTSDB介绍
OpenTSDB 2.0, the scalable, distributed time series database可扩展.分布式时间序列数据库 1.背景 一些老的监控系统,它常常会出现这样的问题 ...
- TCollector
TCollector tcollector is a client-side process that gathers data from local collectors and pushes th ...
- markdown使用小结
初学时,对不太熟悉的markdown语法,有个简单记录 公式 公式一般用Latex书写,在线Latex编辑器可以使用,有以下几种方法供选择 有然后保存为图片gif格式,使用img标签进行引用. 使用G ...
- flex布局元素操作详情
之前布局一直用的是 position,float之类的,趁着国庆学习一下 flex 布局 父元素: flex-direction: row row-reverse column column-reve ...