天天看點

aspose html轉pdf_使用Python轉換PDF,Word/Excel/PPT/md/HTML都能轉!

往期精選

Python辦公自動化|從Word到Excel​mp.weixin.qq.com

aspose html轉pdf_使用Python轉換PDF,Word/Excel/PPT/md/HTML都能轉!

Python辦公自動化|從Excel到Word​mp.weixin.qq.com

aspose html轉pdf_使用Python轉換PDF,Word/Excel/PPT/md/HTML都能轉!

Python辦公自動化|光速對比并提取兩份Word/Excel中的不同元素​mp.weixin.qq.com

aspose html轉pdf_使用Python轉換PDF,Word/Excel/PPT/md/HTML都能轉!
同一個操作執行兩次,就要考慮自動化!

大家好,又到了Python辦公自動化專題。

今天講的是各位一定會接觸到的PDF轉換,關于各種格式的檔案轉換為PDF有很多第三方工具與網站可以實作,但是使用Python的好處不僅可以

批量轉換

,同時一旦腳本寫完了以後就可以

一鍵執行

,徹底解放雙手,那麼本文就來盤一盤如何使用Python來将

Word/Excel/PPT/Markdown/Html

等各種格式的檔案轉換為PDF!

Word轉PDF

Word轉PDF應該是最常見的需求了,畢竟使用PDF格式可以更友善展示文檔,雖然在Word中可以直接導出為PDF格式,但是使用Python可以批量轉換,更加高效。

目前在Python中針對Word轉換為PDF的庫有很多,比如win32就可以調用word底層vba,将word轉成pdf,或者comtypes等,但是這些常用的庫僅能在Windows機器上運作,是以為了照顧mac使用者本文使用一個比較小衆的庫docx2pdf,看名字就能知道這是專門用于word轉pdf,安裝很簡單

pip install docx2pdf
           

使用也比win32等庫更簡潔,一行代碼導入一行代碼轉換即可

from docx2pdf import convert
convert("input.docx", "output.pdf")
           

但是有人就會說雖然簡單,但是這個操作word本身就可以完成,好的接下來放大招,我們可以使用下面的代碼

找到目前或者指定檔案夾下的全部word檔案
#查找目前目錄下的全部word檔案
import os
import glob
from pathlib import Path

path = os.getcwd() + '/'
p = Path(path) #初始化構造Path對象
FileList=list(p.glob("**/*.docx")) 
           
aspose html轉pdf_使用Python轉換PDF,Word/Excel/PPT/md/HTML都能轉!

接下來隻要寫一個循環就可以将該目錄下的全部word一次性轉換為PDF

for file in FileList:
    convert(file,f"{file}.pdf")
           

就這樣,

不到10行代碼,隻要一秒

,指定檔案夾中5份Word就輕松轉換為PDF,現在還能使用我們之前自動化系列文章寫過的批量合并PDF結合一鍵合并這5份PDF!

Excel轉PDF

Excel轉PDF可能平時用的不多,但是作為Office全家桶中的重要工具,并且轉換完的表格可以複制是以我們也講一下。使用到的工具既不是常用的openpyxl也不是pandas,而是另一個專門用于處理PDF的庫fpdf

import pandas as pd
import numpy as np
df_1 = pd.DataFrame(np.random.randn(10, 2), columns=list('AB'))
           

為了友善講解我們使用Pandas和NumPy來建立一個示例資料檔案,當然也可以使用從本地讀取

aspose html轉pdf_使用Python轉換PDF,Word/Excel/PPT/md/HTML都能轉!

現在可以使用下面的代碼将這個表格轉換為PDF

from fpdf import FPDF
pdf = FPDF()
pdf.add_page()
pdf.set_xy(0, 0)
pdf.set_font('arial', 'B', 14)
pdf.cell(60)
pdf.cell(70, 10, 'Excel to PDF', 0, 2, 'C')
pdf.cell(-40)
pdf.cell(50, 10, 'Index Column', 1, 0, 'C')
pdf.cell(40, 10, 'A', 1, 0, 'C')
pdf.cell(40, 10, 'B', 1, 2, 'C')
pdf.cell(-90)
pdf.set_font('arial', '', 12)
for i in range(0, len(df_1)):
    col_ind = str(i)
    col_a = str(df_1.A.iloc[i])
    col_b = str(df_1.B.iloc[i])
    pdf.cell(50, 10, '%s' % (col_ind), 1, 0, 'C')
    pdf.cell(40, 10, '%s' % (col_a), 0, 0, 'C')
    pdf.cell(40, 10, '%s' % (col_b), 0, 2, 'C')
    pdf.cell(-90)
