pdf多页合成一张pdf图片
//使用架包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图片相关推荐
- 如何将两张图片合成一张pdf
在职场工作中,学会处理PDF文件是必不可少的技能.由于PDF文档的特殊性,许多新手在编辑PDF文件时往往不知道从何入手.比如一些非pdf格式的文件,像图片,在使用的时候被指定必须使用pdf格式的,这个 ...
- 实用常识 | 如何将多张图片合成一张gif图片(使用Win10自带工具or利用Photoshop实现)
今天遇到了一个需求,需要将多张图片合成一张gif图片,利用搜索引擎搜来搜去,尝试了很多在线的网页端工具,不过要么是有水印,要么是需付费,而且合成效果也不是很好,找来找去,Win10自带的视频合成工具也 ...
- java gif合成_java图片处理——多张图片合成一张Gif图片并播放或Gif拆分成多张图片...
1.多张jpg图合成gif动画 /*** 把多张jpg图片合成一张 *@parampic String[] 多个jpg文件名 包含路径 *@paramnewPic String 生成的gif文件名 包 ...
- java pdf 多页转换为png格式的图片
java pdf 多页转换为png格式的图片 适用于 无论pdf有多少页均可 废话不说,直接上代码 import java.awt.Graphics; import java.awt.image.B ...
- 多张图片合成一份PDF(不使用其他软件)
多张图片合成一份PDF 将所有图片放进一个文件夹,排好序. ctrl+a 全选,在第一张图片中右键选择打印(因为没有连打印机,所以不会真正打印) 如果需要特定设置,如图片是横向还是纵向放置,可以通过& ...
- PIL实现两张图片合成一张,和图片加文字
PIL实现两张图片合成一张,和图片加文字 文章目录: 一.PIL实现两张图片合成一张 1.方法一: 2.方法二 二.图片添加文字 首先说明一下: (小姐姐是谁,是my sweetheart ,请勿使用 ...
- php 自定义图片排版,照片拼图在线制作 自带多种照片拼图模板,自由排版将多张照片合成一张...
照片拼图在线制作 自带多种照片拼图模板,自由排版将多张照片合成一张 相信大家在网上看到过很多类似照片拼图效果的图片,一张图片里面含有多张不同的照片,有的是排列有序,有的则是随意排版,效果看起来也是很美 ...
- 如何把多张照片合成一张,这些方法好用也好学
如何把多张照片合成一张?将多张照片合成一张可以创建具有更高分辨率和更丰富内容的图片,提供更加美观.精致和有趣的视觉体验.此外,多张照片合成一张还能够突出图片主题.提高图片质量.增强图片表现力,具有非常 ...
- 什么相片可以两张弄成一张_怎么将两张图片合成一张?
有时候我们需要将两张图片放在一起相比较,但是两张图片相互切换对比起来比较困难,有没有什么办法将两张图片合成一张?方法是肯定有的,而且还是多种多样的,本文就给大家介绍一种对普通用户来说最简单方便快捷的方 ...
- 什么相片可以两张弄成一张_ps怎么把两张图片合成一张
ps怎么把两张图片合成一张 图片应用在我们的生活中十分广泛,Photoshop似乎已经离不开我们的生活.点点滴滴回忆刻印成一张张图片.不过有不少网友却不知道ps怎么把两张图片合成一张,下文将一一为大家 ...
最新文章
- Ubuntu下使用Anaconda安装opencv 解决无法读取视频
- C# Winform编程ListBox之添加图标
- char和varchar的区别以及尾部空格问题 - sqlserver演示
- 精简三星Galaxy III 迷你版 自带无用软件
- Hibernate缓存和ehcache
- 模块怎么用_IC设计方法:模块划分与overdesign
- 实验5 matlab程序设计2,实验5 Matlab程序设计2
- oci连接mysql_OCILIB 连接Oracle数据库——插入数据
- c语言vs2017链表出错,【C++单链表就地逆置】程序无error错误,求指点TAT。
- 最简单的flex bison例子
- 如何保存浮点型数值的图像? (Python的/ PIL)
- Java 后端自学之路
- 短视频标题自动生成工具,助你打造爆款标题
- 关于token和refresh token
- java 读取gzip_Java读取GZIP
- Word 软回车和硬回车
- 0-5V转4-20mA信号隔离器、0-10V转换器、直流模块
- win10下自带输入法变为繁体字的原因及解决方法
- 自己修好了乐视电视!
- GMSL部分问题解答/含官方FAE解答