我一直在嘗試編輯PDF文檔來預填表單條目。我有它的工作(有點)。我添加的文字沒有問題。然而,其他已經存在的文本似乎已經被替換爲「&%!!」符號,我已經發現它與下面代碼中的「contentStream」部分有關,它似乎是「 setfont程序」行。如果我刪除它,頁面仍OK ......除了 「你好理查德」 文本將不再顯示!PDFBox加擾文本
請幫助!
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();
}
}
Longshot,但你有沒有嘗試從系統中加載字體就像這樣? PDFont font = PDTrueTypeFont.loadTTF(document,「C:\\ Windows \\ Fonts \\ segoepr.ttf」); – Levenal
這絕對值得刺!謝謝,但沒有運氣:-( –
這可能是由於PDFBox的問題,我描述了一種解決方法[本答案](http://stackoverflow.com/questions/19322553/adding-header-to-existing-pdf -Field-using-pdfbox/19512650#19512650)。 – mkl