最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用Python實(shí)現(xiàn)文檔格式互轉(zhuǎn)的操作大全(PDF、Word、圖片、Markdown)

 更新時(shí)間:2025年11月14日 09:50:56   作者:愛分享的飄哥  
客戶要求提交簡(jiǎn)歷必須是PDF,但你只有Word版,手動(dòng)轉(zhuǎn)換后格式全亂,需要從PDF報(bào)告中提取圖表,卻發(fā)現(xiàn)無(wú)法直接復(fù)制,只能一張張截圖,所以本文將手把手教你如何利用Python輕松實(shí)現(xiàn)DF、Word、圖片、Markdown的高效轉(zhuǎn)換,需要的朋友可以參考下

前言: 文檔格式不統(tǒng)一,轉(zhuǎn)換麻煩

我們?cè)谌粘I钪薪?jīng)常碰到這樣的場(chǎng)景。

客戶要求提交簡(jiǎn)歷必須是PDF,但你只有Word版,手動(dòng)轉(zhuǎn)換后格式全亂。

需要從PDF報(bào)告中提取圖表,卻發(fā)現(xiàn)無(wú)法直接復(fù)制,只能一張張截圖。

制作演示文稿,收集到的圖片大小、格式五花八門,插入后需要反復(fù)調(diào)整。

我們今天將手把手教你如何利用Python,輕松實(shí)現(xiàn):

PDF與圖片互轉(zhuǎn): 批量提取PDF中的圖片,或?qū)⒍鄨D合為PDF。

Word與PDF互轉(zhuǎn): 輕松實(shí)現(xiàn)Word批量轉(zhuǎn)PDF,甚至嘗試PDF轉(zhuǎn)Word。

Markdown文檔轉(zhuǎn)換: 讓你的極客筆記瞬間變成專業(yè)PDF/Word報(bào)告。

最終,你將擁有一個(gè)強(qiáng)大的文檔格式轉(zhuǎn)換工廠,

讓你的文件管理和傳輸效率翻倍,老板看了都點(diǎn)贊!

1.PDF與圖片互轉(zhuǎn):批量處理

PDF雖然方便查看,但要提取其中的圖片或?qū)⒋罅繄D片打包成PDF,手動(dòng)操作非常麻煩。

Python能幫你批量處理這些需求,實(shí)現(xiàn)PDF轉(zhuǎn)圖片和圖片轉(zhuǎn)PDF的自動(dòng)化!

如何實(shí)現(xiàn)呢?

PDF轉(zhuǎn)圖片: PyMuPDF可以渲染PDF頁(yè)面,并將其保存為圖片。
圖片轉(zhuǎn)PDF: Pillow可以創(chuàng)建圖片,PyMuPDF可以將圖片插入到PDF頁(yè)面。

1.1DF轉(zhuǎn)多張圖片:將PDF內(nèi)容提取為圖像

場(chǎng)景: 你收到一份有插圖的PDF報(bào)告,想把里面的圖表或每一頁(yè)都提取出來(lái)作為圖片素材,用于

PPT或網(wǎng)頁(yè)展示。手動(dòng)截圖不僅分辨率低,還耗時(shí)。

方案: 利用PyMuPDF,可以批量將PDF的每一頁(yè)高質(zhì)量地轉(zhuǎn)換為圖片,并支持多種圖片格式和分辨率。
安裝:

pip install PyMuPDF

代碼:

import fitz # PyMuPDF
import os

def pdf_to_images(pdf_path, output_folder, img_format="png", dpi=200):
    """
    將PDF文件的每一頁(yè)轉(zhuǎn)換為一張圖片。
    這是PDF轉(zhuǎn)圖片和Python文件轉(zhuǎn)換的核心功能。
    :param pdf_path: 源PDF文件路徑
    :param output_folder: 圖片輸出文件夾
    :param img_format: 輸出圖片格式 (如 "png", "jpeg", "jpg")
    :param dpi: 圖片分辨率 (Dots Per Inch),DPI越高圖片越清晰但文件越大
    """
    if not os.path.exists(pdf_path): return print(f"? PDF文件不存在:{pdf_path}")
    os.makedirs(output_folder, exist_ok=True)

    print(f"?? 正在將 '{os.path.basename(pdf_path)}' 轉(zhuǎn)換為多張圖片...")
    try:
        doc = fitz.open(pdf_path)
        zoom = dpi / 72 # 計(jì)算縮放比例 (1英寸=72點(diǎn))
        mat = fitz.Matrix(zoom, zoom) # 縮放矩陣

        for page_num in range(doc.page_count):
            page = doc.load_page(page_num)
            pix = page.get_pixmap(matrix=mat) # 獲取頁(yè)面的像素圖
            
            output_image_path = os.path.join(output_folder, f"{os.path.splitext(os.path.basename(pdf_path))[0]}_page_{page_num+1}.{img_format}")
            
            # 保存像素圖為圖片文件
            pix.save(output_image_path)
            print(f"   ? 已生成圖片:'{os.path.basename(output_image_path)}'")
        
        doc.close()
        print(f"? PDF批量轉(zhuǎn)圖片完成!結(jié)果保存到:'{output_folder}'")
        return True
    except Exception as e:
        print(f"? PDF轉(zhuǎn)圖片失?。簕e}")
        return False

if __name__ == "__main__":
    # 準(zhǔn)備測(cè)試PDF文件 (多頁(yè),包含文本和可能圖片)
    source_pdf = os.path.expanduser("~/Desktop/presentation.pdf")
    if not os.path.exists(source_pdf):
        doc = fitz.open()
        p1 = doc.new_page(); p1.insert_text(fitz.Point(50,50), "第一頁(yè)內(nèi)容和圖表");
        p2 = doc.new_page(); p2.insert_text(fitz.Point(50,50), "第二頁(yè)內(nèi)容");
        doc.save(source_pdf); doc.close()

    output_images_folder = os.path.expanduser("~/Desktop/PDF轉(zhuǎn)圖片結(jié)果")
    
    # 示例1:將PDF轉(zhuǎn)換為PNG圖片,分辨率200DPI
    pdf_to_images(source_pdf, output_images_folder, img_format="png", dpi=200)

    # 示例2:轉(zhuǎn)換為JPG圖片,分辨率300DPI (更高質(zhì)量,更大文件)
    # pdf_to_images(source_pdf, os.path.join(os.path.dirname(output_images_folder), "PDF_to_JPG"), img_format="jpg", dpi=300)

操作:

安裝庫(kù): pip install PyMuPDF。

準(zhǔn)備PDF文件: 在桌面準(zhǔn)備一個(gè)多頁(yè)P(yáng)DF(如presentation.pdf)。

修改代碼路徑和參數(shù): 修改 source_pdf、output_images_folder 和 img_format/dpi。

運(yùn)行: 運(yùn)行 python pdf_to_images.py。

效果展示:

1.2多張圖片合并為一張PDF:快速制作PDF文檔

場(chǎng)景: 你有大量圖片(如掃描件、產(chǎn)品圖集、幻燈片截圖),需要將它們快速整理成一份PDF文檔,方便分享或存檔。

方案: PyMuPDF能讓你將多張圖片一鍵合并為一張多頁(yè)P(yáng)DF文檔,并可以控制每張圖片在PDF中的顯示方式。

代碼:

import fitz # PyMuPDF
from PIL import Image # 用于處理圖片
import os

