gpt4 book ai didi

java - 如何向现有 PDF 添加注释

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:56:20 25 4
gpt4 key购买 nike

我拥有添加标题、内容、pageNo 和坐标值注释的日期。我想使用这些数据向现有 PDF 添加注释。我尝试使用 pdfbox(Java) 向现有 PDF 添加注释。我可以在插入现有页面最后一部分的新页面上添加注释,但我无法向现有页面添加注释,因为无法理解如何访问现有页面以及如何在页面上添加注释。

下面是我的代码。请解决它。

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.List;

import org.apache.pdfbox.exceptions.COSVisitorException;
import org.apache.pdfbox.pdfparser.PDFParser;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationTextMarkup;

public class Sample{
private String forannot[][];
Sample(String[][] forannot){
this.forannot = forannot;
}
public void tryaddannot() throws FileNotFoundException, IOException{
PDFParser pps = new PDFParser(new FileInputStream(Filepath);
pps.parse();
PDDocument docs = pps.getPDDocument();

try{
//insert new page
PDPage pages = new PDPage();
docs.addPage(pages);
List<PDAnnotationTextMarkup> annotations = pages.getAnnotations();

//generate instanse for annotation
PDAnnotationTextMarkup txtMark = new PDAnnotationTextMarkup(PDAnnotationTextMarkup.SUB_TYPE_HIGHLIGHT);

//set the rectangle
PDRectangle position = new PDRectangle();
position.setLowerLeftX(170);
position.setLowerLeftY(125);
position.setUpperRightX(195);
position.setUpperRightY(140);
txtMark.setRectangle(position);

//set the quadpoint
float[] quads = new float[8];
//x1,y1
quads[0] = position.getLowerLeftX();
quads[1] = position.getUpperRightY()-2;
//x2,y2
quads[2] = position.getUpperRightX();
quads[3] = quads[1];
//x3,y3
quads[4] = quads[0];
quads[5] = position.getLowerLeftY()-2;
//x4,y4
quads[6] = quads[2];
quads[7] = quads[5];
txtMark.setQuadPoints(quads);
txtMark.setContents("Highlighted since it's important");
annotations.add(txtMark);
docs.save(Filepath);
} catch (COSVisitorException e) {
e.printStackTrace();
}
finally
{
docs.close();
}
}
}

最佳答案

要向现有页面添加注释,请执行以下操作:

    PDPage page = (PDPage) doc.getDocumentCatalog().getAllPages().get(0);
try
{
List<PDAnnotation> annotations = page.getAnnotations();

您的代码主要适用于 1.8,很难看到注释。一些代码错误:

改变

PDFParser pps = new PDFParser(new FileInputStream(Filepath);

PDFParser pps = new PDFParser(new FileInputStream(Filepath));

和改变

  List<PDAnnotationTextMarkup> annotations = pages.getAnnotations();

  List<PDAnnotation> annotations = pages.getAnnotations();

此外,最好这样获取您的文档:

PDDocument doc = PDDocument.loadNonSeq(new File(...), null);

要查看注释的位置,请在 Adob​​e Reader 的最后一页上单击“评论”、“评论列表”。要使注释更明显,请添加以下内容:

        PDGamma colourBlue = new PDGamma();
colourBlue.setB(1);
txtMark.setColour(colourBlue);

关于java - 如何向现有 PDF 添加注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34302089/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com