try {
// 加载pdf文件
PDDocument document = PDDocument.load(file);
//将pdf转换成图片
PDFRenderer renderer = new PDFRenderer(document);
//获取pdf的页数
int numberOfPages = document.getNumberOfPages();
PDFRenderer pdfRenderer = new PDFRenderer(document);
//展示图片的容器
VBox root = new VBox();
//间距为0,没用,是生成pdf的时候底部不够一行
root.setSpacing(0);
//根据页数循环将pdf转化的图片添加到容器当中
for (int i = 0; i < numberOfPages; i++) {
//获取的图片为awt容器的图片
BufferedImage bufferedImage = pdfRenderer.renderImageWithDPI(i, 92); // DPI渲染图像
WritableImage fxImage = SwingFXUtils.toFXImage(bufferedImage, null);
ImageView imageView = new ImageView(fxImage);
// 缩放倍数
double scaleFactor = 1;
imageView.setFitWidth(bufferedImage.getWidth() * scaleFactor);
imageView.setFitHeight(bufferedImage.getHeight() * scaleFactor);
// 保持图片的宽高比
imageView.setPreserveRatio(true);
// 平滑缩放
imageView.setSmooth(true);
root.getChildren().add(imageView);
}
// 定位到页面顶部
double vvalue = 0.0; // 这将使滚动条位于顶部
selectList.setVvalue(vvalue);
//将容器加载到滚动页面中
selectList.setContent(root);
// 关闭文档,释放资源
document.close();
}
catch (IOException e) {
logger.error(BusinessException.getExceptionToString(e));
}
标签:展示,javafx,bufferedImage,new,imageView,pdf,PDF,document,PDFRenderer
From: https://blog.51cto.com/u_16435501/9071467