def images_to_pdf(image_paths, output_pdf_path):
    """
    將多張圖片合并為一個(gè)PDF文件。
    這是Python文件轉(zhuǎn)換和圖片轉(zhuǎn)PDF的核心功能。
    :param image_paths: 包含所有要合并的圖片文件路徑的列表
    :param output_pdf_path: 輸出PDF文件路徑
    """
    if not image_paths: return print("? 沒有提供圖片文件路徑。")
    os.makedirs(os.path.dirname(output_pdf_path), exist_ok=True)

    print(f"?? 正在合并 {len(image_paths)} 張圖片到 '{os.path.basename(output_pdf_path)}'...")
    doc = fitz.open() # 創(chuàng)建一個(gè)新的PDF文檔

    try:
        for img_path in image_paths:
            if not os.path.exists(img_path):
                print(f"?? 圖片文件不存在,跳過:{os.path.basename(img_path)}")
                continue
            
            # 為每張圖片創(chuàng)建一個(gè)新頁(yè)面
            # fitz.open(img_path) 可以直接打開圖片文件作為PDF文檔處理
            img_doc = fitz.open(img_path)
            new_page_width = img_doc[0].rect.width
            new_page_height = img_doc[0].rect.height
            img_doc.close() # 關(guān)閉臨時(shí)文檔
            
            # 創(chuàng)建一個(gè)新頁(yè)面,尺寸與圖片匹配 (或者使用A4尺寸,然后縮放圖片)
            page = doc.new_page(width=new_page_width, height=new_page_height) 
            
            # 插入圖片到頁(yè)面 (覆蓋整個(gè)頁(yè)面)
            rect = page.rect # 頁(yè)面大小
            page.insert_image(rect, filename=img_path)
            print(f"   ? 已添加圖片:'{os.path.basename(img_path)}' 到PDF。")
        
        doc.save(output_pdf_path)
        print(f"? 圖片合并到PDF完成!結(jié)果保存到:'{output_pdf_path}'")
        return True
    except Exception as e:
        print(f"? 圖片合并到PDF失?。簕e}")
        return False
    finally:
        doc.close()

if __name__ == "__main__":
    # 準(zhǔn)備測(cè)試圖片文件 (多張)
    img1_path = os.path.expanduser("~/Desktop/scan_page1.png")
    img2_path = os.path.expanduser("~/Desktop/scan_page2.png")
    output_pdf = os.path.expanduser("~/Desktop/scanned_document.pdf")

    # 簡(jiǎn)單創(chuàng)建模擬圖片文件
    if not os.path.exists(img1_path):
        Image.new('RGB', (800, 600), color = 'red').save(img1_path)
    if not os.path.exists(img2_path):
        Image.new('RGB', (800, 600), color = 'blue').save(img2_path)

    images_to_convert = [img1_path, img2_path]
    images_to_pdf(images_to_convert, output_pdf)

步驟:

安裝庫(kù): pip install PyMuPDF Pillow。

準(zhǔn)備圖片文件: 在桌面準(zhǔn)備多張圖片文件(如scan_page1.png, scan_page2.png)。

修改代碼路徑: 修改 images_to_convert 列表中的路徑和 output_pdf。

運(yùn)行: 運(yùn)行 python images_to_pdf.py。

效果展示:

2.實(shí)現(xiàn)Word與PDF互轉(zhuǎn):一鍵搞定報(bào)告、合同格式!

Word和PDF是職場(chǎng)中最常用的兩種文檔格式。Python能幫你一鍵在它們之間進(jìn)行高效轉(zhuǎn)換,徹底告別文檔格式不統(tǒng)一的煩惱!

實(shí)現(xiàn):
Word轉(zhuǎn)PDF: 通常需要借助外部工具或虛擬打印功能,因?yàn)樗婕癢ord文檔的渲染。docx2pdf是一個(gè)不錯(cuò)的選擇。

PDF轉(zhuǎn)Word: 這是一個(gè)挑戰(zhàn)性任務(wù),因?yàn)镻DF主要用于顯示,不含結(jié)構(gòu)信息。雖然有庫(kù)能提取文本,但保留原始排版非常困難

2.1Word批量轉(zhuǎn)PDF:最常見的文檔分發(fā)需求

場(chǎng)景: 你需要將幾十份Word報(bào)告或合同轉(zhuǎn)換成PDF格式,方便分發(fā)和防止篡改。手動(dòng)另存為PDF,效率低下。

