//使用架包pdfbox-1.71  fontbox-1.71

public String[]  yPic(String pdfPath)  {//strs是传过来的pdf文件路径

String[] str = null;//定义一个 数组,用来存放输出的图片的路径
try {  
       InputStream is = new FileInputStream(pdfPath);  
       PDDocument pdf = PDDocument.load(is, true);  
       List<PDPage> pages = pdf.getDocumentCatalog().getAllPages();  
       int actSize = pages.size(); // actSize是PDP文件中实际的页数  
       str = new String[actSize];
       for(int i =0;i<actSize;i++){//循环输出一页pdf文件转化的图片
        Document document = new Document();
        document.setFile(pdfPath);
        float scale = 1f;
        float rotation = 0f;
        Page page = document.getPageTree().getPage(i);
        page.init();
        PDimension sz = page.getSize(Page.BOUNDARY_CROPBOX, rotation, scale);
        pageHeight = (int) sz.getHeight();
        pageWidth = (int) sz.getWidth();
        BufferedImage image = new BufferedImage(pageWidth,
        pageHeight,
        BufferedImage.TYPE_INT_RGB);
        Graphics g = image.createGraphics();
        page.paint(g, GraphicsRenderingHints.PRINT,
        Page.BOUNDARY_CROPBOX, rotation, scale);
        g.dispose();
        //防止文件重名
        int index = pdfPath.lastIndexOf("\\");
        String path = pdfPath.substring(0, index);
        index = path.lastIndexOf("\\");
        String imgPath = path.substring(0, index);
        imgPath = imgPath.replace("\\", "/");
       
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhmmssSSS");
        Date dt = new Date();
        String fileName = sdf.format(dt);
        File file = new File(imgPath + "/imgFiles/" + fileName + ".png");
        if(!file.exists()){
        try {
        file.createNewFile();
        ImageIO.write(image, "png", file);
        } catch (IOException e) {
        // TODO 自动生成的 catch 块
        e.printStackTrace();
        }
        image.flush();
        }
        str[i] = imgPath + "/imgFiles/" + fileName + ".png";//输出文件到1个路径,把这个路径放到strs中
        document.dispose();
       } 
   } catch (IOException e) {  
       e.printStackTrace();  
   }
}
@Bizlet
public String[] createPicTwo2(String [] strs){//strs是传过来的pdf文件路径,放到数组中
String path=""; 
String[] strpath = null;
try{
if(strs.length>=2){
strpath = new String[strs.length*2-1];
for(int i=0;i<strs.length;i++){
strpath[i] = strs[i];
}
for(int i=1;i<strs.length;i++){//循环从1开始
strs[i] = strs[i].replace("/", "\\");
int index = strs[i].lastIndexOf("\\");
        String paths = strs[i].substring(0, index);
        index = paths.lastIndexOf("\\");
        String imgPath = paths.substring(0, index);
        imgPath = imgPath.replace("\\", "/");
        imgPath +="/imgFiles/";
File outFile = new File(imgPath);
File fileOne = new File(strs[i]);
if(i==1){
BufferedImage image1 = ImageIO.read(new File(strs[i-1]));  
BufferedImage image2 = ImageIO.read(fileOne);  
//因为pdf转换的图片宽和高 都一样,合成新文件的宽度的就是循环的次数+1,高度不变,注掉的是上下合成的分方法。本方法是左右合成
//BufferedImage combined = new BufferedImage(image1.getWidth(), image2.getHeight()*(i+1), BufferedImage.TYPE_INT_RGB);  
BufferedImage combined = new BufferedImage(image2.getWidth()*(i+1), image2.getHeight(), BufferedImage.TYPE_INT_RGB);
Graphics g = combined.getGraphics();  
g.drawImage(image1, 0, 0, null);  
//g.drawImage(image2, 0, image1.getHeight(), null); 
g.drawImage(image2, image1.getWidth(), 0, null);
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhmmssSSS");
Date dt = new Date();
String fileName = sdf.format(dt);
path = imgPath + fileName + ".png";
outFile = new File(outFile +"\\"+ fileName + ".png");
ImageIO.write(combined, "png", outFile);
}else{
BufferedImage image1 = ImageIO.read(new File(path));  
BufferedImage image2 = ImageIO.read(fileOne);  
//BufferedImage combined = new BufferedImage(image1.getWidth(), image2.getHeight()*(i+1), BufferedImage.TYPE_INT_RGB);  
BufferedImage combined = new BufferedImage(image2.getWidth()*(i+1), image2.getHeight(), BufferedImage.TYPE_INT_RGB);  
Graphics g = combined.getGraphics();  
g.drawImage(image1, 0, 0, null);  
//g.drawImage(image2, 0, image1.getHeight(), null);
g.drawImage(image2, image1.getWidth(), 0, null);
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhmmssSSS");
Date dt = new Date();
String fileName = sdf.format(dt);
path = imgPath + fileName + ".png";
outFile = new File(outFile +"\\"+ fileName + ".png");
ImageIO.write(combined, "png", outFile);
}
strpath[strs.length+i-1] = path;
}
}else{
path = strs[0];
strpath = strs;
}
      }catch(Exception e){
  e.printStackTrace();
      }
return strpath;
}

pdf多页合成一张pdf图片相关推荐

  1. 如何将两张图片合成一张pdf

    在职场工作中,学会处理PDF文件是必不可少的技能.由于PDF文档的特殊性,许多新手在编辑PDF文件时往往不知道从何入手.比如一些非pdf格式的文件,像图片,在使用的时候被指定必须使用pdf格式的,这个 ...

  2. 实用常识 | 如何将多张图片合成一张gif图片(使用Win10自带工具or利用Photoshop实现)

    今天遇到了一个需求,需要将多张图片合成一张gif图片,利用搜索引擎搜来搜去,尝试了很多在线的网页端工具,不过要么是有水印,要么是需付费,而且合成效果也不是很好,找来找去,Win10自带的视频合成工具也 ...

  3. java gif合成_java图片处理——多张图片合成一张Gif图片并播放或Gif拆分成多张图片...

    1.多张jpg图合成gif动画 /*** 把多张jpg图片合成一张 *@parampic String[] 多个jpg文件名 包含路径 *@paramnewPic String 生成的gif文件名 包 ...

  4. java pdf 多页转换为png格式的图片

    java pdf 多页转换为png格式的图片  适用于 无论pdf有多少页均可 废话不说,直接上代码 import java.awt.Graphics; import java.awt.image.B ...

  5. 多张图片合成一份PDF(不使用其他软件)

    多张图片合成一份PDF 将所有图片放进一个文件夹,排好序. ctrl+a 全选,在第一张图片中右键选择打印(因为没有连打印机,所以不会真正打印) 如果需要特定设置,如图片是横向还是纵向放置,可以通过& ...

  6. PIL实现两张图片合成一张,和图片加文字

    PIL实现两张图片合成一张,和图片加文字 文章目录: 一.PIL实现两张图片合成一张 1.方法一: 2.方法二 二.图片添加文字 首先说明一下: (小姐姐是谁,是my sweetheart ,请勿使用 ...

  7. php 自定义图片排版,照片拼图在线制作 自带多种照片拼图模板,自由排版将多张照片合成一张...

    照片拼图在线制作 自带多种照片拼图模板,自由排版将多张照片合成一张 相信大家在网上看到过很多类似照片拼图效果的图片,一张图片里面含有多张不同的照片,有的是排列有序,有的则是随意排版,效果看起来也是很美 ...

  8. 如何把多张照片合成一张,这些方法好用也好学

    如何把多张照片合成一张?将多张照片合成一张可以创建具有更高分辨率和更丰富内容的图片,提供更加美观.精致和有趣的视觉体验.此外,多张照片合成一张还能够突出图片主题.提高图片质量.增强图片表现力,具有非常 ...

  9. 什么相片可以两张弄成一张_怎么将两张图片合成一张?

    有时候我们需要将两张图片放在一起相比较,但是两张图片相互切换对比起来比较困难,有没有什么办法将两张图片合成一张?方法是肯定有的,而且还是多种多样的,本文就给大家介绍一种对普通用户来说最简单方便快捷的方 ...

  10. 什么相片可以两张弄成一张_ps怎么把两张图片合成一张

    ps怎么把两张图片合成一张 图片应用在我们的生活中十分广泛,Photoshop似乎已经离不开我们的生活.点点滴滴回忆刻印成一张张图片.不过有不少网友却不知道ps怎么把两张图片合成一张,下文将一一为大家 ...

最新文章

  1. Ubuntu下使用Anaconda安装opencv 解决无法读取视频
  2. C# Winform编程ListBox之添加图标
  3. char和varchar的区别以及尾部空格问题 - sqlserver演示
  4. 精简三星Galaxy III 迷你版 自带无用软件
  5. Hibernate缓存和ehcache
  6. 模块怎么用_IC设计方法:模块划分与overdesign
  7. 实验5 matlab程序设计2,实验5 Matlab程序设计2
  8. oci连接mysql_OCILIB 连接Oracle数据库——插入数据
  9. c语言vs2017链表出错,【C++单链表就地逆置】程序无error错误,求指点TAT。
  10. 最简单的flex bison例子
  11. 如何保存浮点型数值的图像? (Python的/ PIL)
  12. Java 后端自学之路
  13. 短视频标题自动生成工具,助你打造爆款标题
  14. 关于token和refresh token
  15. java 读取gzip_Java读取GZIP
  16. Word 软回车和硬回车
  17. 0-5V转4-20mA信号隔离器、0-10V转换器、直流模块
  18. win10下自带输入法变为繁体字的原因及解决方法
  19. 自己修好了乐视电视!
  20. GMSL部分问题解答/含官方FAE解答

热门文章

  1. linux安装monaco字体
  2. 怎么降低照片大小kb?
  3. 系统集成项目管理工程师(软考中级)重点知识、背诵版
  4. 解决矢量地图与卫星地图叠加有偏移的两种方法
  5. 微信背后的男人——张小龙
  6. 微信打电话和直接打电话有什么区别吗?为什么?
  7. 【源码】采用PI反馈控制的DC-DC降压变换器仿真
  8. 窘境遇到HR Manager
  9. android 微信 语音转文字,微信语音转文字功能
  10. 兄弟FAX-2890更换硒鼓加粉清零方法