# -*- coding:eucjp -*-
import os
import re
class kaishi:
#指定語尾で終わっているファイルのリストを返す
def findfilebyext(self,list,ext):
ret=[]
for x in list:
if x.endswith(ext):
ret.append(x)
return ret
#splitコマンドをforkして呼ぶ
def split(self,pdffile):
pid=os.fork()
if(pid==0):
os.execlp("splitPDF","splitPDF",pdffile);
state=os.wait();
print state #終了コードあるのかな?
#指定した正規表現にマッチするファイルの数を返す
def countfilebyregexp(self,list,regexp):
ret=0
for x in list:
m=re.compile(regexp).search(x)
if m!=None and m.start()==0:
ret=ret+1
return ret
#指定ディレクトリの中のファイルだけを取りだす
def listfile(self,rootpath):
files=os.listdir(rootpath)
dirlist=[]
for x in files:
if os.path.isfile(x):
dirlist.append(x)
return dirlist
#テンプレを読み込む
def loadtemp(self,file):
f=open(file,"r")
ret=f.read();
f.close()
return ret;
#ヘッダのテンプレを得る
def loadheadertemp(self,file):
f=open(file,"r")
headtemp=[]
while 1:
cat=f.readline()[:-1];
#print "--------------------------------"+cat
if not cat:
break;
left=f.readline()[:-1];
right=f.readline()[:-1];
headtemp.append([cat,[left,right]]);
f.close()
return headtemp; #ヘッダーリストを返す
#ファイルを保存する
def savefile(self,file,data):
f=open(file,"w")
f.write(data);
f.close()
return
def findkeyheader(self,headers,kind):
for x in headers:
print x
if x[0]==kind:
return x[1]
#テンプレを元にファイルを構築
def makefinalpage(self,name,page,kind,temp,headers):
temp=temp.replace("##pdfname##",name)
temp=temp.replace("##page##",str(page))
print "------------"+kind
hl=self.findkeyheader(headers,kind)[0]
hr=self.findkeyheader(headers,kind)[1]
if hl=="":
temp=temp.replace("##headright##",r"\renewcommand{\headrulewidth}{0pt}");
else:
temp=temp.replace("##headright##",r"\fancyhead[RO]{"+ hl+"}")
if hr=="":
temp=temp.replace("##headleft##",r"\renewcommand{\headrulewidth}{0pt}")
else:
temp=temp.replace("##headleft##",r"\fancyhead[LE]{"+hr+"}")
return temp
def chgoutno(self,no):
ret=no;
b=[2,3,4,1]
ret=b[(no-1)%4]+(no-1)/4*4
return ret
##コンストラクタですべてやってしまう無意味さ
def __init__(self):
temp=self.loadtemp("template.tex") #テンプレを読み込む
headers=self.loadheadertemp("headertemplate.tex");
rootpath="."
createdir="final"
startpage=1;
dirlist=self.listfile(rootpath)
pdffiles=self.findfilebyext(dirlist,".pdf");
pdffiles.sort();
print (pdffiles) #処理するファイルをGet順番もOK
pagekind=""
for x in pdffiles:
self.split(x)
dirlist=self.listfile(rootpath)
pdffiles=self.findfilebyext(dirlist,".pdf");
cnt=self.countfilebyregexp(pdffiles,x[:-4]+"_page[0-9]+\.pdf");
print "-------------"
print cnt
print x[:-4]
print "-------------"
pagekind=x[3]; #種類を得る
ext='';
for y in range(cnt+1)[1:]:
if x[-5]=='2':
ext='.pdf'
elif x[-5]=='3':
ext='.pdf'
print os.spawnlp(os.P_WAIT,'cp','cp',x[:-4]+"_page"+str(y)+'.pdf','final%03d.pdf' % self.chgoutno(startpage))
else:
ext='.ps'
data=self.makefinalpage(x[:-4]+"_page"+str(y)+ext,startpage,pagekind,temp,headers)
self.savefile("final"+"%03d" % self.chgoutno(startpage)+".tex",data)
startpage=startpage+1
kaishi()
|