У меня есть дата для добавления аннотации, чтобы заголовок & содержание & pageNo & Значение координаты. Я хочу добавить аннотацию к существующему PDF, используя эти данные. Я попытался добавить аннотацию к существующему PDF, используя pdfbox (Java). Я мог бы добавить новую страницу аннотации, которая была вставлена в последнюю часть существующей страницы, но я не могу добавить аннотацию к существующим страницам из-за того, что не могу понять, как получить доступ к существующим страницам и как добавить аннотацию к странице.Как добавить аннотацию к существующему PDF
Ниже приведен мой код. Pls разрешает его.
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();
}
}
}
спасибо !! Я мог прорваться таким путем! – Mycee
Это не работа в PDFBox 2 :(-> setColor (PDColor c) и т. Д. – MGM
@MGM. Пожалуйста, смотрите здесь для версии 2.0: https://svn.apache.org/viewvc/pdfbox/branches/ 2.0/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/AddAnnotations.java? View = markup В этом примере показано, как добавлять аннотации и устанавливать цвет и т. Д. Если у вас есть дополнительные проблемы, создайте новый вопрос –