質問編集履歴
7
スクリプトを修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -41,48 +41,54 @@
|
|
41
41
|
pdflist = []
|
42
42
|
evencounter = 0
|
43
43
|
oddcounter = 0
|
44
|
-
for filename in listdir(
|
44
|
+
for filename in os.listdir(os.getcwd()):
|
45
45
|
#このファイルが置かれているディレクトリ内のファイルやフォルダを走査
|
46
|
+
|
46
|
-
if filename.endswith(".pdf"):
|
47
|
+
if filename.endswith(r".pdf"):
|
47
48
|
#ファイルネーム末尾が".pdf"で終わるファイルは、ファイルネームをpdflistに追加する。
|
48
49
|
pdflist.append(filename)
|
49
50
|
|
50
|
-
if filename.lower().
|
51
|
+
if filename.lower().startswith(r"even_"):
|
51
52
|
#ファイル名が"even.pdf"で終わる場合(偶数ページのみがスキャンされているファイルの場合)、evencounterを足していく。
|
52
53
|
#大文字の拡張子の可能性も考慮し、lowerメソッドを組んでいる。
|
53
54
|
evencounter += 1
|
54
55
|
|
55
|
-
if filename.lower().startswith("odd_"):
|
56
|
+
if filename.lower().startswith(r"odd_"):
|
56
57
|
#ファイル名が"odd.pdf"で終わる場合(奇数ページのみがスキャンされているファイルの場合)、oddcounterを足していく。
|
57
58
|
#大文字の拡張子の可能性も考慮し、lowerメソッドを組んでいる。
|
58
59
|
oddcounter += 1
|
59
60
|
|
60
61
|
if evencounter != 1 or oddcounter != 1:
|
61
62
|
print("エラーが発生しました。")
|
62
|
-
print(r
|
63
|
+
print(r"このファイルに置かれているPDFファイルは、'even_~~.pdf'あるいは'odd_~~.pdf'の2つのファイルのみでなくてはなりません。")
|
63
64
|
print("プログラムを終了します。")
|
64
65
|
sys.exit()
|
65
66
|
|
66
67
|
pdflist.reverse()
|
67
68
|
#pdflistに格納されているファイルが["even_~~.pdf","odd_~~.pdf"]のみであったとして、リスト内をeven,oddからodd,evenの順番にするためにソートする。
|
69
|
+
#key=str.lowerで、大文字小文字を区別しないようにしている。
|
68
70
|
|
69
71
|
pdfwriter = PyPDF2.PdfFileWriter()
|
70
72
|
#結合したPDFファイルを保持するために、オブジェクトを作成しておく。
|
71
73
|
|
72
74
|
#奇数ページファイルの読み込みオブジェクト
|
75
|
+
odd_file_name = os.getcwd() + "\" + pdflist[0]
|
76
|
+
print(odd_file_name)
|
73
|
-
odd_object = open(
|
77
|
+
odd_object = open(odd_file_name,"rb") #pdflist[0]には、oddのファイルがある。
|
74
|
-
odd_pdf = PyPDF2.PdfFileReader()
|
78
|
+
odd_pdf = PyPDF2.PdfFileReader(odd_object)
|
75
79
|
|
76
80
|
#偶数ページファイルの読み込みオブジェクト
|
81
|
+
even_file_name = os.getcwd() + "\" + pdflist[1]
|
82
|
+
print(even_file_name)
|
77
|
-
even_object = open(
|
83
|
+
even_object = open(even_file_name,"rb") #pdflist[1]には、evenのファイルがある。
|
78
|
-
even_pdf = PyPDF2.PdfFileReader()
|
84
|
+
even_pdf = PyPDF2.PdfFileReader(even_object)
|
79
85
|
|
80
86
|
#evenとoddが同じ枚数の紙からスキャンしたオブジェクトなら、ページ数が揃うはず。その検証を行う。
|
81
87
|
#evenのページ数を取得する。
|
82
88
|
odd_num_page = odd_pdf.numPages
|
83
89
|
even_num_page = even_pdf.numPages
|
84
90
|
superchecker = 0
|
85
|
-
#
|
91
|
+
#57行目のような状況に遭遇した場合の排他処理そするための識別コード:デフォルトは1で、if文に引っかかった場合に1とする。
|
86
92
|
if odd_num_page != even_num_page:
|
87
93
|
print("異なる文書からスキャンた奇数ページファイル、偶数ページファイルを誤って組み合わせないようにするための、安全用プログラムが作動しました。")
|
88
94
|
print("同じ文書からスキャンして得られた偶数ページファイルと奇数ページファイルは、同じページ数になるはずです。")
|
@@ -92,12 +98,11 @@
|
|
92
98
|
if chenknum == 1:
|
93
99
|
superchecker = 1
|
94
100
|
#57行目の状況に該当するので、1にしておく。
|
95
|
-
break
|
96
101
|
else:
|
97
102
|
print("プログラムを終了します。")
|
98
103
|
sys.exit()
|
99
104
|
|
100
|
-
#
|
105
|
+
#57行目にある状況を想定して、2つのファイルのページ数で、大きい方を格納する。
|
101
106
|
if even_num_page > odd_num_page or even_num_page == odd_num_page:
|
102
107
|
maxpagenum = even_num_page
|
103
108
|
else:
|
@@ -105,7 +110,7 @@
|
|
105
110
|
|
106
111
|
#PDFを、いよいよマージする。
|
107
112
|
if superchecker == 0:
|
108
|
-
#まずは、
|
113
|
+
#まずは、57行目のような状態でない場合(supercheckerが0の場合)
|
109
114
|
for pagenum in range(0,maxpagenum):
|
110
115
|
oddpageobject = odd_pdf.getPage(pagenum)
|
111
116
|
pdfwriter = addPage(oddpageobject)
|
@@ -113,7 +118,7 @@
|
|
113
118
|
pdfwriter = addPage(evenpageobject)
|
114
119
|
|
115
120
|
#マージングが終了したので、最後に書き出す
|
116
|
-
pdfoutput = open("merged.pdf","wb") #"meiged.pdf"という名前のPDFを作成する
|
121
|
+
pdfoutput = open(r"merged.pdf","wb") #"meiged.pdf"という名前のPDFを作成する
|
117
122
|
pdfwriter.write(pdfoutput) #書き出す
|
118
123
|
pdfoutput.close() #書き込みの終了
|
119
124
|
print("すべての処理が正常に完了しました。")
|
@@ -121,7 +126,7 @@
|
|
121
126
|
print("プログラムを終了します。")
|
122
127
|
|
123
128
|
else:
|
124
|
-
#次は、
|
129
|
+
#次は、57行目のような状態である場合(superchecker1の場合)
|
125
130
|
for pagenum in range(0,maxpagenum-1):
|
126
131
|
oddpageobject = odd_pdf.getPage(pagenum)
|
127
132
|
pdfwriter = addPage(oddpageobject)
|
@@ -133,11 +138,11 @@
|
|
133
138
|
pdfwriter = addPage(lastpageobject)
|
134
139
|
|
135
140
|
#マージングが終了したので、最後に書き出す
|
136
|
-
pdfoutput = open("merged.pdf","wb") #"meiged.pdf"という名前のPDFを作成する
|
141
|
+
pdfoutput = open(r"merged.pdf","wb") #"meiged.pdf"という名前のPDFを作成する
|
137
142
|
pdfwriter.write(pdfoutput) #書き出す
|
138
143
|
pdfoutput.close() #書き込みの終了
|
139
144
|
print("すべての処理が正常に完了しました。")
|
140
|
-
print(r
|
145
|
+
print(r"merged.pdfという名前のファイルが保存されているはずです。")
|
141
146
|
print("プログラムを終了します。")
|
142
147
|
|
143
148
|
```
|
6
スクリプトをフルバージョンに更新済み
title
CHANGED
File without changes
|
body
CHANGED
@@ -82,7 +82,7 @@
|
|
82
82
|
odd_num_page = odd_pdf.numPages
|
83
83
|
even_num_page = even_pdf.numPages
|
84
84
|
superchecker = 0
|
85
|
-
#
|
85
|
+
#58行目のような状況に遭遇した場合の排他処理そするための識別コード:デフォルトは1で、if文に引っかかった場合に1とする。
|
86
86
|
if odd_num_page != even_num_page:
|
87
87
|
print("異なる文書からスキャンた奇数ページファイル、偶数ページファイルを誤って組み合わせないようにするための、安全用プログラムが作動しました。")
|
88
88
|
print("同じ文書からスキャンして得られた偶数ページファイルと奇数ページファイルは、同じページ数になるはずです。")
|
@@ -97,7 +97,7 @@
|
|
97
97
|
print("プログラムを終了します。")
|
98
98
|
sys.exit()
|
99
99
|
|
100
|
-
#
|
100
|
+
#58行目にある状況を想定して、2つのファイルのページ数で、大きい方を格納する。
|
101
101
|
if even_num_page > odd_num_page or even_num_page == odd_num_page:
|
102
102
|
maxpagenum = even_num_page
|
103
103
|
else:
|
@@ -105,7 +105,7 @@
|
|
105
105
|
|
106
106
|
#PDFを、いよいよマージする。
|
107
107
|
if superchecker == 0:
|
108
|
-
#まずは、
|
108
|
+
#まずは、58行目のような状態でない場合(supercheckerが0の場合)
|
109
109
|
for pagenum in range(0,maxpagenum):
|
110
110
|
oddpageobject = odd_pdf.getPage(pagenum)
|
111
111
|
pdfwriter = addPage(oddpageobject)
|
@@ -121,7 +121,7 @@
|
|
121
121
|
print("プログラムを終了します。")
|
122
122
|
|
123
123
|
else:
|
124
|
-
#次は、
|
124
|
+
#次は、58行目のような状態である場合(superchecker1の場合)
|
125
125
|
for pagenum in range(0,maxpagenum-1):
|
126
126
|
oddpageobject = odd_pdf.getPage(pagenum)
|
127
127
|
pdfwriter = addPage(oddpageobject)
|
5
スクリプトをフルバージョンに更新済み
title
CHANGED
File without changes
|
body
CHANGED
@@ -63,19 +63,18 @@
|
|
63
63
|
print("プログラムを終了します。")
|
64
64
|
sys.exit()
|
65
65
|
|
66
|
-
pdflist.reverse(
|
66
|
+
pdflist.reverse()
|
67
67
|
#pdflistに格納されているファイルが["even_~~.pdf","odd_~~.pdf"]のみであったとして、リスト内をeven,oddからodd,evenの順番にするためにソートする。
|
68
|
-
#key=str.lowerで、大文字小文字を区別しないようにしている。
|
69
68
|
|
70
69
|
pdfwriter = PyPDF2.PdfFileWriter()
|
71
70
|
#結合したPDFファイルを保持するために、オブジェクトを作成しておく。
|
72
71
|
|
73
72
|
#奇数ページファイルの読み込みオブジェクト
|
74
|
-
odd_object = open(pdflist[0],"rb")
|
73
|
+
odd_object = open(pdflist[0],"rb")
|
75
74
|
odd_pdf = PyPDF2.PdfFileReader()
|
76
75
|
|
77
76
|
#偶数ページファイルの読み込みオブジェクト
|
78
|
-
even_object = open(pdflist[1],"rb")
|
77
|
+
even_object = open(pdflist[1],"rb")
|
79
78
|
even_pdf = PyPDF2.PdfFileReader()
|
80
79
|
|
81
80
|
#evenとoddが同じ枚数の紙からスキャンしたオブジェクトなら、ページ数が揃うはず。その検証を行う。
|
4
スクリプトをフルバージョンに更新済み
title
CHANGED
File without changes
|
body
CHANGED
@@ -39,40 +39,108 @@
|
|
39
39
|
import PyPDF2, os, sys
|
40
40
|
|
41
41
|
pdflist = []
|
42
|
+
evencounter = 0
|
43
|
+
oddcounter = 0
|
42
|
-
for filename in
|
44
|
+
for filename in listdir("."):
|
43
45
|
#このファイルが置かれているディレクトリ内のファイルやフォルダを走査
|
44
|
-
if filename.endswith(
|
46
|
+
if filename.endswith(".pdf"):
|
45
47
|
#ファイルネーム末尾が".pdf"で終わるファイルは、ファイルネームをpdflistに追加する。
|
46
48
|
pdflist.append(filename)
|
47
49
|
|
50
|
+
if filename.lower().startswithwith("even_"):
|
51
|
+
#ファイル名が"even.pdf"で終わる場合(偶数ページのみがスキャンされているファイルの場合)、evencounterを足していく。
|
52
|
+
#大文字の拡張子の可能性も考慮し、lowerメソッドを組んでいる。
|
53
|
+
evencounter += 1
|
54
|
+
|
55
|
+
if filename.lower().startswith("odd_"):
|
56
|
+
#ファイル名が"odd.pdf"で終わる場合(奇数ページのみがスキャンされているファイルの場合)、oddcounterを足していく。
|
57
|
+
#大文字の拡張子の可能性も考慮し、lowerメソッドを組んでいる。
|
58
|
+
oddcounter += 1
|
59
|
+
|
60
|
+
if evencounter != 1 or oddcounter != 1:
|
61
|
+
print("エラーが発生しました。")
|
62
|
+
print(r'このファイルに置かれているPDFファイルは、"even_~~.pdf"あるいは"odd_~~.pdf"の2つのファイルのみでなくてはなりません。')
|
63
|
+
print("プログラムを終了します。")
|
64
|
+
sys.exit()
|
65
|
+
|
48
|
-
pdflist.reverse()
|
66
|
+
pdflist.reverse(key=str.lower)
|
67
|
+
#pdflistに格納されているファイルが["even_~~.pdf","odd_~~.pdf"]のみであったとして、リスト内をeven,oddからodd,evenの順番にするためにソートする。
|
68
|
+
#key=str.lowerで、大文字小文字を区別しないようにしている。
|
69
|
+
|
49
70
|
pdfwriter = PyPDF2.PdfFileWriter()
|
71
|
+
#結合したPDFファイルを保持するために、オブジェクトを作成しておく。
|
50
72
|
|
51
73
|
#奇数ページファイルの読み込みオブジェクト
|
52
|
-
#ここの部分でエラー
|
53
|
-
odd_file_name = os.getcwd() + "\" + pdflist[0]
|
54
|
-
print(odd_file_name)
|
55
|
-
odd_object = open(
|
74
|
+
odd_object = open(pdflist[0],"rb") #pdflist[0]には、oddのファイルがある。
|
75
|
+
odd_pdf = PyPDF2.PdfFileReader()
|
56
76
|
|
57
77
|
#偶数ページファイルの読み込みオブジェクト
|
58
|
-
#上の部分と同様の記述をしているため、ここの部分でもエラーが怒る可能性大。
|
59
|
-
even_file_name = os.getcwd() + "\" + pdflist[1]
|
60
|
-
print(even_file_name)
|
61
|
-
even_object = open(
|
78
|
+
even_object = open(pdflist[1],"rb") #pdflist[1]には、evenのファイルがある。
|
62
|
-
even_pdf = PyPDF2.PdfFileReader(
|
79
|
+
even_pdf = PyPDF2.PdfFileReader()
|
63
80
|
|
81
|
+
#evenとoddが同じ枚数の紙からスキャンしたオブジェクトなら、ページ数が揃うはず。その検証を行う。
|
82
|
+
#evenのページ数を取得する。
|
83
|
+
odd_num_page = odd_pdf.numPages
|
84
|
+
even_num_page = even_pdf.numPages
|
85
|
+
superchecker = 0
|
86
|
+
#57行目のような状況に遭遇した場合の排他処理そするための識別コード:デフォルトは1で、if文に引っかかった場合に1とする。
|
87
|
+
if odd_num_page != even_num_page:
|
88
|
+
print("異なる文書からスキャンた奇数ページファイル、偶数ページファイルを誤って組み合わせないようにするための、安全用プログラムが作動しました。")
|
89
|
+
print("同じ文書からスキャンして得られた偶数ページファイルと奇数ページファイルは、同じページ数になるはずです。")
|
90
|
+
print("しかし、同じ文書からスキャンした文書で、最後のページが真っ白だった場合にそのページをスキャンしなかった場合も考えられます。")
|
91
|
+
print("あなたは、上記の状況に該当しますか。する場合は、1を入力してください。")
|
92
|
+
checknum = int(input())
|
93
|
+
if chenknum == 1:
|
94
|
+
superchecker = 1
|
95
|
+
#57行目の状況に該当するので、1にしておく。
|
96
|
+
break
|
97
|
+
else:
|
98
|
+
print("プログラムを終了します。")
|
99
|
+
sys.exit()
|
100
|
+
|
101
|
+
#57行目にある状況を想定して、2つのファイルのページ数で、大きい方を格納する。
|
102
|
+
if even_num_page > odd_num_page or even_num_page == odd_num_page:
|
103
|
+
maxpagenum = even_num_page
|
104
|
+
else:
|
105
|
+
maxpagenum = odd_num_page
|
106
|
+
|
64
107
|
#PDFを、いよいよマージする。
|
108
|
+
if superchecker == 0:
|
109
|
+
#まずは、57行目のような状態でない場合(supercheckerが0の場合)
|
65
|
-
for pagenum in range(0,
|
110
|
+
for pagenum in range(0,maxpagenum):
|
66
|
-
|
111
|
+
oddpageobject = odd_pdf.getPage(pagenum)
|
67
|
-
|
112
|
+
pdfwriter = addPage(oddpageobject)
|
68
|
-
|
113
|
+
evenpageobject = even_pdf.getPage(pagenum)
|
69
|
-
|
114
|
+
pdfwriter = addPage(evenpageobject)
|
70
115
|
|
71
|
-
#マージングが終了したので、最後に書き出す
|
116
|
+
#マージングが終了したので、最後に書き出す
|
72
|
-
pdfoutput = open(
|
117
|
+
pdfoutput = open("merged.pdf","wb") #"meiged.pdf"という名前のPDFを作成する
|
73
|
-
pdfwriter.write(pdfoutput)
|
118
|
+
pdfwriter.write(pdfoutput) #書き出す
|
74
|
-
pdfoutput.close()
|
119
|
+
pdfoutput.close() #書き込みの終了
|
75
|
-
print("すべての処理が正常に完了しました。")
|
120
|
+
print("すべての処理が正常に完了しました。")
|
121
|
+
print(r'merged.pdfという名前のファイルが保存されているはずです。')
|
122
|
+
print("プログラムを終了します。")
|
123
|
+
|
124
|
+
else:
|
125
|
+
#次は、57行目のような状態である場合(superchecker1の場合)
|
126
|
+
for pagenum in range(0,maxpagenum-1):
|
127
|
+
oddpageobject = odd_pdf.getPage(pagenum)
|
128
|
+
pdfwriter = addPage(oddpageobject)
|
129
|
+
evenpageobject = even_pdf.getPage(pagenum)
|
130
|
+
pdfwriter = addPage(evenpageobject)
|
131
|
+
if pagenum == maxpagenum-2:
|
132
|
+
lastpage = maxpagenum-1
|
133
|
+
lastpageobject = even_pdf.getPage(lastpage)
|
134
|
+
pdfwriter = addPage(lastpageobject)
|
135
|
+
|
136
|
+
#マージングが終了したので、最後に書き出す
|
137
|
+
pdfoutput = open("merged.pdf","wb") #"meiged.pdf"という名前のPDFを作成する
|
138
|
+
pdfwriter.write(pdfoutput) #書き出す
|
139
|
+
pdfoutput.close() #書き込みの終了
|
140
|
+
print("すべての処理が正常に完了しました。")
|
141
|
+
print(r'merged.pdfという名前のファイルが保存されているはずです。')
|
142
|
+
print("プログラムを終了します。")
|
143
|
+
|
76
144
|
```
|
77
145
|
### 試したこと
|
78
146
|
|
3
ご指摘にあった部分を修正済み
title
CHANGED
File without changes
|
body
CHANGED
@@ -58,7 +58,7 @@
|
|
58
58
|
#上の部分と同様の記述をしているため、ここの部分でもエラーが怒る可能性大。
|
59
59
|
even_file_name = os.getcwd() + "\" + pdflist[1]
|
60
60
|
print(even_file_name)
|
61
|
-
even_object = open(even_file_name,"
|
61
|
+
even_object = open(even_file_name,"rb") #wbだったため、rbに修正済み
|
62
62
|
even_pdf = PyPDF2.PdfFileReader(even_object)
|
63
63
|
|
64
64
|
#PDFを、いよいよマージする。
|
2
ご指摘にあった部分を修正済み
title
CHANGED
File without changes
|
body
CHANGED
@@ -62,7 +62,7 @@
|
|
62
62
|
even_pdf = PyPDF2.PdfFileReader(even_object)
|
63
63
|
|
64
64
|
#PDFを、いよいよマージする。
|
65
|
-
for pagenum in range(0,
|
65
|
+
for pagenum in range(0,odd_pdf.numPages):
|
66
66
|
oddpageobject = odd_pdf.getPage(pagenum)
|
67
67
|
pdfwriter = addPage(oddpageobject)
|
68
68
|
evenpageobject = even_pdf.getPage(pagenum)
|
1
ご指摘にあった部分を修正済み
title
CHANGED
File without changes
|
body
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
###実現したいこと
|
7
7
|
両面印刷された、多数の枚数で構成された文書があるとします。
|
8
8
|
しかし、いちいちスキャンして裏返してスキャンして、次の紙をセットしてスキャンして裏返してスキャンして次の紙...など、面倒でやってられません。
|
9
|
-
そこで、この文書を、フィーダーを使って表側をすべて連続スキャンし、表文書の表側(1,
|
9
|
+
そこで、この文書を、フィーダーを使って表側をすべて連続スキャンし、表文書の表側(1,3,5,...ページ)がスキャンされたPDFを出力します。
|
10
10
|
次に、同様に裏側(2,4,6,...ページ)がスキャンされたPDFを出力します。
|
11
11
|
最後の仕上げとして、Pythonを用いて2つのPDFを、ページが1,2,3,...ページと正しく繋がった1つのPDFにマージする、という手法を思いついたと言う次第です。
|
12
12
|
これなら、両面同時コピーの機能はないがフィーダーがあって、片面を比較的高速に連続コピーやスキャンできるような家庭用の複合機で、大量の紙で構成される文書を素早くスキャンし、素早くPDFにマージできます。
|
@@ -52,14 +52,13 @@
|
|
52
52
|
#ここの部分でエラー
|
53
53
|
odd_file_name = os.getcwd() + "\" + pdflist[0]
|
54
54
|
print(odd_file_name)
|
55
|
-
odd_object = open(odd_file_name,"
|
55
|
+
odd_object = open(odd_file_name,"rb") #wbだったため、rbに修正済み
|
56
|
-
odd_pdf = PyPDF2.PdfFileReader(odd_object)
|
57
56
|
|
58
57
|
#偶数ページファイルの読み込みオブジェクト
|
59
58
|
#上の部分と同様の記述をしているため、ここの部分でもエラーが怒る可能性大。
|
60
59
|
even_file_name = os.getcwd() + "\" + pdflist[1]
|
61
60
|
print(even_file_name)
|
62
|
-
even_object = open(even_file_name,"wb") #
|
61
|
+
even_object = open(even_file_name,"wb") #wbだったため、rbに修正済み
|
63
62
|
even_pdf = PyPDF2.PdfFileReader(even_object)
|
64
63
|
|
65
64
|
#PDFを、いよいよマージする。
|