0

在我们的应用程序中,我们将 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 内容从哪个坐标开始。

为什么我的标题与我的内容重叠

非常感谢任何关于如何前进或代码片段的建议/想法。

4

0 回答 0