精华内容
下载资源
问答
  • PDF转换成图片

    2016-07-27 16:19:52
    PDF转换成图片,没有pdf版本要求,字体转换后不会翻转
  • PDF转成图片

    2019-04-15 20:27:36
    可是如何将PDF文件转换成图片那?目前常用的:  思路1、根据PDF绘画轨迹重新绘制图片;  思路2、是将PDF文件解析成二进制,直接将二级制转换成图片;借助这2种思路,我在网上和同事的帮助下找到了2个DLL文件(第...
  • pdf转换成图片

    2013-11-30 15:26:22
    经测试觉得非常好用,可以转换输出图片大小。
  • PDF 转成图片

    2017-07-26 16:41:00
    采用 icepdf 实现,具体参考:JAVA中pdf转图片的方法、icePDF去水印方法 import org.icepdf.core.pobjects.Document; import org.icepdf.core.pobjects.Page; import org.icepdf.core.util....

    采用 icepdf 实现,具体参考:JAVA中pdf转图片的方法icePDF去水印方法

     

    import org.icepdf.core.pobjects.Document;
    import org.icepdf.core.pobjects.Page;
    import org.icepdf.core.util.GraphicsRenderingHints;
    
    import javax.imageio.ImageIO;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    
    /**
     * PDF 转成 图片
     *
     * @author dongbz
     * @since 2017/7/26
     */
    public class Pdf2Image {
    
        /**
         * PDF 首页转成图片
         *
         * @param input     PDF文件全路径
         * @param output    生成的图片全路径
         */
        public static void firstPage2Image(String input, String output) {
            Document document = new Document();
            document.setFile(input);
    
            if (document.getNumberOfPages() <= 0) throw new RuntimeException(String.format("%s's pages le 0", input));
    
            BufferedImage image = (BufferedImage) document.getPageImage(0, GraphicsRenderingHints.SCREEN, Page.BOUNDARY_CROPBOX, 0F, 0.25F);
            File file = new File(output);
            try {
                ImageIO.write(image, "png", file);
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
            image.flush();
    
            document.dispose();
        }
    
    }

     

    转载于:https://www.cnblogs.com/zhiqsyr/p/7240497.html

    展开全文
  • pdf转成图片

    2017-10-30 13:48:34
    1.用apache的pdf转换插件:https://pdfbox.apache.org/downloads.html
      所用插件为pdfbox
    public List<EcdInvoiceOcrDto> pdfFileToPic(String picName,File invoiceFile
       ,String invoiceTypeCode) throws Exception{
      List<EcdInvoiceOcrDto> picPathList = new ArrayList<EcdInvoiceOcrDto>();
      PDDocument doc = PDDocument.load(invoiceFile);
      PDFRenderer reader = new PDFRenderer(doc);
      int pageNo = doc.getNumberOfPages();
      for (int i = 0; i < pageNo; i++) {
       //1.将pdf转为图片
       BufferedImage bfi = reader.renderImageWithDPI(i, 96);
       //2.获取图片存储路劲
       File file2 = ocrRecognitionService.getPicPath(picName);
       ImageIO.write(bfi, picName.split("\\.")[1], file2);
       /*
        * 3.新建发票实体类并设置发票的存放路劲
        * 若发票为专票或是普票则将发票图片变成二进制数组 传回 待发票识别时使用
        */
       EcdInvoiceOcrDto ecdInvoiceOcrDto = new EcdInvoiceOcrDto();
       ByteArrayOutputStream bos = null;
       FileInputStream fis=null;
       try {
        if(invoiceTypeCode.equals(IConstants.INVOICE_TYPE_SPECIAL)
          ||invoiceTypeCode.equals(IConstants.INVOICE_TYPE_PLAIN)){
         bos = new ByteArrayOutputStream();
         fis = new FileInputStream(file2);
         byte[] data=new byte[2048];
         int len=0;
         while((len=fis.read(data))!=-1){
          bos.write(data, 0, len);
         }
         bos.flush();
         ecdInvoiceOcrDto.setImageStreamStr(new BASE64Encoder().encode(bos.toByteArray()));
        }
       } catch (Exception e) {
        logger.error("读取图片成二进制数组失败",e);
        throw new Exception();
       }finally{
        if(bos!=null){
         bos.close();
        }
        if(fis!=null){
         fis.close();
        }
       }
       
       ecdInvoiceOcrDto.setPicPath(file2.getAbsolutePath());
       ecdInvoiceOcrDto.setImageName(file2.getName());
       picPathList.add(ecdInvoiceOcrDto);
      }
      return picPathList;
     }
    



    
    展开全文
  • Pdf转成图片

    2017-11-30 16:36:51
    public static void PDFtoImage(String filePath){ PDDocument pdf = null; try{ pdf = PDDocument.load(new File(filePath)); PDFRenderer pdfRenderer = new PDFRenderer
    public static void PDFtoImage(String filePath){
            PDDocument pdf = null;
            try{
                pdf = PDDocument.load(new File(filePath));
                PDFRenderer pdfRenderer = new PDFRenderer(pdf);
                PDPageTree pageTree = pdf.getPages();
                int pageCounter = 0;
                for(PDPage page :pageTree){
                    BufferedImage bim = pdfRenderer.renderImage(pageCounter,2.5f, ImageType.RGB);
                    ImageIOUtil.writeImage(bim,"E:\\test\\"+(pageCounter++)+".jpg",1080);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    maven:

    <dependency>
                <groupId>org.apache.pdfbox</groupId>
                <artifactId>pdfbox</artifactId>
                <version>2.0.0</version>
            </dependency>
    
            <dependency>
                <groupId>org.apache.pdfbox</groupId>
                <artifactId>pdfbox-tools</artifactId>
                <version>2.0.8</version>
            </dependency>
    
    展开全文
  • Spire.Pdf 把PDF转成图片

    2020-08-26 11:06:54
    Spire.Pdf.dll,可以把PDF转成图片,实测.net core可以,压缩包里包含Spire.Pdf.dll和Spire.License.dll
  • PDF转换成图片.zip

    2020-10-28 15:17:27
    PDF转换成图片的案例,如果不想下载,我的博客有源码和图片讲解,希望可以帮助到大家!
  • 【PyMuPDF和pdf2image】Python将PDF转成图片

    万次阅读 多人点赞 2019-08-03 16:19:46
    前言:在最近的测试中遇到一个与PDF相关的测试需求,其中有一个过程是将...下面首先分享一下Python将PDF转换成图片,Java+PDFBox将PDF转成图片 需求:我需要先将PDF转换成为PNG图片,并截取图片的一部分存储,然后...

    前言:在最近的测试中遇到一个与PDF相关的测试需求,其中有一个过程是将PDF转换成图片,然后对图片进行测试。

    粗略的试了好几种方式,其中语言尝试了Python和Java,总体而言所找到的Python方式相对比Java更快一些,更简单一些。
    下面首先分享一下Python将PDF转换成图片,Java+PDFBox将PDF转成图片

    需求:我需要先将PDF转换成为PNG图片,并截取图片的一部分存储,然后作为测试目标进行测试。
    操作:
    1、PDF转PNG图片
    2、对PNG图片进行指定区域截图,在另存到指定文件夹下
    针对截图此处所找到的方法如上一篇文章:Python图片裁剪的两种方式——Pillow和OpenCV

    1、PyMuPDF将PDF转换成图片

    pip install PyMuPDF

    import sys, fitz
    import os
    import datetime
    
    def pyMuPDF_fitz(pdfPath, imagePath):
        startTime_pdf2img = datetime.datetime.now()#开始时间
        
        print("imagePath="+imagePath)
        pdfDoc = fitz.open(pdfPath)
        for pg in range(pdfDoc.pageCount):
            page = pdfDoc[pg]
            rotate = int(0)
            # 每个尺寸的缩放系数为1.3,这将为我们生成分辨率提高2.6的图像。
            # 此处若是不做设置,默认图片大小为:792X612, dpi=72
            zoom_x = 1.33333333 #(1.33333333-->1056x816)   (2-->1584x1224)
            zoom_y = 1.33333333
            mat = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)
            pix = page.getPixmap(matrix=mat, alpha=False)
            
            if not os.path.exists(imagePath):#判断存放图片的文件夹是否存在
                os.makedirs(imagePath) # 若图片文件夹不存在就创建
            
            pix.writePNG(imagePath+'/'+'images_%s.png' % pg)#将图片写入指定的文件夹内
            
        endTime_pdf2img = datetime.datetime.now()#结束时间
        print('pdf2img时间=',(endTime_pdf2img - startTime_pdf2img).seconds)
    
    
    if __name__ == "__main__":
        pdfPath = '../path/demo.pdf'
        imagePath = '../path/image'
        pyMuPDF_fitz(pdfPath, imagePath)

    PDF文档页数超过100页的话需要十几秒,因为先转换成一整张1056X816的图片,再对本地文件中的所有图片进行遍历截图,时间上比较慢,通过查看文档发现:
    还可以在转换的同时指定图片的大小,对图片指定区域进行截取,这样快很多,一步到位,省去了二次截图的过程,前提使我们必须要知道想要截取哪一块区域并保存
    官方示例代码如下:

    #下面的这段代码就是想要从一页PDF的中心点为起点截取到右下角的区域,截取整张图的1/4.
    >>> mat = fitz.Matrix(2, 2)                  # 在每个方向缩放因子2
    >>> rect = page.rect                         # 页面的矩形
    >>> mp = rect.tl + (rect.br - rect.tl) * 0.5 # 矩形的中心
    >>> clip = fitz.Rect(mp, rect.br)            # 我们想要的剪切区域
    >>> pix = page.getPixmap(matrix = mat, clip = clip)
    
    

    实际用到的例子是:
    整张图片导出之后是1056*816,但是我想要的是这张图片最底部的部分1056*75,相当于PDF文档的页脚部分。
     

    import sys, fitz
    import os
    import datetime
    
    def pyMuPDF_fitz(pdfPath, imagePath):
        startTime_pdf2img = datetime.datetime.now()#开始时间
        
        pdfDoc = fitz.open(pdfPath)
        for pg in range(pdfDoc.pageCount):
            page = pdfDoc[pg]
            rotate = int(0)
            # 每个尺寸的缩放系数为1.3,这将为我们生成分辨率提高2.6的图像。
            # 此处若是不做设置,默认图片大小为:792X612, dpi=72
            zoom_x = 1.33333333 #(1.33333333-->1056x816)   (2-->1584x1224)
            zoom_y = 1.33333333
            mat = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)
            pix = page.getPixmap(matrix=mat, alpha=False)
            
            if not os.path.exists(imagePath):#判断存放图片的文件夹是否存在
                os.makedirs(imagePath) # 若图片文件夹不存在就创建
            
            pix.writePNG(imagePath+'/'+'images_%s.png' % pg)#将图片写入指定的文件夹内
            
        endTime_pdf2img = datetime.datetime.now()#结束时间
        print('pdf2img时间=',(endTime_pdf2img - startTime_pdf2img).seconds)
    
    def pyMuPDF2_fitz(pdfPath, imagePath):
        pdfDoc = fitz.open(pdfPath) # open document
        for pg in range(pdfDoc.pageCount): # iterate through the pages
            page = pdfDoc[pg]
            rotate = int(0)
            # 每个尺寸的缩放系数为1.3,这将为我们生成分辨率提高2.6的图像
            # 此处若是不做设置,默认图片大小为:792X612, dpi=72
            zoom_x = 1.33333333 #(1.33333333-->1056x816)   (2-->1584x1224)
            zoom_y = 1.33333333
            mat = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate) # 缩放系数1.3在每个维度  .preRotate(rotate)是执行一个旋转
            rect = page.rect                         # 页面大小
            mp = rect.tl + (rect.bl - (0,75/zoom_x)) # 矩形区域    56=75/1.3333
            clip = fitz.Rect(mp, rect.br)            # 想要截取的区域
            pix = page.getPixmap(matrix=mat, alpha=False, clip=clip) # 将页面转换为图像
            if not os.path.exists(imagePath):
                os.makedirs(imagePath)
            pix.writePNG(imagePath+'/'+'psReport_%s.png' % pg)# store image as a PNG
    
    if __name__ == "__main__":
        pdfPath = '../path/demo.pdf'
        imagePath = '../path/image'
        #pyMuPDF_fitz(pdfPath, imagePath)#只是转换图片
        pyMuPDF2_fitz(pdfPath, imagePath)#指定想要的区域转换成图片


    当然上面这种是综合下来最快的,另外再介绍一种方法pdf2image

    2、pdf2image 将PDF转换成图片

    pdf2image也是个包装器,真正的转换工具是poppler
    GitHub地址:https://github.com/Belval/pdf2image ,上面也有相关的配置说明。

    1、安装pdf2image: pip install pdf2image
    2、Windows安装配置poppler(这里只介绍Windows,Mac和Linux去上面Github地址里面参考官网)
    Windows用户必须为Windows安装poppler (http://blog.alivate.com.au/poppler-windows/),然后将bin/文件夹添加到PATH(开始>输入env>编辑系统环境变量>环境变量...>系统变量>Path)

    注意这里配置之后需要重启一下电脑才会生效,不然会报如下错误:
    ERROE:FileNotFoundError: [WinError 2] The system cannot find the file specified     
    During handling of the above exception, another exception occurred:

    3、pip install pillow (如果你还没有安装过的话)

    from pdf2image import convert_from_path,convert_from_bytes
    import tempfile
    from pdf2image.exceptions import (
        PDFInfoNotInstalledError,
        PDFPageCountError,
        PDFSyntaxError
    )
    
    def pdf2image2(pdfPath, imagePath, pageNum):
        #方法一:
        #convert_from_path('a.pdf', dpi=500, "output",fmt="JPEG",output_file="ok",thread_count=4)
        #这会将a.pdf转换成在output文件夹下形如ok_线程id-页码.jpg的一些文件。
        #若不指定thread_count则默认为1,并且在文件名中显示id. 这种转换是直接写入到磁盘上的,因此不会占用太多内存。
        
        #下面的写法直接写入到内存,默认是C:\Users\pppp\AppData\Local\Temp\生成的uuid4名字
        images = convert_from_path(pdfPath, dpi=72)
        for image in images:
            if not os.path.exists(imagePath):
                os.makedirs(imagePath)
            image.save(imagePath+'/'+'psReport_%s.png' % images.index(image), 'PNG')
        
        #方法二:
        images = convert_from_bytes(open('/home/belval/example.pdf', 'rb').read())
        for image in images:
            if not os.path.exists(imagePath):
                os.makedirs(imagePath)
            image.save(imagePath+'/'+'psReport_%s.png' % images.index(image), 'PNG')    
        
        #方法三,也是最推荐的方法
        with tempfile.TemporaryDirectory() as path:
            images_from_path = convert_from_path(pdfPath, output_folder=path, dpi=72)
            for image in images_from_path:
                if not os.path.exists(imagePath):
                    os.makedirs(imagePath)
                image.save(imagePath+'/'+'psReport_%s.png' % images_from_path.index(image), 'PNG')
            print(images_from_path)
        

    以下是参数定义:

    convert_from_path(pdf_path, dpi=200, output_folder=None, first_page=None, last_page=None, fmt='ppm', thread_count=1, userpw=None, use_cropbox=False, strict=False, transparent=False, single_file=False, output_file=str(uuid.uuid4()), poppler_path=None)

    convert_from_bytes(pdf_file, dpi=200, output_folder=None, first_page=None, last_page=None, fmt='ppm', thread_count=1, userpw=None, use_cropbox=False, strict=False, transparent=False, single_file=False, output_file=str(uuid.uuid4()), poppler_path=None)
     

    pdf_path --> 要转换的PDF文档路径
    dpi -->  DPI中的图像质量(默认为200),Windows默认为96dpi
    output_folder --> 将生成的图像写入文件夹(而不是直接写入内存)若是path不做指定的话,path的默认地址是:C:\Users\pppp\AppData\Local\Temp\生成的uuid4。
    first_page --> 从哪一页开始转换,默认是PDF的第一页
    last_page --> 转换到哪一页,默认是PDF的最后一页
    fmt --> 输出图像格式默认格式是ppm,还可以设置为png和jpeg等
    thread_count --> 允许生成多少个线程进行处理,一般不超过4个线程;
    userpw -->  PDF的密码(若有密码的话需要添加)
    use_cropbox --> 使用cropbox而不是mediabox
    strict --> 参数允许您使用自定义类型PDFSyntaxError捕获pdftoppm语法错误
    transparent --> 参数允许生成没有背景的图像,而不是通常的白色图像(为此需要pdftocairo)
    single_file --> 使用pdftoppm / pdftocairo中的-singlefile选项
    output_file --> 输出文件名是什么
    poppler_path --> 查找poppler二进制文件的路径,允许用户使用poppler_path指定poppler的安装路径;默认不指定的话需要将bin添加到系统PATH


    pdf2image应该也可以对指定区域进行截取,暂时还没详细研究其方法,因为已经找到更快的方法解决问题了,对比如下所示:

    比较PyMuPDF和pdf2image

    以下是对一份75页的PDF,输出DPI=96的时间性能对比,pdf2image使用的是默认线程数,下面的对比并没有设置多线程,使用多线程会快一点,当线程数设为5的时候,速度是9秒。

    PDF转换图片的方式 pdf2image pyMuPDF_Fitz pyMuPDF2_Fitz
    (对图片进行指定区域裁剪)
    时间(秒) 11.88 4.5 0.9
    依赖包 pip install pdf2image
    poppler
    pip install pillow
    pip install PyMuPDF

    可以看出使用pyMuPDF_Fitz明显快一倍多,最终选取了这种方式。

     

    3、Wand将PDF转换成图片

    和pdf2image一样,wand都是包装接口(bindings),而实际进行转换的工具是ImageMagick.
    Wind官网:http://docs.wand-py.org/en/0.5.6/

    ImageMagick: https://imagemagick.org/script/download.php#windows

    from wand.image import Image
    
    filename="somefile.pdf"
    
    with(Image(filename=filename, resolution=120)) as source: 
        images = source.sequence
        pages = len(images)
        for i in range(pages):
            n = i + 1
            newfilename = filename[:-4] + str(n) + '.jpeg'
            Image(images[i]).save(filename=newfilename)

    由于问题已经解决,而且性能也还不错,就没有具体去研究Wind这种方式了,感兴趣的可以去看看。
     


    2020/10/07 更新
    感谢gingeers同学 ,很细心,查阅了API官方文档,发现文中的错误。
    现在已经更正
    默认的DPI是72,不是之前的96。

    展开全文
  • 将各种各样的pdf转成图片,是比较普遍的需求,不过目前的各种转换器,不是收费,就是限制转换数量,要不就是强制加水印,很烦。 这里我们使用PS打开PDF,然后使用PS的宏,一键将图片保存到本地 一、使用PS打开...
  • 下面小编就为大家分享一篇Python 将pdf转成图片的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • pdf转换成图片所用的jar包,包括常用的fontbox-2.0.9.jar和pdfbox-2.0.9.jar,以及pdfbox-debugger-2.0.9.jar,pdfbox-tools-2.0.9.jar,preflight-2.0.9.jar,xmpbox-2.0.9.jar
  • ghostscript把C# pdf转换成图片ghostscript把C# pdf转换成图片
  • PDF转换成图片的方法

    2019-09-12 02:09:44
    PDF文件转换成图片可以更好的查看,还有就是为了工作,PDF转换成图片利用在线转换器也可以完成,下面小编就带着大家来操作一下PDF转换成图片的操作方法。 1:在浏览器搜索迅捷PDF在线转换器,进入网站的首页,也要...
  • 将pdf转换成图片在转换回pdf文件 之所有要这么做主要是曲线解决pdf文本内容增加覆盖层后依然可以复制出来的...pdf转图片的过程中遇到了几个问题? 图片清晰度问题? 图片内容失真问题? 为了解决第一个问题,我在...
  • 奇好PDF转成图片

    2014-09-20 08:55:46
    奇好PDF转成图片,非常好用的软件,直接打印,WORD等都可以直接使用
  • 找了号就才找到,不不需要安装任何工具,PDF转换成图片,亲测100%可用,源码版
  • 文件都是互相转换的,我们办公用到的PDF文件也是一样,有些人就是喜欢把PDF转成图片查看,我打死都不会告诉你是我的,PDF转成图片如何转换呢?我这里有2种方法 方法1 1在百度中去搜索关键词迅捷pdf在线转换器,...
  • 奇好PDF转成图片工具是一款可以帮助用户将PDF文件转换成图片的免费工具,该pdf转图片工具支持批量PDF文档转换,是用户转换PDF文件到图片的好帮手,快来下载体验吧。 特点介绍: 1、把PDF文件转换成图片,一页一个...
  • 本篇文章带大家使用Java来实现生成Word、Excel文档,然后将Word或Excel文档转换成PDF,最后再将PDF转换成图片,这里是根据我业务需求进行开发(我这边是对接第三方公司将检测数据同步的时候入库并且生成检测报告,...
  • 主要介绍了PHP中使用imagick实现把PDF转成图片,本文着重讲解了2个错误的处理,特别是GhostScript错误,需要的朋友可以参考下
  • 利用ghostscript把C# pdf转换成图片利用ghostscript把C# pdf转换成图片利用ghostscript把C# pdf转换成图片

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,562
精华内容 1,424
关键字:

pdf转成图片