方案: docx2pdf庫(kù)能幫你一鍵批量將Word文檔轉(zhuǎn)換為PDF,并保持良好的格式。

代碼:

from docx2pdf import convert # 導(dǎo)入轉(zhuǎn)換函數(shù)
import os

def batch_word_to_pdf(source_folder, output_folder):
    """
    批量將Word文檔轉(zhuǎn)換為PDF文件。
    這是Word轉(zhuǎn)PDF和Python文件轉(zhuǎn)換的核心功能。
    :param source_folder: 源Word文檔文件夾路徑
    :param output_folder: 輸出PDF文件文件夾
    """
    if not os.path.exists(source_folder): return print(f"? 源文件夾不存在:{source_folder}")
    os.makedirs(output_folder, exist_ok=True)

    print(f"?? 正在批量將 '{source_folder}' 下的Word文檔轉(zhuǎn)換為PDF...")
    processed_count = 0
    # 遍歷文件夾中的所有.docx文件
    for filename in os.listdir(source_folder):
        if filename.lower().endswith('.docx'):
            source_path = os.path.join(source_folder, filename)
            output_pdf_path = os.path.join(output_folder, os.path.splitext(filename)[0] + ".pdf")
            
            try:
                # **核心操作:調(diào)用 docx2pdf.convert()**
                convert(source_path, output_pdf_path)
                print(f"   ? 轉(zhuǎn)換成功:'{filename}' -> '{os.path.basename(output_pdf_path)}'")
                processed_count += 1
            except Exception as e:
                print(f"? 轉(zhuǎn)換 '{filename}' 失?。簕e}。請(qǐng)確保Office/WPS等已安裝。")
        else:
            print(f"?? 跳過非Word文件:{filename}")
    print(f"? Word批量轉(zhuǎn)PDF完成!共轉(zhuǎn)換 {processed_count} 個(gè)文件。")
    return True

if __name__ == "__main__":
    # 準(zhǔn)備測(cè)試Word文檔 (放入一些.docx文件)
    source_word_folder = os.path.expanduser("~/Desktop/MyWordReports")
    output_pdf_folder = os.path.expanduser("~/Desktop/PDFReports")
    os.makedirs(source_word_folder, exist_ok=True)

    # 簡(jiǎn)單創(chuàng)建模擬Word文檔
    from docx import Document as DocxDocument
    if not os.path.exists(os.path.join(source_word_folder, "report1.docx")):
        doc = DocxDocument(); doc.add_paragraph("這是報(bào)告1"); doc.save(os.path.join(source_word_folder, "report1.docx"))
    if not os.path.exists(os.path.join(source_word_folder, "contract.docx")):
        doc = DocxDocument(); doc.add_paragraph("這是一份合同"); doc.save(os.path.join(source_word_folder, "contract.docx"))

    batch_word_to_pdf(source_word_folder, output_pdf_folder)

步驟:

安裝庫(kù): pip install docx2pdf。注意:docx2pdf庫(kù)需要你的系統(tǒng)安裝了Microsoft Office Word、WPS Office或LibreOffice,它會(huì)調(diào)用這些軟件進(jìn)行轉(zhuǎn)換。

準(zhǔn)備Word文件: 在桌面創(chuàng)建MyWordReports文件夾,放入一些.docx文件。

修改代碼路徑: 修改 source_word_folder 和 output_pdf_folder。

運(yùn)行: 運(yùn)行 python word_to_pdf.py。

效果展示:

2.2PDF轉(zhuǎn)Word:挑戰(zhàn)與限制并存的“逆向工程”

場(chǎng)景: 你收到一份PDF文檔,但需要對(duì)其內(nèi)容進(jìn)行編輯,或提取其結(jié)構(gòu)化信息到Word中。PDF的固定格式讓你束手無(wú)策。

方案: PDF轉(zhuǎn)Word是一個(gè)非常困難的“逆向工程”! 因?yàn)镻DF是用來(lái)“顯示”的,它不包含Word那樣的段落、字體、樣式等結(jié)構(gòu)化信息。

難點(diǎn):Python庫(kù)(如pdfminer.six、PyMuPDF用于提取文本,但要完美還原Word格式,幾乎不可能。通常需要借助外部專業(yè)工具(如Adobe Acrobat、在線轉(zhuǎn)換器)或復(fù)雜的OCR技術(shù)。PyMuPDF可以提取文本,但排版還原困難。

代碼:

import fitz # PyMuPDF
import os

def pdf_to_text(pdf_path, output_txt_path):
    """
    從PDF文件中提取純文本內(nèi)容。
    這是PDF轉(zhuǎn)Word(文本部分)的基礎(chǔ)。
    :param pdf_path: 源PDF文件路徑
    :param output_txt_path: 輸出文本文件路徑
    """
    if not os.path.exists(pdf_path): return print(f"? PDF文件不存在:{pdf_path}")
    os.makedirs(os.path.dirname(output_txt_path), exist_ok=True)

    print(f"?? 正在從 '{os.path.basename(pdf_path)}' 提取文本...")
    try:
        doc = fitz.open(pdf_path)
        text_content = ""
        for page_num in range(doc.page_count):
            page = doc.load_page(page_num)
            text_content += page.get_text() # 提取頁(yè)面所有文本
        doc.close()
        
        with open(output_txt_path, "w", encoding="utf-8") as f:
            f.write(text_content)
        print(f"? 文本提取成功!保存到:'{output_txt_path}'")
        return True
    except Exception as e:
        print(f"? 文本提取失?。簕e}")
        return False

if __name__ == "__main__":
    source_pdf = os.path.expanduser("~/Desktop/sample_pdf.pdf")
    output_txt = os.path.expanduser("~/Desktop/extracted_text.txt")

    # 簡(jiǎn)單創(chuàng)建模擬PDF文件
    if not os.path.exists(source_pdf):
        doc = fitz.open(); doc.new_page().insert_text((50,50), "這是PDF中的文本內(nèi)容。"); doc.save(source_pdf); doc.close()

    pdf_to_text(source_pdf, output_txt)

步驟:

安裝庫(kù): pip install PyMuPDF。

準(zhǔn)備PDF文件: 在桌面準(zhǔn)備一個(gè)包含文本的PDF文件(如sample_pdf.pdf)。

修改代碼路徑: 修改 source_pdf 和 output_txt。

運(yùn)行: 運(yùn)行 python pdf_to_text.py。

效果展示:

3.Python實(shí)現(xiàn)Markdown轉(zhuǎn)PDF/Word

Markdown是一種輕量級(jí)標(biāo)記語(yǔ)言,它讓你用純文本輕松寫作,并能方便地轉(zhuǎn)換為各種文檔格式。Python結(jié)合pandoc(一個(gè)強(qiáng)大的文檔轉(zhuǎn)換工具)或特定的Markdown解析庫(kù),能幫你實(shí)現(xiàn)Markdown轉(zhuǎn)PDF或Markdown轉(zhuǎn)Word,這是Python文件轉(zhuǎn)換的高階應(yīng)用!

作用: Markdown文件通過解析器轉(zhuǎn)換為中間格式(如HTML),再由渲染器轉(zhuǎn)換為目標(biāo)格式。pandoc是命令行工具,Python可以調(diào)用它。

3.1Markdown語(yǔ)法速覽:簡(jiǎn)潔高效的寫作方式

Markdown語(yǔ)法簡(jiǎn)單直觀,常用語(yǔ)法如下:

語(yǔ)法效果示例
# 標(biāo)題一級(jí)標(biāo)題# 這是標(biāo)題
粗體粗體重要
斜體斜體強(qiáng)調(diào)
- 列表項(xiàng)無(wú)序列表- 項(xiàng)目1
1. 列表項(xiàng)有序列表1. 步驟1
鏈接超鏈接CSDN
代碼行內(nèi)代碼print()
代碼塊python ...

3.2Markdown轉(zhuǎn)PDF/Word:用Python打通文檔生態(tài)

場(chǎng)景: 你用Markdown寫了大量筆記和文檔,現(xiàn)在需要將它們導(dǎo)出為專業(yè)排版的PDF報(bào)告或Word文檔,方便分享給非技術(shù)人員。

方案: 我們可以通過Python調(diào)用pandoc命令行工具,實(shí)現(xiàn)Markdown文件到PDF或Word的轉(zhuǎn)換。這需要你的系統(tǒng)安裝pandoc。

安裝Pandoc:

訪問Pandoc官網(wǎng) (pandoc.org) 下載并安裝。安裝后,確保pandoc已添加到系統(tǒng)環(huán)境變量。
在終端運(yùn)行 pandoc --version 驗(yàn)證安裝。

代碼:

步驟:

安裝Pandoc: 從pandoc.org下載并安裝,并確保其添加到系統(tǒng)PATH。如果轉(zhuǎn)PDF,你還需要安裝一個(gè)LaTeX發(fā)行版(如MiKTeX for Windows, TeX Live for Linux/macOS)。

準(zhǔn)備Markdown文件: 在桌面創(chuàng)建my_notes.md。

修改代碼路徑: 修改 source_md 等路徑。

運(yùn)行: 運(yùn)行 python markdown_converter.py。

效果展示:

4.你的“文檔格式轉(zhuǎn)換工廠”!

我們深入學(xué)習(xí)了PyMuPDF、Pillow、docx2pdf、subprocess等庫(kù)/工具,實(shí)現(xiàn)了:

PDF與圖片互轉(zhuǎn): 輕松將PDF頁(yè)面批量轉(zhuǎn)換為圖片,或?qū)⒍鄰垐D片合并為PDF,實(shí)現(xiàn)像素級(jí)掌控。

