首页 > 其他 > 详细

pdf文件控制导出(开始页和结束页)

时间:2021-08-09 13:57:58      阅读:21      评论:0      收藏:0      [点我收藏+]
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);
    }
}

 

pdf文件控制导出(开始页和结束页)

原文:https://www.cnblogs.com/dashizhong/p/15118146.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!