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));
        }
    }
相关文章
|
5月前
|
XML 人工智能 Java
java实现PDF 电子签章
本文介绍了使用Java将Word文档转换为PDF并添加水印、签名和盖章的方法。通过Apache POI读取Word内容,结合OpenPDF生成PDF文件,并利用PdfPageEvent接口实现页面水印与签名功能。代码示例清晰展示了转换流程及关键实现细节。
343 0
|
2月前
|
人工智能 缓存 自然语言处理
Java与多模态AI:构建支持文本、图像和音频的智能应用
随着大模型从单一文本处理向多模态能力演进,现代AI应用需要同时处理文本、图像、音频等多种信息形式。本文深入探讨如何在Java生态中构建支持多模态AI能力的智能应用。我们将完整展示集成视觉模型、语音模型和语言模型的实践方案,涵盖从文件预处理、多模态推理到结果融合的全流程,为Java开发者打开通往下一代多模态AI应用的大门。
353 41
|
8月前
|
人工智能 自然语言处理 算法
科研论文翻译神器!BabelDOC:开源AI工具让PDF论文秒变双语对照,公式图表全保留
BabelDOC 是一款专为科学论文设计的开源AI翻译工具,采用先进的无损解析技术和智能布局识别算法,能完美保留原文格式并生成双语对照翻译。
2321 67
科研论文翻译神器!BabelDOC:开源AI工具让PDF论文秒变双语对照,公式图表全保留
|
6月前
|
存储 安全 算法
Java 集合面试题 PDF 下载及高频考点解析
本文围绕Java集合面试题展开,详细解析了集合框架的基本概念、常见集合类的特点与应用场景。内容涵盖`ArrayList`与`LinkedList`的区别、`HashSet`与`TreeSet`的对比、`HashMap`与`ConcurrentHashMap`的线程安全性分析等。通过技术方案与应用实例,帮助读者深入理解集合类的特性和使用场景,提升解决实际开发问题的能力。文末附带资源链接,供进一步学习参考。
159 4
|
Java API Apache
Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
【10月更文挑战第29天】Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
905 5
|
9月前
|
人工智能 文字识别 自然语言处理
1.6K star!这个开源文本提取神器,5分钟搞定PDF/图片/Office文档!
Kreuzberg 是一个基于 Python 的文本提取库,支持从 PDF、图像、Office 文档等 20+ 格式中提取文本内容。采用 MIT 开源协议,具备本地处理、异步架构、智能 OCR 等特性,特别适合需要隐私保护的文档处理场景。
1015 1
|
11月前
|
人工智能 文字识别 自然语言处理
Vision Parse:开源的 PDF 转 Markdown 工具,结合视觉语言模型和 OCR,识别文本和表格并保持原格式
Vision Parse 是一款开源的 PDF 转 Markdown 工具,基于视觉语言模型,能够智能识别和提取 PDF 中的文本和表格,并保持原有格式和结构。
1456 19
Vision Parse:开源的 PDF 转 Markdown 工具,结合视觉语言模型和 OCR,识别文本和表格并保持原格式
|
11月前
|
监控 JavaScript 数据可视化
建筑施工一体化信息管理平台源码,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
智慧工地云平台是专为建筑施工领域打造的一体化信息管理平台,利用大数据、云计算、物联网等技术,实现施工区域各系统数据汇总与可视化管理。平台涵盖人员、设备、物料、环境等关键因素的实时监控与数据分析,提供远程指挥、决策支持等功能,提升工作效率,促进产业信息化发展。系统由PC端、APP移动端及项目、监管、数据屏三大平台组成,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
422 7
|
SQL Java
使用java在未知表字段情况下通过sql查询信息
使用java在未知表字段情况下通过sql查询信息
159 8
|
Java BI API
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具
这篇文章介绍了如何在Spring Boot项目中整合iTextPDF库来导出PDF文件,包括写入大文本和HTML代码,并分析了几种常用的Java PDF导出工具。
3301 0
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具