Java调用PDFBox打印自定义纸张PDF
打印对象
一份设置为A3纸张, 页面边距为(10, 10, 10, 10)mm的PDF文件.
PageFormat
默认PDFPrintable无法设置页面大小.
1 PDFPrintable printable = new PDFPrintable(document); 2 PrinterJob job = PrinterJob.getPrinterJob(); 3 job.setPrintable(printable);
需要把它放到一个Book中, 再设置即可
1 Book book = new Book(); 2 book.append(printable, pageFormat); 3 printerJob.setPageable(book); 4 printerJob.print();
设置纸张属性
1 Paper paper = new Paper(); 2 paper.setSize(width, height); 3 // 设置边距 4 paper.setImageableArea(marginLeft, marginRight, width - (marginLeft + marginRight), height - (marginTop + marginBottom)); 5 // 自定义页面设置 6 PageFormat pageFormat = new PageFormat(); 7 // 设置页面横纵向 8 pageFormat.setOrientation(PageFormat.PORTRAIT); 9 pageFormat.setPaper(paper);
注意: 这边计量单位都是在dpi 72下的尺寸.
如果拿到是mm, 需要转为px. 例如10mm转换
10 * 72 * 10 / 254 = 28px
如果打印出现了截断, 一般是因为没有添加自定义纸张导致的.
参考 Java读取打印机自定义纸张.
完整代码如下
1 InputStream in = new FileInputStream("d:\\a3.pdf"); 2 PDDocument document = PDDocument.load(in); 3 PDFPrintable printable = new PDFPrintable(document, Scaling.ACTUAL_SIZE); 4 5 PrinterJob printerJob = PrinterJob.getPrinterJob(); 6 7 PaperSize a3 = PaperSize.PAPERSIZE_A3; 8 // A3 纸张在72 dpi下的宽高 841 * 1190 9 int width = a3.getWidth().toPixI(72); 10 int height = a3.getHeight().toPixI(72); 11 // 10mm边距, 对应 28px 12 int marginLeft = 28; 13 int marginRight = 28; 14 int marginTop = 28; 15 int marginBottom = 28; 16 17 Paper paper = new Paper(); 18 paper.setSize(width, height); 19 // 设置边距 20 paper.setImageableArea(marginLeft, marginRight, width - (marginLeft + marginRight), height - (marginTop + marginBottom)); 21 // 自定义页面设置 22 PageFormat pageFormat = new PageFormat(); 23 // 设置页面横纵向 24 pageFormat.setOrientation(PageFormat.PORTRAIT); 25 pageFormat.setPaper(paper); 26 27 Book book = new Book(); 28 book.append(printable, pageFormat); 29 printerJob.setPageable(book); 30 printerJob.print();
View Code
转载于:https://www.cnblogs.com/xdecode/p/7977324.html
Java调用PDFBox打印自定义纸张PDF相关推荐
- Java调用打印机打印(远程、本地皆可用)
Java调用打印机打印(远程.本地皆可用) 背景 准备 MAVEN环境 步骤 获取PrinterJob 设置PrinterJob纸张样式 打印PDF 背景 开发个Java项目需要远程调用共享打印机打印 ...
- 弄了一整天,终于把打印自定义纸张大小搞定了(上)--IT man
Csdn-Blog <script language="javascript" src="http://www.023rcsc.com/count/count2.a ...
- Java调用打印机打印pdf
要在Java中调用打印机打印PDF,可以使用Java打印API和第三方库,如Apache PDFBox或iText PDF. 以下是使用Java打印API打印PDF的基本步骤: 安装打印机:确保您已经 ...
- pb11 打印 自定义纸张_pb自定义纸张(连续走纸)
Pb中定制打印页长实现连续打印 pb与打印机的通讯使用ASCII码进行,其中标准ASCII码包括可打印字符及非打印字符(控制码), 打印机使用控制码来定制打印机.大多数打印机指令使用控制码escape ...
- 弄了一整天,终于把打印自定义纸张大小搞定了
长江支流说的办法保留太多了,结果不行,很多类都是他在程序集里自定义的,源码又没公开 不过还是要感谢他的提示 今天和小陈搞了一天,他在国外的论坛上看到了一篇文章得到了启示,最后我们在凌晨3点终于把自定义 ...
- Java使用 PDFBox 2.0 从 PDF 文档中读取所有文本
在本教程中,我们将学习在 Java 程序中使用 PDFBox 2.0 库从 pdf 文档中读取所有文本. PDF 文档可能包含文本.嵌入图像等作为其内容.PDFBox 中的 PDFTextStripp ...
- java 调用打印机打印
要在 Java 中调用打印机打印,您可以使用 Java 的打印 API.下面是一个简单的示例,展示了如何使用 Java 打印 API 来打印文本: import java.awt.print.Prin ...
- java调用热敏打印机打印(包含二维码生成)
项目中需要用到热敏打印机,并且在打印的同时,要生成二维码.并且打印,先说说二维码的生成吧 package com.jinke.util; import com.google.zxing.common. ...
- XtraReport报表打印自定义纸张问题
当在打印 机设置完自定义纸张后 设置User Paper为YES后,指定打印机,页面就采用了打印机的默认纸张了. 可在属性中设置需指向的打印机 Printer Name来设置打印机,Paper Kin ...
最新文章
- [WPF]winfom中ShowWPF新窗口时TextBox等控件无法输入问题解决方法 .
- r语言向量代码如何创建函数c,R中向量基本操作:创建、运算、访问
- Python必备收藏!Pycharm 常用快捷键方式!让鼠标离手操作
- 如何检查某个用户是否具有某个权限对象上定义的某种权限
- CRM product UI里assignment block的显示隐藏逻辑
- Java中的多重继承与组合vs继承
- android实现直接发短信,android5.0以上版本如何直接发送短信?
- Android TV开发总结【适配】
- 如何快速将MOV格式视频转换成MP4格式
- 多次引用同一脚注或尾注
- java 获取某一日期的0点0分0秒和23点59分59秒
- XMind 2022 for Mac(思维导图软件)中文免费版
- iphone粘贴关联_如何将电话号码粘贴到iPhone的电话应用程序中
- 字节跳动后台开发实习面试回顾
- 知道两点经纬度,计算双方距离与方向的原理
- 转战物联网·基础篇12-了解物联网之物连接相关通信技术(1)
- 数据结构之广义表(C语言)
- DCS概念简述——以教学用ABB HT 600控制系统/WinCS为例
- 百度搜索公正性彻底调查
- 海尔旗下有屋智能IPO被终止:年应收账款10亿 受恒大拖累
热门文章
- Claustrophobic Cows
- pig对null的处理(实际,对空文本处理为两种取值null或‘’)
- windows程序运行找不到msvcp120d .dll,无法继续执行代码
- 基于javaweb+springboot的小区物业管理系统(java+Springboot+ssm+mysql+maven)
- NBT封面:水稻NRT1.1B基因调控根系微生物组参与氮利用(作者解读)
- I3C总线HDR模式研读
- windows/mac在本地电脑上搭建AI人工智能绘画工具Stable Diffusion
- java qq项目_Java版QQ项目
- 遗忘之战2.1_FS无CD地图
- vs2010c语言命令行参数,模仿Visual Studio————命令行编译C/C++程序