pdf.output('Excel2PDF.pdf', 'F')
           
aspose html轉pdf_使用Python轉換PDF,Word/Excel/PPT/md/HTML都能轉!

,其實思路和openpyxl類似,周遊每一個單元格并寫入資料,隻不過現在是往PDF檔案中寫入。

PPT轉PDF

本節介紹一下PPT如何轉換為PDF,但是我搜了一大圈都沒有MAC使用者可以實作的方法,是以隻能針對Windows去操作,使用到的就是在word2pdf中講到的comtypes

import sys
import os
import comtypes.client
#設定路徑
input_file_path = sys.argv[1]
output_file_path = sys.argv[2]
input_file_path = os.path.abspath(input_file_path)
output_file_path = os.path.abspath(output_file_path)
#建立PDF
powerpoint = comtypes.client.CreateObject("Powerpoint.Application")
powerpoint.Visible = 1
slides = powerpoint.Presentations.Open(input_file_path)
#儲存PDF
slides.SaveAs(output_file_path, 32)
slides.Close()
           

相關參數與細節可以查閱comtypes官方文檔,因為我是mac是以沒有過多研究,在成功轉換之後就可以和我們之前的批量操作與合并進行結合實作自動化了!

md轉pdf

關于markdown轉pdf,幾乎所有markdown編輯器都支援導出為pdf格式,本以為這個需求并不高,但是研究了一圈發現很多老外造了很多md轉pdf的輪子,比如md2pdf、markdown2pdf、md2pdf-client等。因為大多數部落格使用的是markdown格式,使用這些庫可以很好的将部落格文章批量轉換為PDF文檔存儲。

早起都試了一圈,找到一個文法最簡單的markdown2pdf3,直接pip安裝即可,使用兩行代碼即可将一個md檔案轉換為pdf

from markdown2pdf3 import *
convert_markdown_to_pdf('test.md') #你的markdown檔案路徑
           

但是要注意的是如果有中文,還需要進行一些額外的設定,可以查閱官方文檔,不過現在就能和之前講的Word轉PDF結合,

批量轉換

指定路徑下的全部markdown檔案為pdf,比如可以使用下面的代碼找到目前檔案夾下的全部md檔案

import os
import glob
from pathlib import Path

path = os.getcwd() + '/'
p = Path(path) #初始化構造Path對象
FileList=list(p.glob("**/*.md")) 
           

html轉pdf

關于html也就是網頁轉為PDF是來問我最多的問題,其實很簡單,之前在

Selenium爬取公衆号全部文章

這篇文章中就提到使用PDFKIT即可,但是并不是直接pip安裝pdfkit就行,我們需要提前進入下面的網站選擇自己電腦系統對應的wkhtmltopdf下載下傳安裝

https://wkhtmltopdf.org/downloads.html
           
aspose html轉pdf_使用Python轉換PDF,Word/Excel/PPT/md/HTML都能轉!

安裝完使用pip安裝pdfkit

pip install pdfkit
           

現在我們就能使用兩行代碼

轉換指定網頁為PDF格式

,比如将我的第一篇自動化文章轉為PDF

aspose html轉pdf_使用Python轉換PDF,Word/Excel/PPT/md/HTML都能轉!
aspose html轉pdf_使用Python轉換PDF,Word/Excel/PPT/md/HTML都能轉!
aspose html轉pdf_使用Python轉換PDF,Word/Excel/PPT/md/HTML都能轉!

看起來效果還是非常好的,所有格式包括代碼都完整的儲存了下來,接下來怎麼做就不用我多說了,比如你想下載下傳一個公衆号所有文章為PDF格式,那就先将曆史文章URL提取出來,接着使用pdfkit轉換即可,而這兩步驟我們都已經詳細講解過了!

繼續閱讀