I am using itextpdf html2pdf tool to implement freemarker template to generate pdf
Refer to the official documentation link: https://kb.itextpdf.com/home/it7kb/ebooks/itext-7-converting-html-to-pdf-with-pdfhtml/chapter-7-frequently-asked-questions-about-pdfhtml/can-pdfhtml-render-base64-images-to-pdf
The front end uses echarts to convert the image to base64.
The picture can be displayed clearly on the browser, but after the pdf is generated, the picture becomes blurry.
Refer to html and pdf image comparison:
public static void main(String[] args) throws Exception{
File file = FileUtil.newFile("D:/test.html");
BufferedOutputStream outputStream = FileUtil.getOutputStream("D:/test.pdf");
BufferedInputStream inputStream = FileUtil.getInputStream(file);
ConverterProperties converterProperties=new ConverterProperties();
FontProvider fontProvider=new DefaultFontProvider();
FontProgram fontProgram = FontProgramFactory.createFont(Constant.CONFIG_PATH+File.separator+"simsun.ttc,1");
fontProvider.addFont(fontProgram);
MediaDeviceDescription mediaDeviceDescription = new MediaDeviceDescription(MediaType.SCREEN);
mediaDeviceDescription.setResolution(2000f);
converterProperties.setFontProvider(fontProvider);
converterProperties.setMediaDeviceDescription(mediaDeviceDescription);
PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outputStream));
pdfDoc.setDefaultPageSize(new PageSize(1000,1700));
HtmlConverter.convertToPdf(inputStream,pdfDoc,converterProperties);
}