有一陣子沒有寫部落格了……
因為要考英語,所以前一段時間幾乎把所有手頭上的工作都放了下來,大概有兩個月沒有碰電腦了吧。說實話,我以前真的不敢相信兩個月不碰電腦是什麼感覺。
在俺閉關的時候親愛的網路安全老師布置了乙個非常「有趣」的實驗,並且必須要去交乙份所謂的報告。既然非得寫,我倒是也沒敷衍,熬了乙個通宵用markdown搞定了報告的正文部分。但給老師交報告總要有個像樣的封面吧,於是就有用其他軟體生成了乙個封面的pdf。
然後怎麼把這兩個pdf合併在一起就成為了主要的問題(分開列印再釘起來的方法我還真想過~~)幸運的是前人栽樹,後人乘涼。python有乙個pypdf的模組專門用來操作pdf檔案。於是就用這個模組寫了乙個小工具。
import sys
from pypdf import pdffilewriter, pdffilereader
defmergepdffiles
(outputfile, inputfiles):
output = pdffilewriter()
for inputfile in inputfiles:
print
'adding file' + inputfile
input = pdffilereader(file(inputfile, "rb"))
for page in input.pages:
output.addpage(page)
print
'all files added'
#from writer to file
outputstream = file(outputfile, "wb")
output.write(outputstream)
outputstream.close()
if __name__ == '__main__':
print
'merging pdf files...'
mergepdffiles("union.pdf", ["1.pdf","2.pdf"])
print
'merge completed'
使用的時候只需把需要合併的檔案放到與.py檔案同一目錄下,改名為1.pdf、2.pdf……即可生成合併後的union.py檔案。
那啥,一天後我手賤又寫了個介面,累死本寶寶了
#coding=utf-8
import sys
import os
import codecs
from pypdf import pdffilewriter, pdffilereader
from pyqt4 import qtgui ,qt ,qtcore
global filename1
global filename2
filename1 = " "
filename2 = " "
defcur_file_dir
():#獲取指令碼路徑
path = sys.path[0]
if os.path.isdir(path):
return path
elif os.path.isfile(path):
return os.path.dirname(path)
class
window
( qtgui.qwidget ):
def__init__
( self ):
super( window, self ).__init__()
self.setwindowtitle( "pdf tool" )
self.setfixedsize(180, 80)
gridlayout = qtgui.qgridlayout()
button1 = qtgui.qpushbutton( "part1" )
self.connect( button1, qtcore.signal( 'clicked()' ), self.onbutton1 )
gridlayout.addwidget( button1, 0, 0)
button2 = qtgui.qpushbutton( "part2" )
self.connect( button2, qtcore.signal( 'clicked()' ), self.onbutton2 )
gridlayout.addwidget( button2, 0, 1)
button3 = qtgui.qpushbutton( "merge" )
self.connect( button3, qtcore.signal( 'clicked()' ), self.mergepdffiles )
gridlayout.addwidget( button3, 1, 0, 1, 2 )
self.setlayout( gridlayout )
defonbutton1
(self):
global filename1
filename1 = self.on_openfile_clicked()
qtgui.qmessagebox.about( self, 'part1', "get: %s" % filename1 )
print (filename1)
defonbutton2
(self):
global filename2
filename2 = self.on_openfile_clicked()
qtgui.qmessagebox.about( self, 'part2', "get: %s" %filename2 )
print (filename2)
defmergepdffiles
(self):
global filename1
global filename2
output = pdffilewriter()
input = pdffilereader(file(filename1, "rb"))
for page in input.pages:
output.addpage(page)
input = pdffilereader(file(filename2, "rb"))
for page in input.pages:
output.addpage(page)
outputstream = file("union.pdf", "wb")
output.write(outputstream)
outputstream.close()
qtgui.qmessagebox.about( self, 'merge', "file merged!path:%s\union.pdf" % cur_file_dir())
print ("ok %s" % cur_file_dir())
defon_openfile_clicked
(self):
dlg = qtgui.qfiledialog(self)
self.filename = dlg.getopenfilename()
from os.path import isfile
if isfile(self.filename):
return self.filename
win = window()
win.show()
Latex 合併pdf文件
比較常用的乙個功能,mark一下 documentclass a4 usepackage begin includepdfmerge includepdfmerge includepdfmerge includepdfmerge end引入pdfpages包來做pdf合成,includepdfmer...
PDF格式文件怎樣合併分割
工作的時候天天都要處理各種文件,時間一長就累積了不少的文件需要處理,有時候需要對文件進行合併,有時候又需要對文件進行分割,普通的office文件大家都知道該怎麼操作,而像pdf這類的文件在操作上就和office文件不同了。步驟 合併pdf檔案是將多個pdf格式的檔案按順序合成乙個pdf檔案,首先開啟...
讀取PDF文件
coding utf 8 匯入開發包 frompdfminer.pdfparserimportpdfparser,pdfdocument frompdfminer.pdfinterpimportpdfresourcemanager,pdfpageinterpreter frompdfminer.pd...