使用 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);
示例图片: 示例 Pdf:由 https://html2pdf.com/
转换为 Pdf 的简单 html它适用于生成、下载的各种 Pdf 文件,但当我将 Html 转换为 Pdf 或将文档扫描为 Pdf 时,它不起作用。
谢谢你的帮助
您添加到UnderContent:
PdfContentByte under = stamp.getUnderContent(pageOfPDF);
under.addImage(images.get(feuilletCpt < feuilletTot ? "NL" + seq : "L" + seq), true);
因此,只有在没有先前内容的地方才能看到添加。如果是扫描文件,通常会有一个页面覆盖图像,因此您在下面添加的内容是不可见的。一些 PDF 生成器首先添加一个覆盖白色矩形的页面。对于此类文件,您在下方添加的内容也不可见。
改用Overcontent:
stamp.getOverContent(pageOfPDF)
另一个可能的问题:您显示的代码没有考虑页面的坐标系。您可能需要将页面裁剪框的左下角添加到您的坐标中。