簡體   English   中英

使用JAVA的PDF批注

[英]PDF Annotations using JAVA

我一直在嘗試使用iText API和較早的Lowagie版本將注釋添加到現有的PDF中。 但是,我需要API的替代方法,因為它似乎無法滿足我們的要求。

要求是將批注放入具有以下詳細信息的現有PDF中:

  • 類型:純文本
  • 位置:x = 0mm && y = 0mm
  • 字體:Arial
  • 文字顏色:白色
  • 文字內容:“一些文字”

使用iText,我可以添加注釋,但是我需要在A4尺寸頁面中應放置的像素中近似。 最接近的近似使用

    PdfReader reader = new PdfReader(headerFilePath.concat(xmlFileName));
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(headerFilePath.concat(xmlFileNameNew)));
    PdfAnnotation annotation = PdfAnnotation.createText(stamper.getWriter(), new Rectangle(0, 842, 5, 842), "some text", "some text", true, null);
    annotation.setColor(Color.WHITE);
    stamper.addAnnotation(annotation, 1);
    reader.close();
    stamper.close();

此代碼段將其放在左上角,但我不確定它是否為0mm,0mm。 而且它是黑色的,我無法指定字體。

非常感謝對此事的任何幫助。 謝謝!

您可以嘗試豐富的文本annotions描述在這里

annotation.put(PdfName.RC, new PdfString( "<font size=\"whatever\">" + 
                                      some text+ 
                                      "</font>" ) );
myStamper.setGenerateAppearances( false );

但是我懷疑這是您所需要的。 如果添加外觀,則會在左上角獲得一個矩形圖標。 如果您將鼠標懸停在其上,則可以彈出形式閱讀注釋。 而且即使注釋文字的字體顏色為白色,也無法隱藏注釋本身的矩形圖標...

您想要一種白色字體顏色,它表示您要“傳輸”一些隱藏的信息(白色背景上的白色)。 也許在這種情況下,您可以使用以下機制(通常用於添加水印等):

String text;
int pageNumber

PdfContentByte overContent = stamper.getOverContent(pageNumber);

overContent.beginText();
overContent.setFontAndSize(yourFont, yourFontSize);
//overContent.setGrayFill(...);
overContent.showTextAligned(PdfContentByte.ALIGN_CENTER, yourText + " Center", 150, 760, 0);
overContent.endText();

更新 :要將注釋設置為不可見,請添加到您的代碼中:

annotation.setColor(Color.WHITE);
//set visibility to 0 (invisble). All values between 0...1 are possible
//so 0.5 means 50% opacity
annotation.put(PdfName.CA, new PdfNumber(0));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM