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