PDF ドキュメントを編集してフォーム エントリを事前入力しようとしています。私はそれを機能させました(一種の)。私が追加しているテキストはうまくいきます。ただし、既に存在していた他のテキストは「&%£!£! 記号に置き換えられたようです。以下のコードの「contentStream」セクションと関係があることがわかりました。「 setFont" 行。これを削除しても、ページは問題ありません...ただし、"Hello Richard" というテキストは表示されなくなります。
助けてください!
package pdfboxtest;
import java.awt.Color;
import java.util.List;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.edit.PDPageContentStream;
public class PDFFormFiller {
private static final String R40_NEW_FORM_PATH = "c:\\temp\\hmrc-r40.pdf";
private static final String R40_COMPLETED_FORM_PATH = "c:\\temp\\hmrc-r40-complete.pdf";
public static void main(String[] args) throws Exception {
PDDocument doc = PDDocument.load(R40_NEW_FORM_PATH);
addTextToPage(doc);
doc.save(R40_COMPLETED_FORM_PATH);
doc.close();
}
private static void addTextToPage(PDDocument doc) throws Exception {
List pages = doc.getDocumentCatalog().getAllPages();
PDPage firstPage = (PDPage) pages.get(0);
PDPageContentStream contentStream = new PDPageContentStream(doc, firstPage, true, true);
contentStream.setFont(PDType1Font.HELVETICA_BOLD, 24);
contentStream.beginText();
contentStream.setNonStrokingColor(Color.BLACK);
contentStream.moveTextPositionByAmount(100, 200);
contentStream.drawString("HELLO RICHARD!!");
contentStream.endText();
contentStream.close();
}
}