【问题标题】:iText5 PDF content getting overridden on FooteriText5 PDF 内容在页脚上被覆盖
【发布时间】:2016-09-01 15:17:11
【问题描述】:

我正在使用 iText5 和 Java 来创建 pdf 并将文档创建为

document = new Document(new Rectangle(1150f, 1150f));

我的 pdf 内容被页脚(图片)覆盖。

页脚代码:

public void onEndPage(PdfWriter writer, Document document) {    
        document.newPage();
        try {           
            ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_CENTER, new Phrase(String.format("Page %d", writer.getPageNumber())), (document.left() + document.right())/2,document.bottom()-18,0);            
            Image image = Image.getInstance(PdfHeaderFooter.class.getResource("/static/images/SampleFooter.png"));
            image.scaleAbsolute(1100f, 75f);// image width,height
            image.setAbsolutePosition(30, 40);
            document.add(image);                           
        }
        catch(DocumentException de) {
            throw new ExceptionConverter(de);
        } catch (MalformedURLException e) { 
            logger.error(ExceptionUtils.getStackTrace(e));  
        } catch (IOException e) {
            logger.error(ExceptionUtils.getStackTrace(e));  
        }
    }

此外,一些搜索建议margin solution。设置边距,但我无法找到设置边距或任何其他解决方案的确切位置。

请帮忙,当内容超出 pdf 区域并且不与页脚图像重叠时,我应该如何创建新页面。

【问题讨论】:

  • 请接受@mkl 的回答,因为他是对的。阅读您的代码,很明显您没有阅读任何文档。你的代码完全错误!

标签: java itext


【解决方案1】:

您的代码中有多个问题。

newPage()期间onEndPage()

在页面更改期间调用事件回调onEndPage();因此,在该方法中调用document.newPage() 可能是危险的,至少是毫无意义的。

document.add期间onEndPage()

正如 iText 所记录的并且在 stackoverflow 上的答案和 cmets 中经常提到的那样,您不得在 onEndPage() 期间使用 document.add

您可以绘制到直接内容 (PdfWriter.getDirectContent()) 或背景内容 (PdfWriter.getDirectContentUnder())。

坐标

您使用以下方法创建Document

document = new Document(new Rectangle(1150f, 1150f));

此构造函数应用 36 个单位的默认边距:

public Document(Rectangle pageSize) {
    this(pageSize, 36, 36, 36, 36);
}

因此,您的内容将写入 36

现在你像这样添加你的图像

image.scaleAbsolute(1100f, 75f);// image width,height
image.setAbsolutePosition(30, 40);

图片位置是图片的左下角。因此,您打算在 30

因此,图像显然会与部分内容重叠。向下移动图像或使用具有足够大底部边距的显式边距。

【讨论】:

  • 非常感谢。您说得对,实际上在页面末尾添加newPage是没有用的,并且是错误添加的。我会按照你的建议调整坐标。
猜你喜欢
  • 2015-09-02
  • 2015-08-26
  • 1970-01-01
  • 1970-01-01
  • 2020-12-24
  • 2019-01-17
  • 1970-01-01
  • 2011-12-13
  • 1970-01-01
相关资源
最近更新 更多