在我们的应用程序中,我们将 PDF 存储在服务器中,供用户下载。当从服务器作为字节数组检索 PDF 时,我需要将页眉和页脚添加到 PDF 中,并且我们正在使用 ITEXT API。
这是代码片段
ByteArrayOutputStream baos = new ByteArrayOutputStream(baNotes.length);
baos.write(baNotes, 0, baNotes.length);
pdfReader = new PdfReader(baNotes);
pdfStamper = new PdfStamper(pdfReader,baos);
Font font = new Font(Font.FontFamily.TIMES_ROMAN, 8, Font.BOLD);
int noteSize = pdfReader.getNumberOfPages();
logger.debug("Retrieving the total number of pages: "+ noteSize);
for(int i=1; i<= noteSize; i++) {
logger.debug("Adding footer to each notes: "+i );
PdfContentByte content = pdfStamper.getUnderContent(i);
Phrase pHeader = new Phrase(fHeader, font);
Phrase pFooter = new Phrase(fMessage+i, font);
ColumnText.showTextAligned(content, Element.ALIGN_LEFT,pHeader,60,770, 0);
ColumnText.showTextAligned(content, Element.ALIGN_LEFT,pFooter,155,20, 0);
}
pdfStamper.close();
bOutput = baos.toByteArray();
如果我使用上面的代码片段,由于坐标是固定的,因此在少数 PDF 中,页眉和页脚与现有内容重叠。
我尝试了许多示例以避免重叠,但在所有示例中,他们都在创建 PDF,但在我的场景中,PDF 已经创建并存储在服务器中。对于类似的问题,我还提供了下面 ITEXT 资源部分的链接。我也无法找到实际 PDF 内容从哪个坐标开始。
非常感谢任何关于如何前进或代码片段的建议/想法。