java代码抓取pdf部分文件生成缩略图(50%)

0. 参考博文:

java代码获取pdf文件第一页作为封面缩略图
通过BufferedImage实现将几张图片合成一张图片,图片效果类型为依次排列图片

1. 导入依赖

<!-- 生成pdf预览图的相关依赖包 -->
<dependency>
    <groupId>org.icepdf.os</groupId>
    <artifactId>icepdf-core</artifactId>
    <version>6.1.2</version>
    <exclusions>
        <exclusion>
            <groupId>javax.media</groupId>
            <artifactId>jai-core</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>net.coobird</groupId>
    <artifactId>thumbnailator</artifactId>
    <version>0.4.8</version>
</dependency> 

2. 具体实现如下

* pdf预览的方法 * @param inputFile pdf位置 * @param outputFile 图片存放位置 public static void generatePdfImage(URL inputFile, String outputFile) { org.icepdf.core.pobjects.Document document = null; try { float rotation = 0f; //缩略图显示倍数,1表示不缩放,0.5表示缩小到50% float zoom = 1f; document = new org.icepdf.core.pobjects.Document(); document.setUrl(inputFile); FileOutputStream out = new FileOutputStream(new File(outputFile)); Image image1 = document.getPageImage(0, GraphicsRenderingHints.SCREEN, Page.BOUNDARY_CROPBOX, rotation, zoom); int halfPages = (document.getPageTree().getNumberOfPages()) / 2; // 每张图片宽度一样, 高度一样 int width = image1.getWidth(null); int height = image1.getHeight(null) * halfPages;// 每张图片高度 * 图片数量 BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics graphics = bufferedImage.createGraphics(); int heightSum = 0; for (int i = 0; i < halfPages; i++) { Image image = document.getPageImage(i, GraphicsRenderingHints.SCREEN, Page.BOUNDARY_CROPBOX, rotation, zoom); int imageHeight = image.getHeight(null); graphics.drawImage(image, 0,heightSum,width,imageHeight,null);// 绘制合成图片 heightSum += imageHeight; graphics.dispose(); // 将绘制的图片生成至输出流 JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); encoder.encode(bufferedImage); // 关流 out.close(); } catch (Exception e) { log.debug("生成pdf缩略图失败");

3. 生成效果

java代码抓取pdf部分文件生成缩略图(50%)0. 参考博文:java代码获取pdf文件第一页作为封面缩略图通过BufferedImage实现将几张图片合成一张图片,图片效果类型为依次排列图片1. 导入依赖&lt;!-- 生成pdf预览图的相关依赖包 --&gt;&lt;dependency&gt; &lt;groupId&gt;org.icepdf.os&lt;/groupId&gt; &lt;artifactId&gt;icepdf-core&lt;/artifactId 在项目有上传pdf的需求,然而上传完图片可以在页面上通过img显示上传的图片,于是就想到通过img显示pdf的首页当作预览吧,点击图片再打开新窗口显示完整pdf文件或者直接下载。 pdf-renderer可以实现此需求 @RequestMapping(value = "/pdf") public void pdfrender(HttpServletResponse respon... <!-- https://mvnrepository.com/artifact/org.apache.pdfbox/fontbox --> <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>fontb
项目中要使用PDF缩略图,使用java几个开源项目来对pdf转换为图片的工作。 参照了文章:http://javasogo.iteye.com/blog/1169234  对比这几款开源项目PDFRenderer、pdfbox、jpedal 的做法: 1.PDFRenderer: 确实效率最高,但是缺少字体支持对大多数中文pdf处理不了(很奇怪为什么项目组还没做默认字体支持) 2.pdf
//将文件写入到本地并返回图片路径(路径用于存入数据库) public String[] uploadImage1(MultipartFile file,String barCode){ //时间戳 String currentTime =String.valueOf(new Date().getTime()); //原始图片路径 1、首先使用Jacob调取WPS将office文件转为PDF(可以做到兼容office 2003、office 2007的文件); 2、通过如下代码(本人用的spring boot)将PDF文件转为图片(包括首页缩略图、全部所有页缩略图) 3、在预览页面展示首页缩略图,详情页会使用pdf.js获取PDF文件流,将每一页使用画布can...
方法1:[第一种方法比后一种生成缩略图要清晰] [code="java"]import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.awt.image.ColorModel; import java.awt.image.WritableRaster; import java.awt.*...
&lt;!--使用的是pdfbox计数总页数与缩略图--&gt; &lt;!-- https://mvnrepository.com/artifact/com.sleepycat/je --&gt; &lt;dependency&gt; &lt;groupId&gt;com.sleepycat&lt;/groupId&gt; &lt;artifactId&gt;......
javapdf,word,excel转成图片      pdf转化成图片有几种方式,这里介绍两种,一种通过PDFRenderer的支持转化为图片,这种方式最终没有采取,实际使用中发现高版本的pdf就不能进行转化,另一种是通过icepdf的支持转化的,实际使用过程中,效果良好,不过由于某些字体不支持,可能会出现乱码现象。 PDFRenderer需要的jar: