需求:将若干个 word文 档和 pdf 文档按指定顺序合并为一个 pdf 文档,并将该过程自动化。
1. 将word转换为pdf。
使用工具 docto[github],该工具可免费下载与使用,执行如下命令将*.docx文件转换为同名的*.pdf文件。
docto -F inputFileName -O "outputFileName" -T wdFormatPDF
如需自动化将指定路径下的所有*.docx文件转化为pdf文件,首先创建一个脚本,2pdf.bat
@echo off
set filename=%~1
docto -F %filename% -O "%filename%.pdf" -T wdFormatPDF
然后创建一个python脚本transform.py
import os
results = []
results += [each for each in os.listdir('..') if each.endswith('.docx')]
for i in range(0, len(results)):
os.system("2pdf.bat " + results[i])
2. 将多个pdf文件按指定顺序合并为一个 pdf 文件
使用工具 pdftk,该工具支持输入多个 *.pdf 文件、同时支持 GUI 交互和命令行交互。通过执行如下命令可合并两个pdf文件:
pdftk.exe name1.pdf name2.pdf output mreged.pdf
然后执行如下脚本,将当前目录下的所有 *.pdf 文件合并为 merged.pdf 文件。
results = []
results += [each for each in os.listdir('.') if each.endswith('.pdf')]
results.sort()
output_filename = "merged.pdf"
command_line = ""
merged_num = 0
for result in results:
command_line += "\"" + result + "\"" + " "
command_line += "output " + output_filename
os.system("pdftk.exe " + command_line)
这里,可以通过将文件名加数字前缀的方式,将待转换、合并的文档统一命名,如下图所示:
经过步骤
results.sort()
之后,列表即按递增顺序排列。
脚本中对每个文件名加引号可处理包含空格的文件名。
3. 结论
以上两个过程可对若干个文档进行自动化转换与合并,代码仅供参考,可用的 pdf 工具也有很多,以描述思路为主。
另外,docto[github] 工具还支持将文档按指定页码输出,可实现文档的制定范围转换、pdf 分割等功能。