spire.pdf修改pdf内容
官方文檔位址:spire.pdf
還有一些其他的pdf操作方法(可以自己研究):
- pdfbox
- itextpdf
pom.xml添加依賴
<repositories>
<repository>
<id>com.e-iceblue</id>
<url>http://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.pdf.free</artifactId>
<version>2.6.3</version>
</dependency>
上代碼:
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.general.find.PdfTextFind;
import com.spire.pdf.general.find.PdfTextFindCollection;
import com.spire.pdf.graphics.PdfBrushes;
import com.spire.pdf.graphics.PdfRGBColor;
import com.spire.pdf.graphics.PdfSolidBrush;
import com.spire.pdf.graphics.PdfTrueTypeFont;
import java.awt.*;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
/**
* @author XWJ
* @version 1.0.0
* @ClassName PdfTest.java
* @Description TODO
* @createTime 2021年07月03日 17:23:00
*/
public class PDFUtil {
//源檔案
private static String tmeplateName = "D:\\test\\滴滴電子發票B-1.pdf";
//生成檔案
private static String newPDFPath = "D:\\test\\滴滴電子發票B-3.pdf";
public static void main(String[] args) {
getPDF00("153.88", "22.22");
System.out.println("-----END------");
}
/**
* @param oldText 需要修改的文本
* @param NewText 修改後的文本
* @return
*/
public static boolean getPDF00(String oldText, String NewText) {
PdfDocument document = new PdfDocument();
try {
//讀取檔案
document.loadFromFile(tmeplateName);
//循環每頁
for (int i = 0; i < document.getPages().getCount(); i++) {
//擷取目前頁
PdfPageBase page = document.getPages().get(i);
//查找目前頁面所有的oldText
PdfTextFindCollection textCollection = page.findText(oldText, false);
//建立黑色的畫筆
PdfSolidBrush brush = new PdfSolidBrush(new PdfRGBColor(Color.black));
//定義字型格式
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("宋體", Font.PLAIN, 9), true);
//周遊所有查找到的oldText
for (PdfTextFind find : textCollection.getFinds()) {
//擷取文本所在區域
Rectangle2D rec = find.getBounds();
//擷取文本域
Point2D position = find.getPosition();
//繪制白色矩形覆寫文本
page.getCanvas().drawRectangle(PdfBrushes.getWhite(), rec);
//填充修改後的文本到文本域
page.getCanvas().drawString(NewText, font, brush, position);
}
}
document.saveToFile(newPDFPath);
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
if (document != null) {
try {
document.close();
} catch (Exception e) {
System.out.println("document close fail!");
}
}
}
return true;
}
}