【问题标题】:How to extract images, video and audio from a pdf file using python如何使用python从pdf文件中提取图像、视频和音频
【发布时间】:2023-01-14 22:47:04
【问题描述】:

我需要一个可以从 pdf 中提取视频音频和图像的 python 程序。我曾尝试使用 PyPDF2 和 Pillow 等库,但我无法让这三个库都起作用,更不用说一个了。

【问题讨论】:

    标签: python image pdf audio video


    【解决方案1】:

    这应该工作:

    import os
    from wand.image import Image
    from PyPDF2 import PdfFileReader
    
    #specify the path of the pdf
    path = os.path.join('sample_pdf.pdf')
    
    #open the pdf file
    with open(path, 'rb') as pdf:
        pdf_reader = PdfFileReader(pdf)
        num_pages = pdf_reader.getNumPages()
       
        #iterate through each page
        for page in range(num_pages):
            page_obj = pdf_reader.getPage(page)
            xObject = page_obj['/Resources']['/XObject'].getObject()
           
            #iterate through each object in the page
            for obj in xObject:
                if xObject[obj]['/Subtype'] == '/Image':
                    size = (xObject[obj]['/Width'], xObject[obj]['/Height'])
                    data = xObject[obj].getData()
                    
                    #check if the object is an image or a video
                    if xObject[obj]['/Filter'] == '/FlateDecode':
                        img = Image(blob=data, size=size)
                        path = 'page_'+str(page)+'_'+obj[1:]+'.jpg'
                        img.save(filename=path)
                        print('Saved page_%s_%s as JPG' % (page, obj[1:]))
                    elif xObject[obj]['/Filter'] == '/DCTDecode':
                        path = 'page_'+str(page)+'_'+obj[1:]+'.mp4'
                        with open(path, 'wb') as f:
                            f.write(data)
                        print('Saved page_%s_%s as MP4' % (page, obj[1:]))
                    else:
                        path = 'page_'+str(page)+'_'+obj[1:]+'.wav'
                        with open(path, 'wb') as f:
                            f.write(data)
                        print('Saved page_%s_%s as WAV' % (page, obj[1:]))
    

    或者这个图片:

    import requests
    from bs4 import BeautifulSoup
    
    username = input("Enter the username of the Instagram user: ")
    
    url = f"https://www.instagram.com/{username}/"
    
    req = requests.get(url)
    soup = BeautifulSoup(req.text, 'html.parser')
    
    posts = soup.findAll('div', class_="v1Nh3 kIKUG  _bz0w")
    
    for post in posts:
        img_src = post.find('img')['src']
        img_name = img_src.split('/')[-1]
        img_data = requests.get(img_src).content
        with open(img_name, 'wb') as handler:
            handler.write(img_data)
        print(f"{img_name} downloaded")
    

    【讨论】:

      猜你喜欢
      • 2013-10-13
      • 2012-07-10
      • 1970-01-01
      • 2016-04-26
      • 2012-12-12
      • 2014-08-14
      • 2011-07-27
      相关资源
      最近更新 更多