在表单中显示PDF的第一页

本文关键字:第一页 PDF 显示 表单 | 更新日期: 2023-09-27 18:03:14

我有一个系统。在一种形式中,左侧有一个列表,右侧有web浏览器组件。pdf文件的名称通过ftp加载到列表中。当用户单击列表时,相关的PDF被加载到右侧(到web浏览器组件),但是当用户单击几个PDF文件时,它会从列表中加载所有PDF文件。所以我想重新构建它,当用户从列表中单击或鼠标在PDF名称上只是为了在web浏览器组件中预览,缩略图而不加载所有PDF文件时。有这样一个组件吗?

在表单中显示PDF的第一页

您可以尝试将PDF转换为图像并显示第一张图像。

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.imageio.ImageIO;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageNode;

public List<String> generateImages(String pdfFile) throws IOException  {
     String imagePath = "/Users/$user/pdfimages/";
     List <String> fileNames = new ArrayList<String>();
      document = PDDocument.load(pdfFile);  //// load pdf   
      node = document.getDocumentCatalog().getPages(); ///// get pages
      List<PDPage> kids = node.getKids();
      int count=0;
      for(PDPage page : kids) {   ///// iterate
           BufferedImage img = page.convertToImage(BufferedImage.TYPE_INT_RGB,128);
           File imageFile = new File(imagePath+ count++ + ".jpg");
               ImageIO.write(img, "jpg", imageFile);
               fileNames.add(imageFile.getName());     
           }
           return fileNames;   
    }

使用PDFBox,你只需要显示第一个图像。