应用场景:
1.目前手里面拿到300+份word文件和少量PDF文件以及其他格式的干扰文件,但是系统要求只能上传PDF文件(PDF文件支持在线浏览,DOC文件只能够下载打开);
2.有后台操作权限,可以将文件复制到相应的路径下,在数据库附件表中添加相应的数据和文件路径。
思路:
1.使用python先将doc文件、docx文件、pdf文件单独提取出来;
代码如下:
import os,shutil
def changepath(input,output):
#定义改变文件路径的参数,input为源路径,output为目标路径
for x,y,z in os.walk(input):
for i in z:
if i.endswith('.doc') or i.endswith('docx') or i.endswith('pdf'):
#筛选xx格式文件
srcfile=os.path.join(x,i)
L=srcfile.split('\\') #打散文件路径
newfile=os.path.join(output,L[5],i)
#组合目标路径
os.makedirs(os.path.join(output,L[5]))
#创建目标路径文件夹
shutil.copy(srcfile,newfile)
#复制文件到目标路径,不会删除源文件
changepath(r'E:\XX\XXX\新建文件夹',r'E:\XX\XX\鉴定报告')
#执行自定义函数
2.使用python的win32com.client调用word应用批量将DOC或DOCX文件转换为PDF;
代码如下:
from win32com.client import Dispatch,constants,gencache
w =Dispatch('Word.Application')
#调用word应用
def doc2pdf(input,output):
doc = w.Documents.Open(FileName=input)
#打开doc文件
doc.ExportAsFixedFormat(output,17, False, 0, 0, 1, 1, 7, True, True, 1, True, True, True)
#转换格式,参数见下文,17代表pdf
doc.Close()
#关闭该文档
#w.Quit()
for x,y,z in os.walk(r"E:\XX\XX\鉴定报告"):
for i in z:
filepath=os.path.join(x,i)
doc2pdf(filepath,os.path.splitext(filepath)[0]+".pdf")
3.参考文档
https://msdn.microsoft.com/zh-tw/VBA/Word-VBA/articles/document-exportasfixedformat-method-word
4.参数一览
參數
名稱 | 必要/選用 | 資料類型 | 描述 |
OutputFileName | 必要 | String | 新 PDF 或 XPS 檔案的路徑和檔案名稱。 |
ExportFormat | 必要 | 會指定 PDF 或 XPS 格式。 | |
OpenAfterExport | 選用 | 布林值 | 會在匯出內容後開啟新檔案。 |
OptimizeFor | 選用 | 會指定是要針對螢幕顯示還是列印進行最佳化。 | |
Range | 選用 | 會指定匯出範圍為整個文件、目前的頁面、某個文字範圍或目前的選取範圍。預設值為匯出整個文件。 | |
From | 選用 | 長 | 會指定起始頁碼,如果 Range 參數設定為wdExportFromTo 。 |
To | 選用 | 長 | 會指定結束頁碼,如果 Range 參數設定為wdExportFromTo 。 |
Item | 選用 | 會指定匯出程序是只包含文字,還是包含具有標記的文字。 | |
IncludeDocProps | 選用 | 布林值 | 會指定是否在新匯出的檔案中包含文件屬性。 |
KeepIRM | 選用 | 布林值 | 指定是否要將 IRM 權限複製至 XPS 文件來源文件是否 IRM 保護設定。預設值為True 。 |
CreateBookmarks | 選用 | 會指定是否匯出書籤以及要匯出的書籤類型。 | |
DocStructureTags | 選用 | 布林值 | 指定是否要包含額外的資料以協助螢幕助讀程式,例如流程及內容的邏輯組織的相關資訊。預設值為True 。 |
BitmapMissingFonts | 選用 | 布林值 | 會指定是否要包含文字的點陣圖。將此參數設為 True時字型授權不要允許以 PDF 檔案中內嵌的字型。如果為 False ,字型參照,並無法使用已製作的其中一個時檢視者的電腦會將適當的字型。預設值為True 。 |
UseISO19005_1 | 選用 | 布林值 | 會指定是否為 ISO 19005 1 標準化以限制 PDF 使用量 PDF 子集。如果則為True ,所產生的檔案會更可靠自給自足但可能會是較大或顯示因格式的限制而多個視覺化成品。預設值為False 。 |
FixedFormatExtClassPtr | 選用 | Variant | 指定增益集的指標,該增益集可用來呼叫程式碼的替代實作。程式碼的替代實作會解譯應用程式產生的 EMF 和 EMF+ 頁面描述,以建立 PDF 或 XPS。如需詳細資訊,請參閱 MSDN 上的「延伸 Office (2007) 固定格式匯出功能」(英文)。 |