pdf 图片 相互转化

185 篇文章 0 订阅

 

 

import org.apache.pdfbox.pdmodel.PDDocument
import org.apache.pdfbox.pdmodel.PDPage
import org.apache.pdfbox.pdmodel.PDPageContentStream
import org.apache.pdfbox.pdmodel.common.PDRectangle
import org.apache.pdfbox.pdmodel.graphics.image.LosslessFactory
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject
import org.apache.pdfbox.rendering.PDFRenderer

 

 

/**=
     * pdf转图片
     * @param path
     * @return
     */
    private Integer pdfToImg(String path){
        Integer pageCount = 0
        File file = new File(path)
        PDDocument doc = null
        try {
            doc = PDDocument.load(file)
            PDFRenderer renderer = new PDFRenderer(doc)
            pageCount = doc.getNumberOfPages()
            String imgPath = path.replace(".pdf","")
            for(int i=0; i<pageCount; i++){
                BufferedImage image = renderer.renderImage(i, 0.85f)
                ImageIO.write(image,"jpg",new File(imgPath+i+".jpg"))
            }

        } catch (IOException e) {

        }finally{
            if(doc!=null){
                doc.close()
            }
        }
        file.delete()
        return pageCount
    }
    /**=
     * 图片转PDF
     * @param savePath
     * @param page
     */
    private void imgToPdf(String savePath,int page){
        PDDocument pdDocument = new PDDocument()
        String imgPath = savePath.replaceAll(".pdf","")
        for(int i=0;i<page;i++){
            File imageFile = new File(imgPath+i+".jpg")
            BufferedImage image = ImageIO.read(imageFile)
            PDPage pdPage = new PDPage(new PDRectangle(612, 792))
            pdDocument.addPage(pdPage)
            PDImageXObject pdImageXObject = LosslessFactory.createFromImage(pdDocument, image)
            PDPageContentStream contentStream = new PDPageContentStream(pdDocument, pdPage)
            contentStream.drawImage(pdImageXObject, 0, 0, 612, 792)
            contentStream.close()
            imageFile.delete()
        }
        pdDocument.save(savePath)
        pdDocument.close()
    }

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值