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