java PDF添加图层,支持多页图层添加
java PDF添加图层,支持多页图层添加
代码:
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.util.List;
- import com.itextpdf.text.DocumentException;
- import com.itextpdf.text.Image;
- import com.itextpdf.text.pdf.PdfContentByte;
- import com.itextpdf.text.pdf.PdfReader;
- import com.itextpdf.text.pdf.PdfStamper;
- public class PdfUtils {
- /**
- * PDF添加图层
- *
- * @param srcPdf
- * 原PDF文件路径
- * @param distPdf
- * 合成PDF输出路径
- * @param layerPathArr
- * 图层路径列表,图层名称需为数字(按照图片名称数字顺序合成在PDF对应页数上)
- * @return
- * @throws IOException
- * @throws DocumentException
- */
- public static String markLocalImage42Dist(String srcPdf, String distPdf, List<String> layerPathArr)
- throws IOException, DocumentException {
- File srcPdfFile = new File(srcPdf);
- if (!srcPdfFile.exists()) {
- throw new IllegalArgumentException("找不到需要添加图层的pdf文件");
- }
- PdfReader reader = new PdfReader(srcPdf);
- int n = reader.getNumberOfPages(); // PDF页数
- PdfStamper stamp = new PdfStamper(reader, new FileOutputStream(distPdf));
- PdfContentByte over;
- for (String layerPath : layerPathArr) {
- File layerFile = new File(layerPath);
- String currentPageNo = layerFile.getName().substring(, layerFile.getName().lastIndexOf(".")); // 图片名称(对应页数)
- boolean isNum = currentPageNo.matches("[0-9]+");
- if (!isNum) {
- throw new IllegalArgumentException("图层名称是不是数字");
- }
- Image img = Image.getInstance(layerPath);
- img.setAbsolutePosition(, );
- if (n > && n >= Integer.parseInt(currentPageNo)) {
- over = stamp.getOverContent(Integer.parseInt(currentPageNo));
- over.addImage(img);
- }
- }
- stamp.close();
- reader.close();
- return distPdf;
- }
- }
测试:
- public static void main(String[] args) throws IOException, DocumentException {
- List<String> imgUrlList = new ArrayList<>();
- imgUrlList.add("D:/ts/testPDF/1.png");
- //imgUrlList.add("D:/ts/testPDF/2.png");
- imgUrlList.add("D:/ts/testPDF/3.png");
- markLocalImage42Dist("D:/ts/testPDF/testPDF.pdf", "D:/ts/testPDF/testPDF2.pdf", imgUrlList);
- }
结果:
原PDF:
合成后PDF:
java PDF添加图层,支持多页图层添加的更多相关文章
- Java PDF页面设置——页面大小、页边距、纸张方向、页面旋转
下面的示例将介绍通过Java编程来对PDF页面进行个性化设置的方法,包括设置页面大小.页边距.纸张方向.页面旋转等.这里有如下多种页面大小尺寸可供选择: 同时,设置文档内容旋转时,可支持如下角度进行内 ...
- C# 操作PDF 图层(Layer)——添加、删除图层、设置图层可见性
前言 通过添加图层,我们可以将文本.图片.表格.图形等元素精确定位于页面指定位置,将这些元素进行叠放.组合形成页面的最终效果.此外,对于页面中已有的图层我们也可以进行设置图层可见性.删除图层等操作.因 ...
- java -PDF添加文本水印与图片水印
java pdf添加水印文本及图片文本 PDF文件添加文本水印: private static int interval = 30; public static void waterMark(Stri ...
- 页面直接导出为PDF文件,支持分页与页边距
将WEB页面直接导出为pdf文件是经常会用到的一个功能,尤其是各种报表系统.总结了一下目前几种主流的做法: 在后端用代码生成pdf文件,比如iText一类: 在后端抓取页面并生成pdf文件,比如pha ...
- C#给PDF文档添加文本和图片页眉
页眉常用于显示文档的附加信息,我们可以在页眉中插入文本或者图形,例如,页码.日期.公司徽标.文档标题.文件名或作者名等等.那么我们如何以编程的方式添加页眉呢?今天,这篇文章向大家分享如何使用了免费组件 ...
- C#添加PDF页眉——添加文本、图片到页眉
页眉常用于显示文档的附加信息,我们可以在页眉中插入文本或者图形,例如,页码.日期.公司徽标.文档标题.文件名或作者名等等.那么我们如何以编程的方式添加页眉呢?今天,这篇文章向大家分享如何使用了免费组件 ...
- 整理了2019年上千道Java面试题,近500页文档,用了1个月时间!
spring 面试题 1.一般问题 1.1.不同版本的 spring Framework 有哪些主要功能? 1.2.什么是 spring Framework? 1.3.列举 spring Framew ...
- 简析Geoserver中获取图层列表以及各图层描述信息的三种方法
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 实际项目中需要获取到Geoserver中的图层组织以及各图层 ...
- 把自己Github上的代码添加Cocoapods支持
转载请注明原链接:http://www.cnblogs.com/zhanggui/p/6003481.html 一.前言 这两天被cocoapods折磨的心力憔悴.看cocoapods官网的添加支持, ...
随机推荐
- Pytest高级进阶之Fixture
From: https://www.cnblogs.com/feiyi211/p/6626314.html 一. fixture介绍 fixture是pytest的一个闪光点,pytest要精通怎么能 ...
- Laya for H5 之Bug追踪
Laya For H5之Bug追踪 H5游戏一旦上线后,如何跟踪用户的崩溃日志呢?现在有很多第三方的工具,比如fundebug,其sdk接入简单,只需寥寥几行代码就可以追踪h5游戏的崩溃日志,bug日 ...
- 2018-2019-20175334实验二《Java面向对象程序设计》实验报告
2018-2019-20175334实验二<Java面向对象程序设计>实验报告 一.实验内容及步骤 实验二面向对象程序设计-1 参考 http://www.cnblogs.com/roce ...
- 安装pytorch成功但cuda不可用
贴上我看的教程https://zhuanlan.zhihu.com/p/26871672 一开始想用pycharm装pytorch,但不知道为什么一直失败.后来只能conda pip安装 但conda ...
- linux启动脚本,暂停脚本
启动脚本: #!/bin/sh net_server_id="nw-server-001" net_server_name="cictec-network-bus-ser ...
- java核心-多线程-线程类-Callable、Future和FutureTask
基本概念 <1>Callable,Callable和Runnable差不多,两者都是为那些其实例可能被另一个线程执行的类而设计的,最主要的差别在于Runnable不会 返回线程运算结果,C ...
- JAVA的DES加密解密在windows上测试一切正常,在linux上异常
windows上加解密正常,linux上加密正常,解密时发生 如下异常,异常信息如下: [ERROR] 2018-10-15 09:30:35,998 method:com.iscas.ippc.co ...
- Emacs下scheme编程环境的设置
Scheme编程环境搭建 1.1 安装Chez Scheme git clone https://github.com/cisco/ChezScheme.git cd ChezScheme ./con ...
- C# 获取指定路径下的文件结构(树形结构)
namespace Vue.Content { public class FileNames { public int id { get; set; } public string text { ge ...
- selenium常用的模块
from selenium import webdriver #select模块处理下拉框from selenium.webdriver.support.ui import Select # Keys ...