天天看點

spire.pdf修改pdf内容

spire.pdf修改pdf内容

官方文檔位址:spire.pdf

還有一些其他的pdf操作方法(可以自己研究):

  1. pdfbox
  2. 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;
    }
}