gpt4 book ai didi

java - 将 pdf 文件复制到另一个文件时添加注释

转载 作者:行者123 更新时间:2023-12-01 18:18:44 24 4
gpt4 key购买 nike

我正在尝试向复制到新 pdf 的每个页面添加注释,但无法做到这一点...

这是我的代码。

import com.lowagie.text.Document;
import com.lowagie.text.Rectangle;
import com.lowagie.text.pdf.*;

import java.awt.*;
import java.io.FileOutputStream;


public class Annotations {

public static void main(String[] args) {

try {

PdfReader reader = new PdfReader("string-to-pdf.pdf");
Document document = new Document(reader.getPageSizeWithRotation(1));
PdfCopy copy = new PdfCopy(document,
new FileOutputStream("temp.pdf"));
copy.setPdfVersion(PdfWriter.VERSION_1_5);
document.open();
for(int i = 1; i <=reader.getNumberOfPages();i++){
copy.addPage(copy.getImportedPage(reader,i));
copy.addAnnotation(PdfAnnotation.createLink(copy, new Rectangle(200f, 700f, 30455454f, 800f), PdfAnnotation.HIGHLIGHT_TOGGLE, PdfAction.javaScript("app.alert('Hello');\r", copy)));
}

document.newPage();
// page 3
PdfContentByte pcb = new PdfContentByte(copy);
pcb.setColorFill(new Color(0xFF, 0x00, 0x00));

document.close();

} catch (Exception de) {
de.printStackTrace();
}
}
}

正在复制文件,但看不到新文件中的注释。

最佳答案

PdfCopy 用于忠实的页面复制,而不是用于创建;因此,从 PdfWriter 继承的修改例程被禁用,例如

@Override
public void addAnnotation(PdfAnnotation annot) { }

不过,可以通过页面标记进行专门的操作,参见。 创建PageStamp。该方法的 JavaDocs 包含一些示例使用代码,包括添加的注释:

PdfImportedPage page = copy.getImportedPage(reader, 1);
PdfCopy.PageStamp ps = copy.createPageStamp(page);
ps.addAnnotation(PdfAnnotation.createText(copy, new Rectangle(50, 180, 70, 200), "Hello", "No Thanks", true, "Comment"));
PdfContentByte under = ps.getUnderContent();
under.addImage(img);
PdfContentByte over = ps.getOverContent();
over.beginText();
over.setFontAndSize(bf, 18);
over.setTextMatrix(30, 30);
over.showText("total page " + totalPage);
over.endText();
ps.alterContents();
copy.addPage(page);

但请注意,像这样应用 PageStamp 实际上会操作原始的 PdfReader。因此,之后不要继续使用 PdfReader 实例,假设其内容是原始内容,特别是经过页戳的复制页面是脏的。

关于java - 将 pdf 文件复制到另一个文件时添加注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60317390/

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