python自動化之PDF


###################################處理PDF和Word文檔###################################

'''

PDF和Word文檔是二進制文件,除了文本之外,

它們還保存了許多字體、顏色和布局信息

'''

'''

從PDF提取文本

'''

###################################從PDF提取文本###################################

import PyPDF2

pdfFileObj=open(r'C:\Users\Administrator\Desktop\test.pdf','rb')

pdfReader=PyPDF2.PdfFileReader(pdfFileObj)

pdfReader.numPages

pageObj=pdfReader.getPage(0)

pageObj.extractText()

###################################解壓PDF#########################################

import PyPDF2

pdfReader=PyPDF2.PdfFileReader(open(r'C:\Users\Administrator\Desktop\test.pdf','rb'))

pdfReader.isEncrypted    ####是否加密

pdfReader.getPage(0)

pdfReader.decrypt('rosebud')   ####提供解密口令

pageObj=pdfReader.getPage(0)

###################################創建PDF#########################################

'''

PyPDF2不能將任意文本寫入PDF:

PyPDF2寫入PDF的能力,僅限於從其他PDF中拷貝頁面、旋轉頁面、重疊頁面和加密文件

'''

'''

一般方式:

1、打開一個或多個已用的PDF(源PDF),得到PdfFileReader對象

2、創建一個新的PdfFileWriter對象

3、將頁面從PdfFileReader對象拷貝到PdfFileWriter對象中

4、利用PdfFileWriter對象寫入輸出的PDF

'''

#####################################################拷貝頁面###########################################################

def merge(pdf_one, pdf_two, filename='my.pdf',output_dir=r'C:\Users\Administrator\Desktop'):

         input_one = file(pdf_one, 'rb')

         input_two = file(pdf_two, 'rb')

 

         pdf_input_one = PyPDF2.PdfFileReader(input_one)

         pdf_input_two = PyPDF2.PdfFileReader(input_two)

 

         numOne = pdf_input_one.getNumPages()

         numTwo = pdf_input_two.getNumPages()

         print numOne, numTwo

         pdf_output = PyPDF2.PdfFileWriter()

 

         for pageNum in range(numOne):

                   print 'hereo'

                   pageObj=pdf_input_one.getPage(pageNum)

                   pdf_output.addPage(pageObj)

         for pageNum in range(numTwo):

                   print 'heret'

                   pageObj=pdf_input_two.getPage(pageNum)

                   pdf_output.addPage(pageObj)

 

         pdf_name = output_dir+filename

         print pdf_name

 

         output_stream = file( pdf_name,'wb')

         pdf_output.write(output_stream)

         output_stream.close()

         input_one.close()

         input_two.close()

         print 'Done!'

 

merge(r'C:\Users\Administrator\Desktop\Pairs_Trading_Quantitative Methods and Analysis.pdf',r'C:\Users\Administrator\Desktop\deMontjoye.SM.pdf')

#####################################################旋轉頁面###########################################################

'''

利用rotateClockwise()和rotateCounterClockwise()方法

PDF文檔的頁面也可以旋轉90度的整數倍,向這些方法傳入

整數90、180或270

'''

def merge(pdf_one, pdf_two, filename='my.pdf',output_dir=r'C:\Users\Administrator\Desktop'):

         input_one = file(pdf_one, 'rb')

         input_two = file(pdf_two, 'rb')

 

         pdf_input_one = PyPDF2.PdfFileReader(input_one)

         pdf_input_two = PyPDF2.PdfFileReader(input_two)

 

         numOne = pdf_input_one.getNumPages()

         numTwo = pdf_input_two.getNumPages()

         print numOne, numTwo

         pdf_output = PyPDF2.PdfFileWriter()

 

         for pageNum in range(numOne):

                   print 'hereo'

                   pageObj=pdf_input_one.getPage(pageNum)

                   pageObj=pageObj.rotateClockwise(90)

                   pdf_output.addPage(pageObj)

         for pageNum in range(numTwo):

                   print 'heret'

                   pageObj=pdf_input_two.getPage(pageNum)

                   pageObj=pageObj.rotateClockwise(90)

                   pdf_output.addPage(pageObj)

 

         pdf_name = output_dir+filename

         print pdf_name

 

         output_stream = file( pdf_name,'wb')

         pdf_output.write(output_stream)

         output_stream.close()

         input_one.close()

         input_two.close()

         print 'Done!'

 

merge(r'C:\Users\Administrator\Desktop\Pairs_Trading_Quantitative Methods and Analysis.pdf',r'C:\Users\Administrator\Desktop\deMontjoye.SM.pdf')

#####################################################疊加頁面###########################################################

import PyPDF2

minutesFile=open(r'C:\Users\Administrator\Desktop\Pairs_Trading_Quantitative Methods and Analysis.pdf','rb')

pdfReader=PyPDF2.PdfFileReader(minutesFile)

minutesFirstPage=pdfReader.getPage(0)

pdfWatermarkReader=PyPDF2.PdfFileReader(open(r'C:\Users\Administrator\Desktop\deMontjoye.SM.pdf','rb'))

minutesFirstPage.mergePage(pdfWatermarkReader.getPage(0))

pdfWriter=PyPDF2.PdfFileWriter()

pdfWriter.addPage(minutesFirstPage)

 

for pageNum in range(1,pdfReader.numPages):

         pageObj=pdfReader.getPage(pageNum)

         pdfWriter.addPage(pageObj)

resultPdfFile=open(r'C:\Users\Administrator\Desktop\merge.pdf','wb')

pdfWriter.write(resultPdfFile)

minutesFile.close()

resultPdfFile.close()

 

 

#####################################################加密PDF###########################################################

import PyPDF2

pdfFile=file(r'C:\Users\Administrator\Desktop\deMontjoye.SM.pdf','rb')

pdfReader=PyPDF2.PdfFileReader(pdfFile)

pdfWriter=PyPDF2.PdfFileWriter()

for pageNum in range(pdfReader.numPages):

         pdfWriter.addPage(pdfReader.getPage(pageNum))

 

pdfWriter.encrypt('swordfish')

resultPdf=file(r'C:\Users\Administrator\Desktop\t.pdf','wb')

pdfWriter.write(resultPdf)

resultPdf.close()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM