当前位置: 首页 > 知识库问答 >
问题:

iText-使用图像呈现页面底部的段落

古起运
2023-03-14

我正在使用iText 2.1.7。在我生成的文档的最后一页上,我有一个签名段落,我总是希望在最后一页的底部呈现。

我将所有文本捆绑到一个段落中,然后将其全部放在一个单元格表中,并使用PDFWriter将其写入页面上的固定位置。段落中的文本显示得很好,但图像未包含在内。

当我直接将段落本身添加到报告中时,图像渲染效果很好,但我没有这里需要的定位控制。

下面是代码片段:

    private void addSignatureAndContactInformationAndParagraphThree() throws DocumentException {
    Font bold = FontFactory.getFont(FontFactory.HELVETICA_BOLD, PDFReportUtils.SIGNATURE_NAME_FONT_SIZE);
    Font regular = FontFactory.getFont(FontFactory.HELVETICA, PDFReportUtils.BODY_FONT_SIZE);

    Chunk kindRegards = new Chunk("Kind regards,\n", regular);
    Chunk companyName = new Chunk(getReport().getCompanyName() + "\n", regular);
    Chunk author = new Chunk(getReport().getReportAuthor() + "\n", bold);
    Chunk email = new Chunk(getReport().getReportAuthorEmail() + "\n", regular);
    Chunk phone = new Chunk(getReport().getReportAuthorPhone() + "\n\n", regular);

    PdfPTable singleCellTable = new PdfPTable(1);
    singleCellTable.setTotalWidth((getPdfDocument().right(getPdfDocument().rightMargin())
            - getPdfDocument().left(getPdfDocument().leftMargin())) + 300f);
    PdfPCell singleCell = new PdfPCell();
    singleCell.setBorder(Rectangle.NO_BORDER);

    Paragraph signatureImageBlock = new Paragraph();
    signatureImageBlock.add(kindRegards);
    if(getSignatureImage() != null)
    {
        signatureImageBlock.add(getSignatureImage());
    }
    signatureImageBlock.add(companyName);
    signatureImageBlock.add(author);
    signatureImageBlock.add(email);
    signatureImageBlock.add(phone);
    signatureImageBlock.add(getParagraphThree());

    singleCell.addElement(signatureImageBlock);
    singleCellTable.addCell(singleCell);

    singleCellTable.writeSelectedRows(0, -1,
            getPdfDocument().left(getPdfDocument().leftMargin()) - 45f,
            singleCellTable.getTotalHeight() + getPdfDocument().bottom(getPdfDocument().bottomMargin()),
            writer.getDirectContent());
}

getSignatureImage()检查用户是否配置了签名图像,然后从硬盘驱动器中配置了图像(这是返回语句):

return Image.getInstance(signatureImagePath);

你知道为什么它会把所有的文本都渲染得很好,但根本不包括图像吗?我已经对此进行了调试,以确保它从getSignatureImage()返回图像

共有1个答案

梁巴英
2023-03-14

找到问题了。我需要将图像添加到一个块中才能正确渲染!希望这对其他人有所帮助。

Chunk signatureImage = new Chunk(getSignatureImage(), 0, 0, true);
        signatureImageBlock.add(signatureImage);
 类似资料:
  • 问题内容: 我想在PDF文件的每一页中添加一段文字。这样的答案很好。但是,文本将添加到页面顶部。我想在每页底部添加我的文字。我该怎么做呢? 这是代码的相关部分。 该代码是功能的一部分,该功能接受一个文件夹,读取其中的PDF文件,然后将它们合并为一个文件。因此,我想在上述循环本身中添加文本,而不是再次迭代文件。 问题答案: 请参阅《 iText in Action,第二版》的第6章,尤其是在6.4.

  • 这是我的HTML: 这是我的CSS,仅用于页脚:

  • 我目前正在尝试将一个图像呈现给JPanel。下面是我的代码: 在JFrame加载之后调用“initCode()”方法。我现在的问题是,我想调用“renderImage()”方法。在参数中,我必须放入“graphics g”来使用“g.drawimage”函数。遗憾的是,当我想调用“renderImage()”时,我现在不知道应该在括号中放些什么。有人能帮忙吗?

  • 我要求在JSF2.2页面上输入2个输入值。我们正在使用Primefaces控件。然后通过h:command按钮将这些值提交给托管bean方法。 然后,基于这些值,我想将同一JSF页面上的一个单独的输出字段设置为一个特定的值。 因此,我目前的问题是尝试连接一个托管bean,以便它将一个值返回到我的JSF页面上的字段,在本例中,字段名是mgrs。主要的问题是,我要处理的是生成返回值的第三方库,我不确定

  • 我正在使用PhantomJS进行网页截图。 我看到过其他关于@font-face问题的帖子,但我页面上的字体呈现正确。我唯一的问题是,每次截图时,字体显示与前一个截图略有不同。所以尽管他们的渲染是正确的,但他们在截图上的外观是不一致的。 我已经尝试了许多修复,大多数都是基于这样的假设,即这与页面准备好之前拍摄的截图有关,但这似乎不是问题所在。例如,我已经延迟了截图,以便字体有时间加载和呈现,但这并

  • 问题内容: 我正在使用Selenium和Google Chrome驱动程序以编程方式打开页面。在每个页面上都有一个动态生成的图像,我想下载该图像。目前,我正在等待页面完成加载,然后获取图像URL并使用System.Net.WebClient下载。 除我要下载图像两次(在浏览器中一次,使用WebClient一次)外,一切正常。问题在于每个图像大约有15MB,并且两次下载很快就累加了。 那么-是否可以