Word與PDF互轉(zhuǎn): 一鍵批量將Word轉(zhuǎn)PDF,并知曉PDF轉(zhuǎn)Word的挑戰(zhàn)與提取文本方法。

Markdown文檔轉(zhuǎn)換: 利用pandoc,將Markdown筆記轉(zhuǎn)換為專業(yè)的PDF/Word文檔。

5.尾聲:文檔格式互轉(zhuǎn),解鎖文件管理新維度!

通過本篇文章,你已經(jīng)掌握了文檔格式互轉(zhuǎn)的強(qiáng)大能力,為你的辦公自動(dòng)化之旅又增添了一個(gè)重量級(jí)技能!你學(xué)會(huì)了如何利用Python和外部工具,高效地實(shí)現(xiàn)PDF、Word、圖片、Markdown之間的各種轉(zhuǎn)換。

除了今天學(xué)到的格式轉(zhuǎn)換功能,你還希望Python能幫你實(shí)現(xiàn)哪些更復(fù)雜的文檔處理需求?比如:自動(dòng)將Excel數(shù)據(jù)填充到PDF表單?或者實(shí)現(xiàn)PDF的批量OCR識(shí)別?

以上就是利用Python實(shí)現(xiàn)文檔格式互轉(zhuǎn)的操作大全(PDF、Word、圖片、Markdown)的詳細(xì)內(nèi)容,更多關(guān)于Python文檔格式互轉(zhuǎn)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

安平县| 辰溪县| 报价| 尉氏县| 安溪县| 汽车| 云南省| 新泰市| 仁化县| 全南县| 台北市| 全南县| 济宁市| 来凤县| 襄垣县| 乳山市| 嘉兴市| 望城县| 化德县| 桐城市| 阳江市| 清原| 涞源县| 白山市| 四子王旗| 秭归县| 上蔡县| 政和县| 庐江县| 元江| 天峻县| 油尖旺区| 郓城县| 高邮市| 阿鲁科尔沁旗| 康保县| 正蓝旗| 谷城县| 文安县| 新和县| 德庆县|