精华内容
下载资源
问答
  • 今天小编就为大家分享一篇关于Python实现截取PDF文件中的几页代码实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • 如何截取pdf文件中的几页

    千次阅读 2019-11-12 19:21:00
    如何截取pdf文件中的几页 首先你得有一个pdf阅读器,因为我们常用的是wps这款软件,所以我就用wps来演示如何截取 pdf 文件中的几页 用wps打开你需要截取的pdf文件,然后选择打印选项 我们对Markdown编辑器进行...

    首先你得有一个 pdf 阅读器,因为我们常用的是wps这款软件,所以我就用 wps 来演示如何截取 pdf 文件中的几页
    用wps打开你需要截取的pdf文件,然后选择 打印 选项,选择打印选项之后会出现如下界面,按照我图片中所标注的操作就能截取成功

    在这里插入图片描述

    展开全文
  • 批量截取pdf文件

    2019-02-14 19:17:48
    现在我们有大量的pdf文件,我们想要截取每个文件中感兴趣的一部分,比如,我们下载了3500份上市公司的年度报告,我们想要找到包含“关键审计事项”部分内容,将pdf相关页保存为新的pdf文件。python环境: anaconda3...

    任务

    现在我们有大量的pdf文件,我们想要截取每个文件中感兴趣的一部分,比如,我们下载了3500份上市公司的年度报告,我们想要找到包含“关键审计事项”部分内容,将pdf相关页保存为新的pdf文件。
    python环境:

    anaconda3
    pdfminer3k
    pypdf2

    解析pdf文件

    PDFMiner

    PDFMiner是一个从PDF文档中提取信息的工具。与其他PDF相关的工具不同,它只用于获取和分析文本数据。PDFMiner能获取页面中文本的准确位置,以及字体或行等其他信息。它还有一个PDF转换器,可以将PDF文件转换成其他文本格式(如HTML)。还有一个可扩展的解析器PDF,可以用于文本分析以外的其他用途。

    1. 安装pdfminer3k
    pip install pdfminder3k
    1. 解析pdf,匹配关键字,返回其所在页码

    参考

    from pdfminer.pdfparser import PDFParser, PDFDocument
    from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
    from pdfminer.converter import PDFPageAggregator
    from pdfminer.layout import LTTextBoxHorizontal, LAParams
    from pdfminer.pdfinterp import PDFTextExtractionNotAllowed
    
    path =  r'./report/603999读者传媒2017年年度报告.pdf'
    
    def  parse(path):
        """
        #解析pdf文件,并将文字内容更保存在文本中
        返回“关键字”所在的页码
        """
        fp =  open(path, 'rb') # 以二进制读模式打开
        # 用文件对象来创建一个pdf文档分析器
        praser = PDFParser(fp)
        # 创建一个PDF文档
        doc = PDFDocument()
        # 连接分析器 与文档对象
        praser.set_document(doc)
        doc.set_parser(praser)
        # 提供初始化密码
        # 如果没有密码 就创建一个空的字符串
        doc.initialize()
        # 检测文档是否提供txt转换,不提供就忽略
        if  not doc.is_extractable:
            raise PDFTextExtractionNotAllowed
        else:
            # 创建PDf 资源管理器 来管理共享资源
            rsrcmgr = PDFResourceManager()
            # 创建一个PDF设备对象
            laparams = LAParams()
            device = PDFPageAggregator(rsrcmgr, laparams=laparams)
            # 创建一个PDF解释器对象
            interpreter = PDFPageInterpreter(rsrcmgr, device)
            # 循环遍历列表,每次处理一个page的内容
            page_num=0
            key_flag=False
            for page in doc.get_pages(): # doc.get_pages() 获取page列表
                if key_flag: #如果找到第一个关键字,则退出解析
                    break
                page_num=page_num+1
                interpreter.process_page(page)
                # 接受该页面的LTPage对象
                layout = device.get_result()
                # 这里layout是一个LTPage对象 里面存放着 这个page解析出的各种对象 一般包括LTTextBox, LTFigure, LTImage, LTTextBoxHorizontal 等等 想要获取文本就获得对象的text属性,
                for x in layout:
                    if (isinstance(x, LTTextBoxHorizontal)):
                        results = x.get_text()
                        if  "关键审计事项"  in results: # 匹配到关键字,则退出该页的循环
                            key_flag=True
                            break
            return page_num

    裁剪pdf文件

    PyPDF2

    PyPDF2是一个python PDF库,能够分割、合并、裁剪和转换PDF文件的页面。它还可以向PDF文件中添加自定义数据、查看选项和密码。它可以从PDF检索文本和元数据,还可以将整个文件合并在一起。

    1. 安装pypdf2:
    pip install pypdf2
    1. 修改pypdf2的源码

    利用pypdf2截取pdf中的某几页,如果pdf的中文字编码为ANSI编码,则无法解析。对于pypdf2对于gbk不支持的现象,需要对以下两处进行修改。参考

    tips:
    ANSI是一种字符代码,为使计算机支持更多语言。ANSI编码表示英文字符时用一个字节,表示中文用两个或四个字节。在简体中文Windows操作系统中,ANSI 编码代表 GBK 编码。
    GBK是在国家标准GB2312基础上扩容后兼容GB2312的标准。

    其一:
    在文件*Miniconda3libsite-packagesPyPDF2generic.py"中第488行,改为
    此处是为了适应含有‘gbk’的编码的中文字符,提供对其的解码能力。

    try:
        return NameObject(name.decode('utf-8'))
    except (UnicodeEncodeError, UnicodeDecodeError) as e:
        # Name objects should represent irregular     characters
        # with a '#' followed by the symbol's hex number
        ret=name.decode('gbk')
        return NameObject(ret)

    其二:
    在文件*Miniconda3libsite-packagesPyPDF2utils.py中,第238-241行,改为:
    此处是为了适应‘utf-8’的编码情况;

    try:
        r = s.encode('latin-1')
        if len(s) < 2:
            bc[s] = r
        return r
    except Exception as e:
        print(s)
        r = s.encode('utf-8')
        if len(s) < 2:
            bc[s] = r
        return r
    1. 截取pdf特定页
    from PyPDF2 import PdfFileWriter, PdfFileReader
    def  pdfCrap(path,start_page,save_path):
        """
        从pdf文件中截取几页,并保存在对应pdf文件中
        """
        # 开始页
        start_page = start_page - 1
        # 截止页
        end_page = start_page +  5  # 这里设定截取5页
        output = PdfFileWriter()
        pdf_file = PdfFileReader(open(path, "rb"), strict=False)
        pdf_pages_len = pdf_file.getNumPages()
        for i  in  range(start_page, end_page):
            output.addPage(pdf_file.getPage(i)) # 在输出流中添加页
        outputStream =  open(save_path, "wb")
        output.write(outputStream)

    遍历文件夹内所有文件

    以上已经可以实现对单一pdf文件的解析以及提取特定页了,剩下的就是将整个流程串联起来,实现批量pdf文件的截取。

    import os
    def  file_name(file_dir):
        """
        获取某文件夹下,特定扩展名的文件名,
        返回特定扩展名文件列表
        """
        L=[]
        for root, dirs, files in os.walk(file_dir):
            for  file  in files:
                if os.path.splitext(file)[1] ==  '.pdf': #os.path.splitext()函数将路径拆分为文件名+扩展名
                L.append(file)
        return L

    出错怎么办

    现在,我们已经能够进行批量pdf文件的裁剪了,但在实际操作中,会发生许多意外,使得程序被中断,为了避免中断影响批处理的进程,现在添加异常处理功能。

    file_path =  './report/'  # 输入文件所在的文件夹
    result_path =  './result/'  # 输出文件所在文件夹
    def  getAll():
        """
        批量裁剪pdf文件,添加程序log,记录文件名,关键字起始页码,并且对异常情况进行记录;
        """
        files=file_name(file_path)
        for  file  in  files:
            try:
                path = file_path +  file
                page=parse(path)
                save_path=result_path+file
                pdfCrap(path,page,save_path)
                if page==0: #如果识别出起始页码为0,说明关键字未被找到,需要记录。
                    raise  Exception("page_num=0")
                with  open(r'./log.txt', 'a', encoding='utf-8') as f:
                f.write(file+' start_page: '+str(page)+"\n")
            except  Exception  as  e: # 捕获错误
                print('error: ', e)
                with  open(r'./error_log.txt', 'a', encoding='utf-8') as f:
                f.write(file+' start_page: '+str(page)+"\n")
                continue
    展开全文
  • 关于如何截取PDF文件中的几页文件

    万次阅读 2018-04-30 20:39:07
    转载:https://jingyan.baidu.com/article/90808022f0eac5fd91c80fec.html如何截取PDF文件中的几页文件分步阅读 对于一份特别大页数特别多的PDF文件,只有其中几页是我们需要的,如果每次都去找的话非常麻烦。这...

    转载:https://jingyan.baidu.com/article/90808022f0eac5fd91c80fec.html

    如何截取PDF文件中的几页文件
    分步阅读

    对于一份特别大页数特别多的PDF文件,只有其中几页是我们需要的,如果每次都去找的话非常麻烦。这时候我们如果能把这几页截取出来,单独成为一个PDF文件,以后查阅起来就会非常方便。下面我就为大家介绍一种个人感觉特别方便的一种方法,与大家共享。

    如何截取PDF文件中的几页文件

    工具/原料

    • 电脑
    • 一款PDF阅读器

    方法/

    1. 1

      到百度下载一款PDF阅读器,这里选择福昕阅读器,之后安装软件。

      如何截取PDF文件中的几页文件
    2. 2

      打开想要截取的PDF文件。

      如何截取PDF文件中的几页文件
    3. 3

      点击左上角的打印按钮,弹出打印设置对话框。

      如何截取PDF文件中的几页文件
    4. 4

      在打印机名称下拉栏中,选择Foxit Reader PDF Printer

      如何截取PDF文件中的几页文件
    5. 5

      在打印范围中选择页面,并在页面中填写你想要截取的页面范围。

      如何截取PDF文件中的几页文件
    6. 6

      点击确定,给你截取的文件进行重命名,然后点击保存,就会把你要截取的文件打印出来,并保存在相应的位置。

      如何截取PDF文件中的几页文件
      如何截取PDF文件中的几页文件
    7. 7

      这时候就截取完成了,是不是很简单哈。

    此外:可以参考
    福昕阅读器点击打印一直显示需要安装打印机
    https://jingyan.baidu.com/article/6d704a130f890c28da51ca40.html
    https://jingyan.baidu.com/article/2fb0ba406bee7200f3ec5f73.html

    展开全文
  • 首先引用itextpdf依赖: <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.13</version> </dependency> ...

    首先引用itextpdf依赖:

    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>itextpdf</artifactId>
        <version>5.5.13</version>
    </dependency>

     测试类:

    import com.itextpdf.text.Document;
    import com.itextpdf.text.DocumentException;
    import com.itextpdf.text.pdf.PdfCopy;
    import com.itextpdf.text.pdf.PdfImportedPage;
    import com.itextpdf.text.pdf.PdfReader;
    
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    public class PDFTest {
    
        public static void main(String[] args) {
            splitPDFFile("e:/glossary_old.pdf", "e:/glossary01.pdf","e:/glossary_new.pdf", 2, -1);
        }
    
        /**
         * 截取pdfFile的第from页至第end页,组成一个新的文件名
         * @param respdfFile  需要分割的PDF1
         * @param respdfFile2  需要分割的PDF2
         * @param savepath  新PDF
         * @param from  起始页
         * @param end  结束页
         */
        public static void splitPDFFile(String respdfFile, String respdfFile2, String savepath, int from, int end) {
            Document document = null;
            PdfCopy copy = null;
            try {
                PdfReader reader1 = new PdfReader(respdfFile2);
                PdfReader reader = new PdfReader(respdfFile);
                int n = reader.getNumberOfPages();
                if(end <= 0){
                    end = n;
                }
                document = new Document(reader.getPageSize(1));
                copy = new PdfCopy(document, new FileOutputStream(savepath));
                document.open();
                document.newPage();
                //写入respdfFile2的第一页作为首页
                PdfImportedPage page1 = copy.getImportedPage(reader1, 1);
                copy.addPage(page1);
    
                //写入respdfFile的from到end页
                for(int j = from; j <= end; j++) {
                    document.newPage();
                    PdfImportedPage page = copy.getImportedPage(reader, j);
                    copy.addPage(page);
                }
                document.close();
    
            } catch (IOException e) {
                e.printStackTrace();
            } catch(DocumentException e) {
                e.printStackTrace();
            }
        }
    }
    

    生成的文件内容是包含glossary01.pdf的首页和 glossary_old.pdf第2页到尾页的名为glossary_new.pdf的文件。

     

     

     

    展开全文
  • Python:截取PDF文件中的几页

    千次阅读 2018-04-18 12:47:44
    1. 把文件用Google的Chrome浏览器打开,打印其中几页,另存为PDF。简单。2. 安装Adobe的Acrobat,里面会有更全的功能。然而,收费。3. 用Python的PyPDF2包。(Python 3,亲测有效)pip install PyPDF2from PyPDF2 ...
  • 2.PDF生成方法 public String virtualDownCompReportPdf(){ String agent = request.getHeader("User-agent");//获取浏览器类型 if (agent.indexOf("MSIE") > -1) { fileName = java.n...
  • 在阅读PDF文件或caj文件,常常需要截取或摘录里面的部分文字和图片,这时就可以使用CAJViewer。  1.下载并安装CAJViewer软件  地址:http://cajviewer.cnki.net/  或者:http://pan.baidu.com/s/1hrkaNWw  2...
  • Python实现PDF文件截取

    2017-06-23 10:27:00
    python3截取PDF文件中的一部分。 from PyPDF2 import PdfFileWriter, PdfFileReader # 开始页 start_page = 0 # 截止页 end_page = 5 output = PdfFileWriter() pdf_file = PdfFileReader(open(...
  • PDF文件加密器是利用acrobat SDK开发的一款APP。用这个APP加密的文件有好几种情况,我说的是知道了阅读密码,但是有阅读次数限制和阅读时间限制的情况,加密后的文件为一个exe文件,exe文件运用了BoxedAppSDK把解密...
  • iText截取PDF

    2013-03-15 15:21:08
    此文档介绍了iText截取一定范围内的pdf文件,而且解决了期间出现的内存泄露的问题
  • 最近遇到了一个问题,需要从pdf裁剪出其中部分的...然而,原始的pdf文件4.06MB,抽取并裁剪后的子页面2.12MB,另存为的eps文件确有4.13MB。 为了将得到的eps文件进行压缩试了很多方法都不奏效,要么图片模糊了,要...
  • PdfParserPdf Parser, a standalone PHP library, provides various tools to extract data from a PDF file. Test the API on our demo page.This project is supported by Actualys.FeaturesFeatures include...
  • 主要介绍了java实现截取PDF指定页并进行图片格式转换功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
  • 此应用可以将PDF文档的第一页接取出来并生成一个新的PDF文档。
  • C#网页转pdf文件

    2017-12-19 15:28:46
    截取HTML网页内容转换成PDF文件,支持滚动网页截取截取HTML网页内容转换成PDF文件,支持滚动网页截取
  • Java-截取PDF中的某一页作为缩略图

    千次阅读 多人点赞 2021-09-14 18:21:44
    Java-截取视频资料中的一帧作为缩略图,本文使用了Apache PDFBox中的常用类(PDDocument,PDFRenderer),去读取PDF,截取PDF。同时也使用FileUtils类中的copyURLToFile方法,读取网络中的PDF资源。简单方便,可快速...
  • [Python]:关于截取pdf中的某些页

    千次阅读 2017-03-03 11:14:33
    需求如题,想从一个pdf文件截取出指定的页面。我用的工具是py2pdf。 首先,我们需要读取待处理pdf文件。import PyPDF2 as pdfinputfile = "/path/to/your/pdf/file" outputfile = "/path/to/your/new/pdf/fi
  • 截取PDF的某一页 iOS

    千次阅读 2016-04-05 13:59:26
    项目中,可能需要截取某一份PDF喜欢的页面,所以需要进行对PDF进行切割。网上找了好多资源都没解决。下面附上基于Reader第三方的解决方法。 在ReaderDocument.h中暴露两个方法 /**  保存PDF的某一页到...
  • JS生成PDF文件

    2019-10-27 19:17:43
    在做项目时,需要将后端返回来的数据经过前端网页生成pdf文件,供用户下载,这里便提供此功能的方法及demo,可以作为参考: 代码: var pdf = new jsPDF('p','pt','a4')...
  • 提取pdf文件中的文本

    2017-08-29 07:25:16
    提取pdf文件中的文字及图片(注意:只能提取可以复制文字且没有加密的pdf文件
  • from pyPdf import PdfFileWriter,PdfFileReader from django.http import HttpResponse try: from cStringIO import StringIO except: from io import BytesIo as StringIo def...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,377
精华内容 3,750
关键字:

怎么截取pdf文件