使用 itextPDF 将 HTML 转换为 PDF 时出现图像问题

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

我正在使用 itextPDF 将 html 转换为 pdf,一切都按预期工作,但对于转换为 pdf 后的 GIF 图像之一,仅显示图像的骨架。这是一个静态 GIF 图像,不是动画图像,只是具有透明背景和中心图像的图像。当我通过其他具有透明背景的 GIF 图像运行代码时,它会按预期工作。我正在使用下面的代码将 HTML 转换为 PDF。我已附上该问题的示例图片。sample image

    PdfWriter writer = new PdfWriter(inMemoryStream);
    PdfDocument pdf = new PdfDocument(writer);
    PdfMerger merger = new PdfMerger(pdf);
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    PdfDocument temp = new PdfDocument(new PdfWriter(baos));
    HtmlConverter.convertToPdf(test, temp, converterProperties);
    temp = new PdfDocument(new PdfReader(new ByteArrayInputStream(baos.toByteArray())));
    merger.merge(temp, 1, temp.getNumberOfPages());
    temp.close();
    pdf.close();
    inMemoryStream.close();
java html pdf itext file-conversion
1个回答
0
投票
import com.itextpdf.html2pdf.ConverterProperties;
import com.itextpdf.html2pdf.HtmlConverter;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfMerger;
import com.itextpdf.kernel.pdf.PdfWriter;

    

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;

public class HtmlToPdfConverter {

    public static void main(String[] args) {
        // Replace "test" with your HTML content as a String
        String htmlContent = "<html><body><p>Your HTML content here</p></body></html>";

        try {
            ByteArrayOutputStream inMemoryStream = new ByteArrayOutputStream();
            PdfWriter writer = new PdfWriter(inMemoryStream);
            PdfDocument pdf = new PdfDocument(writer);
            PdfMerger merger = new PdfMerger(pdf);
            ConverterProperties converterProperties = new ConverterProperties();

            // Add your custom properties if needed
            // converterProperties.set...

            // Convert HTML to PDF
            InputStream htmlInputStream = new ByteArrayInputStream(htmlContent.getBytes());
            HtmlConverter.convertToPdf(htmlInputStream, pdf, converterProperties);

            // Close the PDF and perform further operations
            pdf.close();

            // Now you can work with the generated PDF in 'inMemoryStream'
            // ...

            inMemoryStream.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.