Java PDF 相关 1、拷贝多个PDF到一个PDF,并且文件大小变小,文本等信息保留

简介: 1、合并多个PDF,并且文件变小,后面添加的文本信息保留

公共部分:
需要引用的架包

     <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.13</version>
        </dependency>

        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itext-asian</artifactId>
            <version>5.2.0</version>
        </dependency>

一、合并多个PDF到一个PDF,主要使用PdfCopy
1、业务反馈系统打印的PDF文本不见了,要修复。
2、查看代码发现,只是简单地将PDF合并,并没有作任务处理
直接看代码示例:
/合并多个PDF/

public static void pdfCopyDemo() {
   
        List<String> fileurls = new ArrayList<>();
        fileurls.add("C:\\Users\\Administrator\\Desktop\\print\\wms\\20240123OUTBOUND_A4.pdf");
        //fileurls.add("C:\\Users\\Administrator\\Desktop\\print\\wms\\20240123OUTBOUND_A4.pdf");
        Document document = new Document();

        try(ByteArrayOutputStream fos = new ByteArrayOutputStream()){
   
            // 创建新的pdf
            //这里如果直接New PdfCopy来处理,生成的PDF会变大,所以改用PdfSmartCopy。有兴趣的同学自己研究
            PdfCopy copy = new PdfSmartCopy(document,fos);
            //PdfWriter writer = PdfWriter.getInstance(document, fos);
            document.open();
            //PdfContentByte cb = writer.getDirectContent();
            int numberOfPages = 0;
            PdfReader reader = null;
            PdfImportedPage pageTemplate = null;
            for(String url : fileurls) {
   
                PdfReader.debugmode = true; //忽略有问题的PDF 不影响正常打印
                reader = new PdfReader(url);
                numberOfPages = reader.getNumberOfPages();
                for (int i = 0; i < numberOfPages; i++) {
   
                    //pageTemplate = writer.getImportedPage(reader, i + 1);
                    pageTemplate = copy.getImportedPage(reader, i + 1);
                    document.setPageSize(pageTemplate.getBoundingBox());
                    document.newPage();
                    //cb.addTemplate(pageTemplate, 0, 0);// 设置x,y坐标
                    copy.addPage(pageTemplate);
                }
                reader.close();
            }
            document.close();
            //databyte = fos.toByteArray();

            FileOutputStream fot = new FileOutputStream("C:\\Users\\Administrator\\Desktop\\print\\wms\\copy.pdf");
            fot.write(fos.toByteArray());
        } catch (Exception e) {
   
            throw new WMSException(GlobalExceptionMessage.DEFAULT_CODE, "Failed to download files."+WMSExceptionUtil.getExceptionInfo(e));
        }
    }
相关文章
|
6月前
|
人工智能 自然语言处理 算法
科研论文翻译神器!BabelDOC:开源AI工具让PDF论文秒变双语对照,公式图表全保留
BabelDOC 是一款专为科学论文设计的开源AI翻译工具,采用先进的无损解析技术和智能布局识别算法,能完美保留原文格式并生成双语对照翻译。
1894 67
科研论文翻译神器!BabelDOC:开源AI工具让PDF论文秒变双语对照,公式图表全保留
|
4月前
|
存储 安全 算法
Java 集合面试题 PDF 下载及高频考点解析
本文围绕Java集合面试题展开,详细解析了集合框架的基本概念、常见集合类的特点与应用场景。内容涵盖`ArrayList`与`LinkedList`的区别、`HashSet`与`TreeSet`的对比、`HashMap`与`ConcurrentHashMap`的线程安全性分析等。通过技术方案与应用实例,帮助读者深入理解集合类的特性和使用场景,提升解决实际开发问题的能力。文末附带资源链接,供进一步学习参考。
99 4
|
11月前
|
Java API Apache
Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
【10月更文挑战第29天】Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
703 5
|
7月前
|
人工智能 文字识别 自然语言处理
1.6K star!这个开源文本提取神器,5分钟搞定PDF/图片/Office文档!
Kreuzberg 是一个基于 Python 的文本提取库,支持从 PDF、图像、Office 文档等 20+ 格式中提取文本内容。采用 MIT 开源协议,具备本地处理、异步架构、智能 OCR 等特性,特别适合需要隐私保护的文档处理场景。
453 1
|
9月前
|
人工智能 文字识别 自然语言处理
Vision Parse:开源的 PDF 转 Markdown 工具,结合视觉语言模型和 OCR,识别文本和表格并保持原格式
Vision Parse 是一款开源的 PDF 转 Markdown 工具,基于视觉语言模型,能够智能识别和提取 PDF 中的文本和表格,并保持原有格式和结构。
1193 19
Vision Parse:开源的 PDF 转 Markdown 工具,结合视觉语言模型和 OCR,识别文本和表格并保持原格式
|
9月前
|
监控 JavaScript 数据可视化
建筑施工一体化信息管理平台源码,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
智慧工地云平台是专为建筑施工领域打造的一体化信息管理平台,利用大数据、云计算、物联网等技术,实现施工区域各系统数据汇总与可视化管理。平台涵盖人员、设备、物料、环境等关键因素的实时监控与数据分析,提供远程指挥、决策支持等功能,提升工作效率,促进产业信息化发展。系统由PC端、APP移动端及项目、监管、数据屏三大平台组成,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
319 7
|
11月前
|
SQL Java
使用java在未知表字段情况下通过sql查询信息
使用java在未知表字段情况下通过sql查询信息
123 8
|
12月前
|
Java BI API
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具
这篇文章介绍了如何在Spring Boot项目中整合iTextPDF库来导出PDF文件,包括写入大文本和HTML代码,并分析了几种常用的Java PDF导出工具。
2530 0
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具
|
11月前
|
人工智能 监控 数据可视化
Java智慧工地信息管理平台源码 智慧工地信息化解决方案SaaS源码 支持二次开发
智慧工地系统是依托物联网、互联网、AI、可视化建立的大数据管理平台,是一种全新的管理模式,能够实现劳务管理、安全施工、绿色施工的智能化和互联网化。围绕施工现场管理的人、机、料、法、环五大维度,以及施工过程管理的进度、质量、安全三大体系为基础应用,实现全面高效的工程管理需求,满足工地多角色、多视角的有效监管,实现工程建设管理的降本增效,为监管平台提供数据支撑。
167 3
|
11月前
|
Java 编译器 开发者
Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面
本文探讨了Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面,帮助开发者提高代码质量和程序的健壮性。
259 2