我想將標題添加到現有的PDF文件。它可以工作,但現有PDF中的表格標題會因字體更改而混亂。如果我刪除設置字體,那麼標題不顯示。這裏是我的代碼:使用PDFBox將標題添加到現有的PDF文件
// the document
PDDocument doc = null;
try
{
doc = PDDocument.load(file);
List allPages = doc.getDocumentCatalog().getAllPages();
//PDFont font = PDType1Font.HELVETICA_BOLD;
for(int i=0; i<allPages.size(); i++)
{
PDPage page = (PDPage)allPages.get(i);
PDRectangle pageSize = page.findMediaBox();
PDPageContentStream contentStream = new PDPageContentStream(doc, page, true, true,true);
PDFont font = PDType1Font.TIMES_ROMAN;
float fontSize = 15.0f;
contentStream.beginText();
// set font and font size
contentStream.setFont(font, fontSize);
contentStream.moveTextPositionByAmount(700, 1150);
contentStream.drawString(message);
contentStream.endText();
//contentStream.
contentStream.close();}
doc.save(outfile);
}
finally
{
if(doc != null)
{
doc.close();
}
}
}`
*現有PDF中的表頭被搞亂* - 它們到底有多混亂? – mkl
使用的字體使表頭不可讀。對於例如表格標題曾經是PMITS Asset ID,並且在添加標題後讀取爲:3 0,7 6 $ V V H W.一些gibrish字符。 –
所以你的源PDF或PDFBox是越野車。不幸的是,我已經認識到PDFBox代碼中可能導致您的問題的一個問題:頁面不一定有自己的資源池,但可以從頁面樹中的祖先繼承它。另一方面,PDPageContentStream忽略這樣的繼承資源,並在這種情況下爲頁面創建一個新的空白資源池。因此,在這種情況下遺失的字體信息會丟失。這可能會導致你的gibrish。請提供有問題的PDF以驗證這個PDFBox錯誤是否確實是您觀察到的問題。 – mkl