blog.csdn.net/lhl10254626… 解决办法: 1.禁止pdf预览 2.把pdf转成图片然后预览
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.27</version> <!-- 请根据需要选择最新版本 -->
</dependency>
package com.zzyt.web.util;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Image;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.rendering.PDFRenderer;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
public class PdfXssChecker {
public static byte[] convertPdfToImagesAndBack(byte[] inputPdfBytes) {
ByteArrayOutputStream outputPdfStream = new ByteArrayOutputStream();
try (PDDocument document = PDDocument.load(new ByteArrayInputStream(inputPdfBytes))) {
PDFRenderer pdfRenderer = new PDFRenderer(document);
Document doc = new Document();
PdfWriter.getInstance(doc, outputPdfStream);
doc.open();
int dpi = 300; // 设置DPI为300以获得高质量的图像
for (int page = 0; page < document.getNumberOfPages(); ++page) {
PDPage pdPage = document.getPage(page);
PDRectangle pageSize = pdPage.getCropBox().createRetranslatedRectangle();
BufferedImage bim = pdfRenderer.renderImageWithDPI(page, dpi); // 渲染每一页到BufferedImage对象
// 创建一个新的Document页面,使其与原始PDF页面相同
doc.setPageSize(new com.itextpdf.text.Rectangle(pageSize.getWidth(), pageSize.getHeight()));
doc.newPage();
Image img = Image.getInstance(bim, null);
img.scaleAbsolute(pageSize.getWidth(), pageSize.getHeight());
img.setAbsolutePosition(0, 0);
doc.add(img);
}
doc.close();
} catch (IOException | DocumentException e) {
e.printStackTrace();
}
return outputPdfStream.toByteArray();
}
}