pdf转图片可调整大小分辨率

一、使用pdfbox
1、maven导包

     <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox-app</artifactId><version>2.0.2</version></dependency>

2、代码实现

mport org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.awt.image.WritableRaster;
import java.io.*;/*** @author taboo.li* @version 1.0.0* @des**/
public class PicToTest {public static void main(String[] args) {File file = new File("D:\\My Documents\\桌面\\c59a438f2a3f44f4b7c6.pdf");try {PDDocument document = PDDocument.load(file);PDFRenderer renderer = new PDFRenderer(document);for (int i = 0; i < document.getNumberOfPages(); i++) {// dpi 设置越大 图片越大越清晰BufferedImage bufferedImage = renderer.renderImageWithDPI(i, 300);BufferedImage newImg = null;// copy原来的图片newImg = new BufferedImage(bufferedImage.getWidth(), bufferedImage.getHeight(), BufferedImage.TYPE_BYTE_GRAY);newImg.getGraphics().drawImage(bufferedImage.getScaledInstance(bufferedImage.getWidth(), bufferedImage.getHeight(), Image.SCALE_SMOOTH),0,0,null);// 自定义长宽
//                BufferedImage img = resize(bufferedImage, 1190, 1684);// 图片要写入的地址File picFile = new File("D:\\My Documents\\桌面\\pic",i+".jpg");OutputStream outputStream = new FileOutputStream(picFile);// 注意 png 比 jpg 更清晰ImageIO.write(bufferedImage,"png",outputStream);//下面可以改变dpi,分辨率
//                JPEGImageEncoder jpegEncoder = JPEGCodec.createJPEGEncoder(outputStream);
//                JPEGEncodeParam param = jpegEncoder.getDefaultJPEGEncodeParam(newImg);
//                // 设置参数
//                param.setQuality(0.75f,false);
//                param.setXDensity(300);
//                param.setYDensity(300);
//                param.setDensityUnit(JPEGEncodeParam.DENSITY_UNIT_DOTS_INCH);
//                jpegEncoder.setJPEGEncodeParam(param);
//                jpegEncoder.encode(newImg);}} catch (IOException e) {e.printStackTrace();}}private static BufferedImage resize(BufferedImage source, int targetW, int targetH) {int type = source.getType();BufferedImage target = null;double sx = (double) targetW / source.getWidth();double sy = (double) targetH / source.getHeight();if (sx > sy) {sx = sy;targetW = (int) (sx * source.getWidth());} else {sy = sx;targetH = (int) (sy * source.getHeight());}if (type == BufferedImage.TYPE_CUSTOM) {ColorModel cm = source.getColorModel();WritableRaster raster = cm.createCompatibleWritableRaster(targetW, targetH);boolean alphaPremultiplied = cm.isAlphaPremultiplied();target = new BufferedImage(cm, raster, alphaPremultiplied, null);} else {target = new BufferedImage(targetW, targetH, type);}Graphics2D g = target.createGraphics();g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);g.drawRenderedImage(source, AffineTransform.getScaleInstance(sx, sy));g.dispose();return target;}}

二、使用icepdf
1、引用jar包

     <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>

2、代码实现

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import org.icepdf.core.exceptions.PDFException;
import org.icepdf.core.exceptions.PDFSecurityException;
import org.icepdf.core.pobjects.Document;
import org.icepdf.core.pobjects.Page;
import org.icepdf.core.util.GraphicsRenderingHints;import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;/*** @author taboo.li* @version 1.0.0* @des**/
public class PdfIceToImage {// 转化时放大倍数private static float zoom = 2f;// 颜色(灰度)private static int color = BufferedImage.TYPE_BYTE_GRAY;public static void main(String[] args) throws PDFException, IOException, PDFSecurityException {pdf2Pic("D:\\My Documents\\桌面\\c59a438f2a3f44f4b7c6.pdf", "D:\\My Documents\\桌面\\pic");}public static void pdf2Pic(String pdfPath, String path) throws IOException, PDFException, PDFSecurityException {Document document = new Document();document.setFile(pdfPath);//旋转角度float rotation = 0f;for (int i = 0; i < document.getNumberOfPages(); i++) {BufferedImage  img = (BufferedImage) document.getPageImage(i, GraphicsRenderingHints.PRINT, Page.BOUNDARY_CROPBOX,rotation, zoom);try {BufferedImage newImg = null;newImg = new BufferedImage(img.getWidth(), img.getHeight(), color);//将原图片写入 新的图片newImg.getGraphics().drawImage(img.getScaledInstance(img.getWidth(), img.getHeight(), Image.SCALE_SMOOTH),0,0,null);File outFile = new File ( path, (i+1)+"_"+ "ice"+ ".jpg");OutputStream outputStream = new FileOutputStream(outFile);JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(outputStream);JPEGEncodeParam param = encoder.    getDefaultJPEGEncodeParam(newImg);param.setQuality(0.75f, false);param.setDensityUnit(com.sun.image.codec.jpeg.JPEGEncodeParam.DENSITY_UNIT_DOTS_INCH);//分辨率 300dpiparam.setXDensity(300);param.setYDensity(300);encoder.setJPEGEncodeParam(param);encoder.encode(newImg);} catch (IOException e) {e.printStackTrace();}}document.dispose();}
}

pdf转图片可调整大小分辨率相关推荐

