0

我正在使用 itext7 创建 pdf 文件,并在页脚处尝试添加 png 图像,如下所示:

PdfDocumentEvent documentEvent = (PdfDocumentEvent) event;
PdfPage page = documentEvent.getPage();
PdfCanvas canvas = new PdfCanvas(page);
byte[] signature = null; // retrieved from database
PngImageData imageData = (PngImageData) ImageDataFactory.createPng(signature);
canvas.addImageAt(imageData, 5f, 25f, false);

原始图像本身具有良好的分辨率,但是当图像添加到 pdf 时,尽管我添加的图像没有任何更改或缩放,但它看起来质量很差。

如何提高最终 pdf 的图像质量?

4

1 回答 1

0

这是我将图像添加到 PDF 的代码片段:

PdfContentByte cbLogo = writer.getDirectContent();

if (instanceSettings.getDocumentHeaderImageLocation() != null) {
    try {
        String encodedString = instanceSettings.getDocumentHeaderImageLocation();
        byte[] decodedBytes = Base64
                .getDecoder()
                .decode(encodedString);
        Image imgLogo = Image.getInstance(decodedBytes);
        imgLogo.scaleToFit(220f, 150f);
        imgLogo.setAbsolutePosition((writer.getPageSize().getWidth() / 4) - (imgLogo.getScaledWidth() / 2),
                writer.getPageSize().getHeight() - imgLogo.getScaledHeight() - 30);
        cbLogo.addImage(imgLogo);
    } catch (Exception e){
        ErrorHandler.handle(e);
    }
}

这是另一个:

    Image qr = Image.getInstance(file.getAbsolutePath());
    qr.scaleToFit(70f, 70f);
    qr.setSpacingBefore(0);
    qr.setSpacingAfter(0);
    qr.setPaddingTop(0);
    PdfPCell cell = new PdfPCell();
    cell.setPadding(0f);
    cell.setUseAscender(true);
    cell.setUseDescender(true);
    cell.addElement(qr);

图像类型:

import com.itextpdf.text.Image;

您可以使用此代码尝试一下。对我来说,两者都按预期工作,但正如我在评论中所说,我有时很难在 PDF 应用程序中查看它。据我所知,itext与它无关。

于 2020-11-04T19:08:46.787 回答