复制页面时,iText会复制/弹出注释

当使用以下代码复制带注释的页面时,iText 7.1.0复制/Popup注释,“原始”和副本之间的唯一区别是,一个具有/Parent条目而另一个没有。

不幸的是,没有丢失/Parent那个被注册在/Page字典的/Annots列表中。 如何让iText不复制注释或至少注册带有/Parent条目的注释? 对奇怪行为的任何解释?

 import com.itextpdf.kernel.pdf.*; import java.io.IOException; public class CopyPdfTest { public static void main(String[] args) throws IOException { PdfDocument inputDoc = new PdfDocument(new PdfReader("input.pdf")); PdfWriter writer = new PdfWriter("output.pdf"); writer.setCompressionLevel(0); PdfDocument outputDoc = new PdfDocument(writer); for (int i = 1; i <= inputDoc.getNumberOfPages(); i++) { inputDoc.copyPagesTo(i, i, outputDoc); } inputDoc.close(); outputDoc.close(); } } 

input.pdf

 %PDF-1.4 %âãÏÓ 5 0 obj <> endobj 6 0 obj <> stream 1.000 0.000 0.000 RG 2 w 0 J 0 j 116.975 694.768 61.534 132.115 re S endstream endobj 4 0 obj << /Subtype /Square /RD [0 0 0 0] /RC (

test

) /T (thw) /Contents (test) /Rect [115.975 693.768 179.508 827.883] /CA 1 /P 3 0 R /M (D:20180107100342+01'00') /Type /Annot /NM (fd33d765-e844-4226-aff8-3ef81361e787) /F 4 /BS <> /AP <> /C [1 0 0] /Popup 5 0 R /Subj (Rectangle) /CreationDate (D:20180107100338+01'00') >> endobj 8 0 obj <> endobj 7 0 obj <> endobj 9 0 obj <> stream q 0.1 0 0 0.1 0 0 cm /R7 gs Q endstream endobj 3 0 obj << /pdftk_PageNum 1 /Annots [4 0 R 5 0 R] /Resources <> /Type /Page /Parent 1 0 R /Contents 9 0 R /MediaBox [0 0 595 842] >> endobj 1 0 obj <> endobj 11 0 obj <> endobj 12 0 obj <> endobj xref 0 13 0000000000 65535 f 0000001472 00000 n 0000000000 65535 f 0000001293 00000 n 0000000460 00000 n 0000000015 00000 n 0000000220 00000 n 0000001177 00000 n 0000001130 00000 n 0000001210 00000 n 0000000000 65535 f 0000001531 00000 n 0000001583 00000 n trailer << /Info 12 0 R /ID [] /Root 11 0 R /Size 13 >> startxref 1779 %%EOF

输出.pdf

10 0 obj11 0 obj是重复的弹出窗口。

 %PDF-1.7 %âãÏÓ 5 0 obj <>stream q 0.1 0 0 0.1 0 0 cm /R7 gs Q endstream endobj 4 0 obj <</Annots[8 0 R 11 0 R]/Contents 5 0 R/MediaBox[0 0 595 842]/Parent 2 0 R/Resources<>/Type/Page/pdftk_PageNum 1>> endobj 1 0 obj <> endobj 3 0 obj <> endobj 2 0 obj <> endobj 6 0 obj <> endobj 7 0 obj <> endobj 8 0 obj <</AP<>/BS<>/C[1 0 0]/CA 1/Contents(test)/CreationDate(D:20180107100338+01'00')/F 4/M(D:20180107100342+01'00')/NM(fd33d765-e844-4226-aff8-3ef81361e787)/P 4 0 R/Popup 10 0 R/RC(

test

)/RD[0 0 0 0]/Rect[115.975 693.768 179.508 827.883]/Subj(Rectangle)/Subtype/Square/T(thw)/Type/Annot>> endobj 9 0 obj <>stream 1.000 0.000 0.000 RG 2 w 0 J 0 j 116.975 694.768 61.534 132.115 re S endstream endobj 10 0 obj <> endobj 11 0 obj <> endobj xref 0 12 0000000000 65535 f 0000000253 00000 n 0000000455 00000 n 0000000298 00000 n 0000000092 00000 n 0000000015 00000 n 0000000506 00000 n 0000000535 00000 n 0000000576 00000 n 0000001204 00000 n 0000001429 00000 n 0000001618 00000 n trailer <</ID []/Info 3 0 R/Root 1 0 R/Size 12>> %iText-7.1.0 startxref 1794 %%EOF