java PDF分页打印
将获取的pdf文件按页拆分:参考https://q.cnblogs.com/q/99944/
pdf文件有多页,第一页需设置横向打印,其他页设置为纵向打印。
PDDocument document = PDDocument.load(new File(filePath));
Splitter splitter = new Splitter();
List<PDDocument> pages = splitter.split(document);
ListIterator<PDDocument> iterator = pages.listIterator();
int i = 1;
while (iterator.hasNext()) {
PrintService service =
PrintServiceLookup.lookupDefaultPrintService();
PDDocument pd = iterator.next();
boolean isSuc = PrintUtil.printWithAttributes(pd, service,i);
i++;
System.out.println(isSuc+"----------------------打印服务");
}
public static boolean printWithAttributes(PDDocument document, PrintService service, int i) {
try {
PrinterJob job = PrinterJob.getPrinterJob();
//设置打印机 不设置,则使用默认打印机
job.setPrintService(service);
PrintRequestAttributeSet attr = new HashPrintRequestAttributeSet();
if (i == 1) {
//设置横向打印
attr.add(OrientationRequested.LANDSCAPE);
}
// attr.add(MediaSizeName.ISO_A5); //设置纸张类型
print(document, job, attr);
return true;
} catch (Exception e) {
return false;
}
}
private static void print(PDDocument document, PrinterJob job, PrintRequestAttributeSet attr)
throws IOException, PrinterException {
PDFPrintable printable = new PDFPrintable(document, Scaling.SCALE_TO_FIT);
job.setPrintable(printable);
job.print(attr);
}
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.8</version>
</dependency>
java PDF分页打印的更多相关文章
- 用SumatraPdf实现PDF静默打印
原文:https://yutuo.net/archives/24a22d50d6001564.html 之前做一系统,有一个打印PDF文件的需求,需求如下: 能指定打印机 能两面打印 最好能静默打印 ...
- 使用ScriptX控件实现IE浏览器分页打印功能
之前讲过js调用ie浏览器自带打印的用法,今天讲使用插件的方式.浏览器自带打印不能控制页边距.页眉页脚等选项,尤其是如果分页打印的话,无法自动将前一页标题带到本页,所以不适用多页打印的功能.使用Scr ...
- ITextRenderers html生成pdf 分页+横向
1.pdf横向生成问题:格式化html是加上 @page{size:297mm 210mm;} public static String formatPdfHtml(String html,Strin ...
- Java 动态分页类
动态分页类: Cls_page.java package pagination; public class Cls_page { private int nums;// 总条目数 private i ...
- js实现网页打印分页打印
web打印思路:html页面本身带有打印功能window.print() 但是在打印时又不能word模板的要求来打印不能满足打印需求.同时我们打印的数据有时候是动态变化的需要按模板来打印我的处理方式是 ...
- 应用CSS的page-break-after属性 实现WEB页面强制分页打印
虽然dedecms.com向大家介绍了很多CSS属性的相关知识,但有些非常冷门的属性还是有所欠缺.在B/S程序中,对打印页面的控制,CSS相对比较弱,例如: 自动分页, 就基本没啥实际用途.我们通常需 ...
- flex 分页打印表格功能
private function printHandler():void{ var printJob:FlexPrintJob = new FlexPrintJob(); printJob.print ...
- AndroidStudio开发Java工程(解决java控制台中文打印乱码+导入jar包运行工程)
这篇分享一点个人AS开发java工程经验,虽然有时候还是得打开eclipse来运行java项目,但能用AS的时候还是尽量用AS,毕竟一个字,爽~ 废话不多说,进入正题. 一.开发Java工程 你有两种 ...
- java PDF添加图层,支持多页图层添加
java PDF添加图层,支持多页图层添加 代码: import java.io.File; import java.io.FileOutputStream; import java.io.IOEx ...
随机推荐
- Axure PR的使用
1759139 王越 Axure RP是美国Axure Software Solution公司旗舰产品,是一个专业的快速原型设计工具,让负责定义需求和规格.设计功能和界面的专家能够快速创建应用软件或W ...
- 如何使用门罗币远程节点remote node?
当使用门罗币钱包的时候,都需要启动monerod,用来同步门罗币区块. 但是因为区块体积目前已经超过40G了, 所以需要花费很多天时间才能把数据同步完. 这对于使用门罗币非常的不方便. 远程节点rem ...
- CentOS 7下安装vertica记录
CentOS 7下安装vertica记录 1. 安装好centeros 并更新 Centeros安装就不说了,安装完之后联网环境下 yum update.更新下,使得那些包都是新的.(要想用中文 ...
- mac charles手机抓包详细教程
1.官方下载charles 2.查看电脑IP地址 3.Proxy>Proxy Settings>勾选 Enable transparent HTTP proxying (记住端口号 88 ...
- day 20 - 1 序列化模块,模块的导入
序列化模块 首先我们来看一个序列:'sdfs45sfsgerg4454287789sfsf&*0' 序列 —— 就是字符串序列化 —— 从数据类型 --> 字符串的过程反序列化 —— 从 ...
- EOCS跨链核心技术内幕
EOCS跨链技术的核心就是ICP模块,ICP即Inter Chain Protocol(跨链交互协议),下面着重介绍ICP工作原理和实现细节. Inter Chain Protocol(ICP) IC ...
- pythonのdjango 缓存
由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者memcache中,5 ...
- Python自动化中的键盘事件
1) from selenium import webdriver 加载模块 2) b = webdriver.Friefox() 打开浏览器 3) b.get(‘http://xxxxxxx’) 打 ...
- 【easy】235. Lowest Common Ancestor of a Binary Search Tree
题意大概是,找两个节点的最低公共祖先 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNod ...
- go实现选择排序
package main import "fmt" func SelectSort(data []int) { length := len(data) for i := 0; i ...