import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import com.rj.util.PdfUtil;
import javax.imageio.IIOImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriter;
import javax.imageio.stream.ImageOutputStream;
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;
public class pdfExport {
public static final String FILETYPE_JPG = "jpg";
/**
*@param filepath 输入文件路径
*
* @param imagepath 输出文件夹路径
*
* @param zoom 缩略图显示倍数
*
* @param name 生成文件名称
*
* @param begin 导出开始页
*
* @param end 导出结束页
*/
public static void tranfer(String filepath, String imagepath, float zoom, String name, int begin, int end) throws PDFException, PDFSecurityException, IOException, InterruptedException{
Document document = null;
float rotation = 0f;
document = new Document();
document.setFile(filepath);
int maxPages = document.getPageTree().getNumberOfPages();
FileOutputStream out=null;
ImageOutputStream outImage=null;
List<String> bookFilePaths=new ArrayList();
for (int i = begin-1; i < end; i++) {
BufferedImage img = (BufferedImage) document.getPageImage(i, GraphicsRenderingHints.SCREEN, Page.BOUNDARY_CROPBOX, rotation, zoom);
Iterator iter = ImageIO.getImageWritersBySuffix(FILETYPE_JPG);
ImageWriter writer = (ImageWriter) iter.next();
File outFile = new File(imagepath + new File(filepath).getName() + "_" + new DecimalFormat("000").format(i) + "." + FILETYPE_JPG);
bookFilePaths.add(outFile.getPath());
out = new FileOutputStream(outFile);
outImage = ImageIO.createImageOutputStream(out);
writer.setOutput(outImage);
writer.write(new IIOImage(img, null, null));
//关闭流防止资源占用
if(out!=null){
out.close();
}
if(outImage!=null){
outImage.close();
}
}
//多张图片合成pdf 输出文件夹路径 生成pdf的文件名称 输入图片的路径
PdfUtil.imagesToPdf(imagepath,name, imagepath);
}
//pdf拆成图片
public static void main(String[] args) throws PDFException, PDFSecurityException, IOException, InterruptedException{
tranfer("C:/ls_ftp/433003/1/2021/20210807/测试.pdf", "C:/ls_ftp/433003/1/2021/20210807/", 1 , "测试",3,5);//test
}
}
import com.itextpdf.text.Document;
import com.itextpdf.text.Image;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.PdfWriter;
import java.io.File;
import java.io.FileOutputStream;
/**
* @author chf
* @version v1.0
* @project: zgz
* @description: 这里描述类的用处
* @copyright: © 2018
* @company:
* @date 2018/5/16 14:23
*/
public class PdfUtil {
/**图片转pdf
*@param FILEPATH 输出文件夹路径
*
* @param fileName 生成pdf文件
*
* @param imagesPath 需要转换的图片路径
*/
public static void imagesToPdf(String FILEPATH,String fileName, String imagesPath) {
try {
fileName = FILEPATH+fileName+".pdf";
File file = new File(fileName);
// 第一步:创建一个document对象。
Document document = new Document();
document.setMargins(0, 0, 0, 0);
// 第二步:
// 创建一个PdfWriter实例,
PdfWriter.getInstance(document, new FileOutputStream(file));
// 第三步:打开文档。
document.open();
// 第四步:在文档中增加图片。
File files = new File(imagesPath);
String[] images = files.list();
int len = images.length;
int pages=0;
File[] imgfiles = new File[len];
for (int i = 0; i < len; i++)
{
if (images[i].toLowerCase().endsWith(".bmp")
|| images[i].toLowerCase().endsWith(".jpg")
|| images[i].toLowerCase().endsWith(".jpeg")
|| images[i].toLowerCase().endsWith(".gif")
|| images[i].toLowerCase().endsWith(".png")) {
String temp = imagesPath + "\\" + images[i];
Image img = Image.getInstance(temp);
img.setAlignment(Image.ALIGN_CENTER);
// 根据图片大小设置页面,一定要先设置页面,再newPage(),否则无效
document.setPageSize(new Rectangle(img.getWidth(), img.getHeight()));
document.newPage();
document.add(img);
imgfiles[pages] = new File(temp);
pages++;
}
}
if(pages!=0) {
for(int j=0;j<pages;j++) {
imgfiles[j].delete();
}
}
// 第五步:关闭文档。
document.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args)
{
String name = "20001543";
String imagesPath = "C:\\ls_ftp\\433003\\1\\2021\\20210807";
imagesToPdf("C:/ls_ftp/433003/1/2021/20210807/",name, imagesPath);
}
}