无法将图像添加到扫描的 Pdf 或从 Html 转换的 Pdf

问题描述 投票:0回答:1

使用 iText (com.lowagie.itext.2.1.7),我有这段代码可以向 Pdf 添加一点图像。我使用简单的 Pdf 文件,但当我从 Html 创建 Pdf 或当 Pdf 是扫描文档时则不会。

private final Map<String, Image> images = new HashMap<String, Image>();

images.put("NL" + i, getBlackAndWhiteBarCode("/img/NotLast0" + i + ".png", posX, posY));
images.put("L" + i, getBlackAndWhiteBarCode("/img/Last0" + i + ".png", posX, posY));

public Image getBlackAndWhiteBarCode(String filename, float posX, float posY) throws IOException, DocumentException {
    Image im = Image.getInstance(this.getClass().getResource(filename));
    im.setOriginalType(Image.ORIGINAL_PNG);
    im.setAbsolutePosition(posX, posY);
    im.scalePercent(25);
    return im;
}

...

PdfContentByte under = stamp.getUnderContent(pageOfPDF);
under.addImage(images.get(feuilletCpt < feuilletTot ? "NL" + seq : "L" + seq), true);

示例图片:enter image description here 示例 Pdf:由 https://html2pdf.com/

转换为 Pdf 的简单 html

它适用于生成、下载的各种 Pdf 文件,但当我将 Html 转换为 Pdf 或将文档扫描为 Pdf 时,它不起作用。

谢谢你的帮助

java itext
1个回答
0
投票

您添加到UnderContent

PdfContentByte under = stamp.getUnderContent(pageOfPDF);
under.addImage(images.get(feuilletCpt < feuilletTot ? "NL" + seq : "L" + seq), true);

因此,只有在没有先前内容的地方才能看到添加。如果是扫描文件,通常会有一个页面覆盖图像,因此您在下面添加的内容是不可见的。一些 PDF 生成器首先添加一个覆盖白色矩形的页面。对于此类文件,您在下方添加的内容也不可见。

改用Overcontent

stamp.getOverContent(pageOfPDF)


另一个可能的问题:您显示的代码没有考虑页面的坐标系。您可能需要将页面裁剪框的左下角添加到您的坐标中。

© www.soinside.com 2019 - 2024. All rights reserved.