  1. 如何使用在线工具将PDF转换为图片

    PDF是一种非常方便的文件格式,它可以在不同的设备和操作系统之间保持格式不变,并且非常易于共享.然而,在某些情况下,您可能需要将PDF文件转换为图片格式.这可能是因为您想在网页上展示这些文件或是需要在 ...

  2. java使用Aspose.pdf实现pdf转图片

    主要步骤 使用Aspose进行文档转换,首先引入相应的jar包到系统环境 项目resource下导入license.xml文件 使用Aspose时,需要调用设置License方法,设置完成第一次转换比 ...

  3. PHP 实现PDF转图片

    目录 1.环境配置: 2.实现原理: 3.安装php扩展imagick 4.安装ghostscript 5.pdf转图片 1.环境配置: 2.实现原理: Php使用扩展插件imagick进行图片处理, ...

  4. 快速将PDF转换为图片:免费的在线PDF转换器

    在现代数字时代,PDF是一种非常常见的文件格式.它们在学术界,商业领域和许多其他领域中被广泛使用.有时,您可能需要将PDF文件转换为图像格式,以便能够方便地与他人共享和使用.在这种情况下,您可以使用免 ...

  5. PHP将PDF转图片-实战

    Windows环境下 一.开启 Imagick 扩展 1.安装PHP扩展:Imagick,下载地址 https://pecl.php.net/package/imagick 注意和php版本保持一致: ...

  6. python pdf与图片互转

    背景 PDF转图片网上免费的只能转三次,多次的要么下载安装,要么收费.故自己写代码转换. 环境 1.安装python 2. 安装工具包 pip install PyMuPDF pip install ...

  7. C#调用GhostScript,O2S.Components转换PDF为图片

    方法一:使用O2S.Components.PDFRENDER4net.DLL https://jingyan.baidu.com/article/47a29f2453ab72c015239946.ht ...

  8. 实现DOC、DOCX转换为PDF 再将PDF转换为图片

    实现DOC.DOCX转换为PDF 再将PDF转换为图片 首先导入需要的依赖 <dependency><groupId>cn.hutool</groupId>< ...

  9. C#使用iTextSharp将多张图片转一个PDF(图片页面大小一致)

    NuGet安装最新版iTextSharp 图片大小(mm) = 图片像素 * 25.4 / 图片分辨率 PDF大小(mm) = 图片大小(mm) * 2.83462677 /// <summar ...

最新文章

  1. 数据统计之月增用户统计
  2. TAB(Nav)导航菜单
  3. pyhanlp 两种依存句法分类器
  4. 读取 classpath 资源
  5. 高精地图中地面标识识别技术历程与实践
  6. mysql访问被拒绝1045_mysqlimport:错误:1045,访问被拒绝
  7. 统计有几个连通分量的另一种方法--hdu 1325
  8. seconds_behind_master入门
  9. 用友NC CLOUD 工具
  10. 程序设计-股票最大收益问题(Java)
  11. html水印生成pdf,如何在jsPDF中添加PDF生成水印?
  12. matlab中的矩阵元素表示和求和
  13. c语言数组中找出相同的数,找出数组中重复的数字(c语言)
  14. PHP 毕生功力 图片,视听发烧网_汇集毕生功力的代表作:静神Monitor Acoustics KenStyle Silver Signature...
  15. L1-049 天梯赛座位分配 (20分) (C++)
  16. 名帖311 成亲王 行书《杜甫秋兴诗》
  17. 还不了解什么是商业智能(BI)?看完这篇文章就懂了
  18. 用C语言打印一个等腰三角形
  19. 协同OA助中国制造业制造实时企业
  20. 如何做好公众号内容运营?这三个步骤就够了

热门文章

  1. 白嫖阿里-----搭建个人服务
  2. linux rtc与时钟
  3. 苹果IOS企业开发者账号怎么申请——苹果账号申请记录(未完待续)
  4. 【技巧】Unity 获取Android设备系统语言
  5. python飞机大战源码素材包_python(pygame)滑稽大战(类似飞机大战) 教程
  6. Linux虚拟机下FTP服务器的搭建(详细)
  7. Ubuntu wps 安装及 windows字体安装
  8. FairyGUI进阶-滑动列表 虚拟列表 循环列表
  9. uniapp app真机测试
  10. 软件测试工资一般是多少