【问题标题】:Show the first page of a PDF in a form在表单中显示 PDF 的第一页
【发布时间】:2015-07-17 07:54:08
【问题描述】:

我有一个系统。在一种形式中,左侧有一个列表,右侧有 Web 浏览器组件。 pdf 文件的名称通过 ftp 加载到列表中。当用户单击列表时,相关的 pdf 被加载到右侧(到 Web 浏览器组件),但是当用户有争议地单击几个 pdf 文件时,它会从列表中加载所有 pdf 文件。所以我想重建它,就像用户单击或将鼠标悬停在列表中的 pdf 名称上只是为了在 Web 浏览器组件中进行预览、缩略图而不加载所有 pdf 文件一样。有一个组件要做吗?

【问题讨论】:

标签: c# ftp


【解决方案1】:

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

【讨论】:

  • 怎么做?我只想显示pdf的第一页。所以用户不想等到完整的 pdf 文档被加载到网络浏览器。
  • 您可以使用 PDFBox 库
【解决方案2】:
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,您只需要显示第一张图片。

【讨论】:

    猜你喜欢
    • 2014-07-14
    • 2021-03-31
    • 2012-08-03
    • 1970-01-01
    • 2020-11-18
    • 2019-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多