背景
PDF在办公、学习和生活中应用广泛,成为一种常见的文件格式,PDF具有以下优点:
可携带性:PDF文件可以方便地共享和传输,无论是在电脑、手机、平板还是其他设备上,都可以打开和查看。
兼容性:PDF文件在不同的软件和平台中打开时,格式和布局不会发生变化,保持一致性。
安全性:PDF文件可以设置密码保护,防止他人未经授权访问和修改,还可以进行数字签名,确保文件的真实性和完整性。
可读性:PDF文件可以设置页面布局、字体、颜色等,以保证文件的可读性和易读性。
编辑性:PDF文件可以进行注释、添加文本、图片、链接等操作,方便用户进行修改和更新。
国内的有:
极光PDF:提供多种PDF工具,包括编辑、合并、拆分、压缩、转换等。
迅捷PDF编辑器:一款功能强大的PDF编辑器,支持文本编辑、注释、添加水印等。
万兴PDF专家:提供PDF编辑、注释、表单填写、OCR识别等功能。
嗨格式PDF转换器:一款多功能PDF转换工具,支持PDF与Word、Excel、PPT等格式之间的相互转换。
福昕PDF编辑器:提供PDF编辑、注释、添加水印、合并等功能。
百度文库PDF转换器:支持PDF与Word、Excel、PPT等格式之间的相互转换,同时还提供PDF加密、解密、压缩、解压等功能。
国外的有:
Adobe Acrobat DC:Adobe公司出品的PDF阅读器和编辑器,功能强大,支持多种操作系统和平台。
Foxit Reader:Foxit公司出品的PDF阅读器和编辑器,具有多种功能和特点,支持多种操作系统和平台。
Nuance PDF Reader:Nuance公司出品的PDF阅读器,具有多种功能和特点,支持多种操作系统和平台。
Adobe Acrobat Reader DC:Adobe公司出品的PDF阅读器,具有多种功能和特点,支持多种操作系统和平台。
Sumatra PDF Reader:一款轻巧的PDF阅读器,支持多种操作系统和平台。
在工作中,有时候需要将PDF中的内容及图片中的文字进行修改替换;
或者pdf文件中包含图片,由多个图片生成的;
这个时候这些软件就不能很好的识别和修改pdf文件的文字和字体了。
我们可以通过如下三个步骤修改pdf的文件:
1、将pdf文件生成图片
这里通过java编写一个小工具类将pdf文件生成图片
引入依赖
<!-- iText-->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.10</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.54</version>
</dependency>
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>2.1.7</version>
</dependency>
编写工具类:生成图片
import com.spire.pdf.*;import javax.imageio.ImageIO;import java.awt.image.BufferedImage;import java.io.File;public class ExtractImg {public static void main(String[] args) throws Exception{//加载测试文档PdfDocument pdf = new PdfDocument();pdf.loadFromFile("D:\\temp\\MSDS.pdf");//定义一个int型变量int index = 0;//遍历PDF每一页for (int i= 0;i< pdf.getPages().getCount(); i ++){//获取PDF页面PdfPageBase page = pdf.getPages().get(i);//使用extractImages方法获取页面上图片for (BufferedImage image : page.extractImages()) {System.out.println(">>>>>>>");//指定输出图片名称File output = new File( String.format("D:\\temp\\00Image_%d.png", index++));//将图片保存为PNG格式文件ImageIO.write(image, "PNG", output);}}}}
生成的图片:

2、修改图片文字
通过PS、画图工具等软件对图片文字进行修改

3、编写程序将多个图片生成pdf
import com.itextpdf.text.Document;import com.itextpdf.text.Image;import com.itextpdf.text.Rectangle;import com.itextpdf.text.pdf.PdfWriter;import java.io.File;import java.io.FileOutputStream;/*** @author yabushan* @version v1.0* @project: 公众号:小南瓜开发平台* @description: 这里描述类的用处* @copyright: © 2023* @company:* @date 2018/5/16 14:23*/public class PdfUtil {private static String FILEPATH = "D:\\temp\\tt\\";/**** @param fileName* 生成pdf文件* @param imagesPath* 需要转换的图片路径的数组*/public static void imagesToPdf(String fileName, String imagesPath) {try {fileName = FILEPATH+fileName+".pdf";File file = new File(fileName);// 第一步:创建一个document对象。Document document = new Document();document.setMargins(0, 0, 0, 0);// 第二步:// 创建一个PdfWriter实例,PdfWriter.getInstance(document, new FileOutputStream(file));// 第三步:打开文档。document.open();// 第四步:在文档中增加图片。File files = new File(imagesPath);String[] images = files.list();int len = images.length;for (int i = 0; i < len; i++){if (images[i].toLowerCase().endsWith(".bmp")|| images[i].toLowerCase().endsWith(".jpg")|| images[i].toLowerCase().endsWith(".jpeg")|| images[i].toLowerCase().endsWith(".gif")|| images[i].toLowerCase().endsWith(".png")) {String temp = imagesPath + "\\" + images[i];Image img = Image.getInstance(temp);img.setAlignment(Image.ALIGN_CENTER);// 根据图片大小设置页面,一定要先设置页面,再newPage(),否则无效document.setPageSize(new Rectangle(img.getWidth(), img.getHeight()));document.newPage();document.add(img);}}// 第五步:关闭文档。document.close();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}public static void main(String[] args){String name = "20001543";String imagesPath = "D:\\temp\\tt\\";imagesToPdf(name, imagesPath);}}
原文作者:小南瓜开发平台;如有侵权,请联系管理员删除。