Java pdf和jpg互转案例

 更新时间:2020年09月29日 10:00:15   作者:xqnode  
这篇文章主要介绍了Java pdf和jpg互转案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

pdfbox: jpg转pdf:

/**
   * 使用pdfbox将jpg转成pdf
   * @param jpgStream jpg输入流
   * @param pdfPath pdf文件存储路径
   * @throws IOException IOException
   */
  public static void jpgToPdf(InputStream jpgStream, String pdfPath) throws IOException {

    PDDocument pdDocument = new PDDocument();
    BufferedImage image = ImageIO.read(jpgStream);

    PDPage pdPage = new PDPage(new PDRectangle(image.getWidth(), image.getHeight()));
    pdDocument.addPage(pdPage);
    PDImageXObject pdImageXObject = LosslessFactory.createFromImage(pdDocument, image);
    PDPageContentStream contentStream = new PDPageContentStream(pdDocument, pdPage);
    contentStream.drawImage(pdImageXObject, 0, 0, image.getWidth(), image.getHeight());
    contentStream.close();
    pdDocument.save(pdfPath);
    pdDocument.close();
  }

pdfbox: pdf转jpg:

static void pdfbox() throws IOException {
    long start = System.currentTimeMillis();
    //pdf路径
    URL url = new URL("file:///D:/1.pdf");
    InputStream stream = URLUtil.getStream(url);
    // 加载解析PDF文件
    PDDocument doc = PDDocument.load(stream);
    PDFRenderer pdfRenderer = new PDFRenderer(doc);
    PDPageTree pages = doc.getPages();
    int pageCount = pages.getCount();
    for (int i = 0; i < pageCount; i++) {
      BufferedImage bim = pdfRenderer.renderImageWithDPI(i, 200);
      ByteArrayOutputStream os = new ByteArrayOutputStream();
      ImageIO.write(bim, "jpg", os);
      byte[] datas = os.toByteArray();
//      InputStream is = new ByteArrayInputStream(datas);
      //jpg文件转出路径
      FileUtil.writeBytes(datas, new File("d:/jpg/" + i + ".jpg"));
    }
    long end = System.currentTimeMillis();
    long time = (end - start) / 1000;
    System.out.println(StrUtil.format("pdf转jpg耗时: {}s", time));
  }

icepdf: pdf转jpg

Document document = new Document();
document.setUrl(new URL(pdfUrl));
int pageNum = document.getNumberOfPages();
for (int i = 0; i < pageNum; i++) {
  // 目前仅支持1对1的pdf->jpg
  if (i != 0) {
    continue;
  }
  // 3、pdf -> jpg
  BufferedImage bim = (BufferedImage) document.getPageImage(i,
      GraphicsRenderingHints.SCREEN, Page.BOUNDARY_CROPBOX,
      rotation, scale);
  os = new ByteArrayOutputStream();
  ImageIO.write(bim, "jpg", os);
  // 4、jpg -> fdfs
  byte[] datas = os.toByteArray();
  InputStream is = new ByteArrayInputStream(datas);

补充知识:Java实现对png图片文件电子签名操作

我就废话不多说了,大家还是直接看代码吧~

/**
 * 根据图片像素位置添加用户电子签名
 * @param imagePath   要操作的图片路径
 * @param signImagePath 电子签名图片路径
 * @param outImagePath 合成后输出图片路径
 * @param width 像素位宽度
 * @param height 像素位高度
 */
public static void syntheticPicture(String imagePath, String signImagePath,Integer width,Integer height, String outImagePath ) {
  try {
    BufferedImage big = ImageIO.read(new File(imagePath));
    BufferedImage small = ImageIO.read(new File(signImagePath));
    Graphics2D g = big.createGraphics();
    //根据图片像素位置粘贴带电子签名
    g.drawImage(small, width, height, small.getWidth(), small.getHeight(), null);
    g.dispose();
    ImageIO.write(big, outImagePath .split("\\.")[1], new File(outImagePath ));
  } catch (Exception e) {
    throw new RuntimeException(e);
  }
}

以上这篇Java pdf和jpg互转案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 浅谈springmvc 通过异常增强返回给客户端统一格式

    浅谈springmvc 通过异常增强返回给客户端统一格式

    这篇文章主要介绍了浅谈springmvc 通过异常增强返回给客户端统一格式。具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • SpringMVC解析post请求参数详解

    SpringMVC解析post请求参数详解

    今天小编就为大家分享一篇解决SpringMVC接收不到ajaxPOST参数的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-08-08
  • springboot整合spring-data-redis遇到的坑

    springboot整合spring-data-redis遇到的坑

    使用springboot整合redis,使用默认的序列化配置,然后使用redis-client去查询时查询不到相应的key.问题出在哪,怎么解决呢?下面小编给大家带来了springboot整合spring-data-redis遇到的坑,需要的的朋友参考下吧
    2017-04-04
  • Java每7天日志自动清理的项目实践

    Java每7天日志自动清理的项目实践

    在实际项目中由于服务器内存有限,人工清理常会忘记,本文主要介绍了Java每7天日志自动清理的项目实践,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • java对于目录下文件的单词查找操作代码实现

    java对于目录下文件的单词查找操作代码实现

    这篇文章主要介绍了java对于目录下文件的单词查找操作代码实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Java设计模式之原型模式(Prototype模式)介绍

    Java设计模式之原型模式(Prototype模式)介绍

    这篇文章主要介绍了Java设计模式之原型模式(Prototype模式)介绍,本文讲解了如何使用原型模式并给出了代码实例,需要的朋友可以参考下
    2015-03-03
  • JRebel在线激活破解实现教程

    JRebel在线激活破解实现教程

    这篇文章主要介绍了JRebel在线激活破解实现教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • 举例讲解Java编程中this关键字与super关键字的用法

    举例讲解Java编程中this关键字与super关键字的用法

    这篇文章主要介绍了Java编程中this关键字与super关键字的用法示例,super是this的父辈,在继承过程中两个关键字经常被用到,需要的朋友可以参考下
    2016-03-03
  • Java封装数组之改进为泛型数组操作详解

    Java封装数组之改进为泛型数组操作详解

    这篇文章主要介绍了Java封装数组之改进为泛型数组操作,结合实例形式详细分析了Java封装数组为泛型数组相关原理、操作技巧与注意事项,需要的朋友可以参考下
    2020-03-03
  • java实现图片无损任意角度旋转

    java实现图片无损任意角度旋转

    这篇文章主要为大家详细介绍了java实现图片无损任意角度旋转,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02

最新评论