2、4、5番のページ(ファイルの名前はtest_002.pdf、test_004.pdf、test_005.pdf)に参加する必要があるとすると、3ページ目が欠落していると言えます。
私がやろうとしているのは、これらのコマンドの結果を取得することです。
pdfjam --nup 2 --papersize '{47cm,30cm}' --scale 1.0 test_002.pdf test_003.pdf --outfile joined_002-003.pdf
pdfjam --nup 2 --papersize '{47cm,30cm}' --scale 1.0 test_004.pdf test_005.pdf --outfile joined_004-005.pdf
これは、偶数ページと奇数ページを1つの一意のページに結合し、欠落しているページの代わりに空白のページ(3)を使用します。
私はそれがすべきだと思います:
- 受信ファイルを最初から最後までチェックして、欠落しているページを探します(この場合、2から5の欠落#3)
- オンザフライで空白の「23.5cm、30cm」PDFページを生成します(おそらくpyPdfを使用)
- それらを「偶数」と「奇数」にカップルとして分類し、奇数ページですべての偶数に参加できるようにします(pdfjamを使用)…
私は正しいですか?
Pythonのいくつかの行でそれは可能ですか?または、もっと簡単な方法はありますか?
これが私が始めたことで、ホットフォルダーのように機能するようにしていますが、偶数と奇数の管理で完全に失われ、「ファイル/ページ」が欠落しています。
#!/usr/bin/python
# -*- coding: UTF8 -*-
import os
import os.path
import re
import time
import datetime
CODEFILE = re.compile("^(TES|EXA).*\.pdf$")
WHERE = "/tmp/TEST/"
STORAGE = "/tmp/WORK/"
DBLSIZE = "{47cm,30cm}"
def time_stamp():
now = datetime.datetime.now()
return now.strftime("%Y-%m-%d %H:%M:%S")
print(time_stamp()+" : Starting.")
def files_list(path):
this_files = list()
root, dires, files = os.walk(path).next()
for f in files:
if CODEFILE.match(f):
this_files.append(os.path.join(root, f))
return this_files
def file_sizes(filename):
meta = os.lstat(filename)
return meta.st_size
def files_to_handle(path):
this_files = list()
ft1 = dict()
ft2 = dict()
for f in files_list(WHERE):
ft1[f] = file_sizes(f)
time.sleep(10)
for f in files_list(WHERE):
ft2[f] = file_sizes(f)
for f, t in ft2.items():
try:
if ft1[f] == t:
this_files.append(f)
except:
pass
return this_files
r = files_to_handle(WHERE)
print(time_stamp()+" : Files available :")
print(r)
for f in r:
rc = os.system("pdfjam --batch --nup 2 --papersize {1} --scale 1.0 --outfile . {2}".format(
DBLSIZE, f))
if rc != 0:
print(time_stamp()+" : an ERROR as occured with the file {0}.".format(f))
else:
print(time_stamp()+" : files {0} OK.".format(f))
os.system("mv {0} {1}".format(f, STORAGE))
print(time_stamp()+" : Stopping.")
前もって感謝します!