[PYTHON]批量提取DOC和PDF文件,将DOC文件转换为PDF文件

应用场景:

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

必要

WdExportFormat

會指定 PDF 或 XPS 格式。

OpenAfterExport

選用

布林值

會在匯出內容後開啟新檔案。

OptimizeFor

選用

WdExportOptimizeFor

會指定是要針對螢幕顯示還是列印進行最佳化。

Range

選用

WdExportRange

會指定匯出範圍為整個文件、目前的頁面、某個文字範圍或目前的選取範圍。預設值為匯出整個文件。

From

選用

會指定起始頁碼,如果 Range 參數設定為wdExportFromTo 。

To

選用

會指定結束頁碼,如果 Range 參數設定為wdExportFromTo 。

Item

選用

WdExportItem

會指定匯出程序是只包含文字,還是包含具有標記的文字。

IncludeDocProps

選用

布林值

會指定是否在新匯出的檔案中包含文件屬性。

KeepIRM

選用

布林值

指定是否要將 IRM 權限複製至 XPS 文件來源文件是否 IRM 保護設定。預設值為True 。

CreateBookmarks

選用

WdExportCreateBookmarks

會指定是否匯出書籤以及要匯出的書籤類型。

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) 固定格式匯出功能」(英文)。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值