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); } }
原文:https://www.cnblogs.com/dashizhong/p/15118146.html