質問編集履歴
7
スクリプトを修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -84,11 +84,13 @@
|
|
84
84
|
|
85
85
|
oddcounter = 0
|
86
86
|
|
87
|
-
for filename in listdir(
|
87
|
+
for filename in os.listdir(os.getcwd()):
|
88
88
|
|
89
89
|
#このファイルが置かれているディレクトリ内のファイルやフォルダを走査
|
90
90
|
|
91
|
+
|
92
|
+
|
91
|
-
if filename.endswith(".pdf"):
|
93
|
+
if filename.endswith(r".pdf"):
|
92
94
|
|
93
95
|
#ファイルネーム末尾が".pdf"で終わるファイルは、ファイルネームをpdflistに追加する。
|
94
96
|
|
@@ -96,7 +98,7 @@
|
|
96
98
|
|
97
99
|
|
98
100
|
|
99
|
-
if filename.lower().startswith
|
101
|
+
if filename.lower().startswith(r"even_"):
|
100
102
|
|
101
103
|
#ファイル名が"even.pdf"で終わる場合(偶数ページのみがスキャンされているファイルの場合)、evencounterを足していく。
|
102
104
|
|
@@ -106,7 +108,7 @@
|
|
106
108
|
|
107
109
|
|
108
110
|
|
109
|
-
if filename.lower().startswith("odd_"):
|
111
|
+
if filename.lower().startswith(r"odd_"):
|
110
112
|
|
111
113
|
#ファイル名が"odd.pdf"で終わる場合(奇数ページのみがスキャンされているファイルの場合)、oddcounterを足していく。
|
112
114
|
|
@@ -120,7 +122,7 @@
|
|
120
122
|
|
121
123
|
print("エラーが発生しました。")
|
122
124
|
|
123
|
-
print(r
|
125
|
+
print(r"このファイルに置かれているPDFファイルは、'even_~~.pdf'あるいは'odd_~~.pdf'の2つのファイルのみでなくてはなりません。")
|
124
126
|
|
125
127
|
print("プログラムを終了します。")
|
126
128
|
|
@@ -132,6 +134,8 @@
|
|
132
134
|
|
133
135
|
#pdflistに格納されているファイルが["even_~~.pdf","odd_~~.pdf"]のみであったとして、リスト内をeven,oddからodd,evenの順番にするためにソートする。
|
134
136
|
|
137
|
+
#key=str.lowerで、大文字小文字を区別しないようにしている。
|
138
|
+
|
135
139
|
|
136
140
|
|
137
141
|
pdfwriter = PyPDF2.PdfFileWriter()
|
@@ -142,17 +146,25 @@
|
|
142
146
|
|
143
147
|
#奇数ページファイルの読み込みオブジェクト
|
144
148
|
|
149
|
+
odd_file_name = os.getcwd() + "\" + pdflist[0]
|
150
|
+
|
151
|
+
print(odd_file_name)
|
152
|
+
|
145
|
-
odd_object = open(pdflist[0]
|
153
|
+
odd_object = open(odd_file_name,"rb") #pdflist[0]には、oddのファイルがある。
|
146
|
-
|
154
|
+
|
147
|
-
odd_pdf = PyPDF2.PdfFileReader()
|
155
|
+
odd_pdf = PyPDF2.PdfFileReader(odd_object)
|
148
156
|
|
149
157
|
|
150
158
|
|
151
159
|
#偶数ページファイルの読み込みオブジェクト
|
152
160
|
|
161
|
+
even_file_name = os.getcwd() + "\" + pdflist[1]
|
162
|
+
|
163
|
+
print(even_file_name)
|
164
|
+
|
153
|
-
even_object = open(pdflist[1]
|
165
|
+
even_object = open(even_file_name,"rb") #pdflist[1]には、evenのファイルがある。
|
154
|
-
|
166
|
+
|
155
|
-
even_pdf = PyPDF2.PdfFileReader()
|
167
|
+
even_pdf = PyPDF2.PdfFileReader(even_object)
|
156
168
|
|
157
169
|
|
158
170
|
|
@@ -166,7 +178,7 @@
|
|
166
178
|
|
167
179
|
superchecker = 0
|
168
180
|
|
169
|
-
#5
|
181
|
+
#57行目のような状況に遭遇した場合の排他処理そするための識別コード:デフォルトは1で、if文に引っかかった場合に1とする。
|
170
182
|
|
171
183
|
if odd_num_page != even_num_page:
|
172
184
|
|
@@ -186,8 +198,6 @@
|
|
186
198
|
|
187
199
|
#57行目の状況に該当するので、1にしておく。
|
188
200
|
|
189
|
-
break
|
190
|
-
|
191
201
|
else:
|
192
202
|
|
193
203
|
print("プログラムを終了します。")
|
@@ -196,7 +206,7 @@
|
|
196
206
|
|
197
207
|
|
198
208
|
|
199
|
-
#5
|
209
|
+
#57行目にある状況を想定して、2つのファイルのページ数で、大きい方を格納する。
|
200
210
|
|
201
211
|
if even_num_page > odd_num_page or even_num_page == odd_num_page:
|
202
212
|
|
@@ -212,7 +222,7 @@
|
|
212
222
|
|
213
223
|
if superchecker == 0:
|
214
224
|
|
215
|
-
#まずは、5
|
225
|
+
#まずは、57行目のような状態でない場合(supercheckerが0の場合)
|
216
226
|
|
217
227
|
for pagenum in range(0,maxpagenum):
|
218
228
|
|
@@ -228,7 +238,7 @@
|
|
228
238
|
|
229
239
|
#マージングが終了したので、最後に書き出す
|
230
240
|
|
231
|
-
pdfoutput = open("merged.pdf","wb") #"meiged.pdf"という名前のPDFを作成する
|
241
|
+
pdfoutput = open(r"merged.pdf","wb") #"meiged.pdf"という名前のPDFを作成する
|
232
242
|
|
233
243
|
pdfwriter.write(pdfoutput) #書き出す
|
234
244
|
|
@@ -244,7 +254,7 @@
|
|
244
254
|
|
245
255
|
else:
|
246
256
|
|
247
|
-
#次は、5
|
257
|
+
#次は、57行目のような状態である場合(superchecker1の場合)
|
248
258
|
|
249
259
|
for pagenum in range(0,maxpagenum-1):
|
250
260
|
|
@@ -268,7 +278,7 @@
|
|
268
278
|
|
269
279
|
#マージングが終了したので、最後に書き出す
|
270
280
|
|
271
|
-
pdfoutput = open("merged.pdf","wb") #"meiged.pdf"という名前のPDFを作成する
|
281
|
+
pdfoutput = open(r"merged.pdf","wb") #"meiged.pdf"という名前のPDFを作成する
|
272
282
|
|
273
283
|
pdfwriter.write(pdfoutput) #書き出す
|
274
284
|
|
@@ -276,7 +286,7 @@
|
|
276
286
|
|
277
287
|
print("すべての処理が正常に完了しました。")
|
278
288
|
|
279
|
-
print(r
|
289
|
+
print(r"merged.pdfという名前のファイルが保存されているはずです。")
|
280
290
|
|
281
291
|
print("プログラムを終了します。")
|
282
292
|
|
6
スクリプトをフルバージョンに更新済み
test
CHANGED
File without changes
|
test
CHANGED
@@ -166,7 +166,7 @@
|
|
166
166
|
|
167
167
|
superchecker = 0
|
168
168
|
|
169
|
-
#5
|
169
|
+
#58行目のような状況に遭遇した場合の排他処理そするための識別コード:デフォルトは1で、if文に引っかかった場合に1とする。
|
170
170
|
|
171
171
|
if odd_num_page != even_num_page:
|
172
172
|
|
@@ -196,7 +196,7 @@
|
|
196
196
|
|
197
197
|
|
198
198
|
|
199
|
-
#5
|
199
|
+
#58行目にある状況を想定して、2つのファイルのページ数で、大きい方を格納する。
|
200
200
|
|
201
201
|
if even_num_page > odd_num_page or even_num_page == odd_num_page:
|
202
202
|
|
@@ -212,7 +212,7 @@
|
|
212
212
|
|
213
213
|
if superchecker == 0:
|
214
214
|
|
215
|
-
#まずは、5
|
215
|
+
#まずは、58行目のような状態でない場合(supercheckerが0の場合)
|
216
216
|
|
217
217
|
for pagenum in range(0,maxpagenum):
|
218
218
|
|
@@ -244,7 +244,7 @@
|
|
244
244
|
|
245
245
|
else:
|
246
246
|
|
247
|
-
#次は、5
|
247
|
+
#次は、58行目のような状態である場合(superchecker1の場合)
|
248
248
|
|
249
249
|
for pagenum in range(0,maxpagenum-1):
|
250
250
|
|
5
スクリプトをフルバージョンに更新済み
test
CHANGED
File without changes
|
test
CHANGED
@@ -128,12 +128,10 @@
|
|
128
128
|
|
129
129
|
|
130
130
|
|
131
|
-
pdflist.reverse(
|
131
|
+
pdflist.reverse()
|
132
132
|
|
133
133
|
#pdflistに格納されているファイルが["even_~~.pdf","odd_~~.pdf"]のみであったとして、リスト内をeven,oddからodd,evenの順番にするためにソートする。
|
134
134
|
|
135
|
-
#key=str.lowerで、大文字小文字を区別しないようにしている。
|
136
|
-
|
137
135
|
|
138
136
|
|
139
137
|
pdfwriter = PyPDF2.PdfFileWriter()
|
@@ -144,7 +142,7 @@
|
|
144
142
|
|
145
143
|
#奇数ページファイルの読み込みオブジェクト
|
146
144
|
|
147
|
-
odd_object = open(pdflist[0],"rb")
|
145
|
+
odd_object = open(pdflist[0],"rb")
|
148
146
|
|
149
147
|
odd_pdf = PyPDF2.PdfFileReader()
|
150
148
|
|
@@ -152,7 +150,7 @@
|
|
152
150
|
|
153
151
|
#偶数ページファイルの読み込みオブジェクト
|
154
152
|
|
155
|
-
even_object = open(pdflist[1],"rb")
|
153
|
+
even_object = open(pdflist[1],"rb")
|
156
154
|
|
157
155
|
even_pdf = PyPDF2.PdfFileReader()
|
158
156
|
|
4
スクリプトをフルバージョンに更新済み
test
CHANGED
File without changes
|
test
CHANGED
@@ -80,11 +80,15 @@
|
|
80
80
|
|
81
81
|
pdflist = []
|
82
82
|
|
83
|
+
evencounter = 0
|
84
|
+
|
85
|
+
oddcounter = 0
|
86
|
+
|
83
|
-
for filename in
|
87
|
+
for filename in listdir("."):
|
84
88
|
|
85
89
|
#このファイルが置かれているディレクトリ内のファイルやフォルダを走査
|
86
90
|
|
87
|
-
if filename.endswith(
|
91
|
+
if filename.endswith(".pdf"):
|
88
92
|
|
89
93
|
#ファイルネーム末尾が".pdf"で終わるファイルは、ファイルネームをpdflistに追加する。
|
90
94
|
|
@@ -92,61 +96,193 @@
|
|
92
96
|
|
93
97
|
|
94
98
|
|
99
|
+
if filename.lower().startswithwith("even_"):
|
100
|
+
|
101
|
+
#ファイル名が"even.pdf"で終わる場合(偶数ページのみがスキャンされているファイルの場合)、evencounterを足していく。
|
102
|
+
|
103
|
+
#大文字の拡張子の可能性も考慮し、lowerメソッドを組んでいる。
|
104
|
+
|
105
|
+
evencounter += 1
|
106
|
+
|
107
|
+
|
108
|
+
|
109
|
+
if filename.lower().startswith("odd_"):
|
110
|
+
|
111
|
+
#ファイル名が"odd.pdf"で終わる場合(奇数ページのみがスキャンされているファイルの場合)、oddcounterを足していく。
|
112
|
+
|
113
|
+
#大文字の拡張子の可能性も考慮し、lowerメソッドを組んでいる。
|
114
|
+
|
115
|
+
oddcounter += 1
|
116
|
+
|
117
|
+
|
118
|
+
|
119
|
+
if evencounter != 1 or oddcounter != 1:
|
120
|
+
|
121
|
+
print("エラーが発生しました。")
|
122
|
+
|
123
|
+
print(r'このファイルに置かれているPDFファイルは、"even_~~.pdf"あるいは"odd_~~.pdf"の2つのファイルのみでなくてはなりません。')
|
124
|
+
|
125
|
+
print("プログラムを終了します。")
|
126
|
+
|
127
|
+
sys.exit()
|
128
|
+
|
129
|
+
|
130
|
+
|
95
|
-
pdflist.reverse()
|
131
|
+
pdflist.reverse(key=str.lower)
|
132
|
+
|
133
|
+
#pdflistに格納されているファイルが["even_~~.pdf","odd_~~.pdf"]のみであったとして、リスト内をeven,oddからodd,evenの順番にするためにソートする。
|
134
|
+
|
135
|
+
#key=str.lowerで、大文字小文字を区別しないようにしている。
|
136
|
+
|
137
|
+
|
96
138
|
|
97
139
|
pdfwriter = PyPDF2.PdfFileWriter()
|
98
140
|
|
141
|
+
#結合したPDFファイルを保持するために、オブジェクトを作成しておく。
|
142
|
+
|
99
143
|
|
100
144
|
|
101
145
|
#奇数ページファイルの読み込みオブジェクト
|
102
146
|
|
103
|
-
#ここの部分でエラー
|
104
|
-
|
105
|
-
odd_file_name = os.getcwd() + "\" + pdflist[0]
|
106
|
-
|
107
|
-
print(odd_file_name)
|
108
|
-
|
109
|
-
odd_object = open(
|
147
|
+
odd_object = open(pdflist[0],"rb") #pdflist[0]には、oddのファイルがある。
|
148
|
+
|
149
|
+
odd_pdf = PyPDF2.PdfFileReader()
|
110
150
|
|
111
151
|
|
112
152
|
|
113
153
|
#偶数ページファイルの読み込みオブジェクト
|
114
154
|
|
115
|
-
#上の部分と同様の記述をしているため、ここの部分でもエラーが怒る可能性大。
|
116
|
-
|
117
|
-
even_file_name = os.getcwd() + "\" + pdflist[1]
|
118
|
-
|
119
|
-
print(even_file_name)
|
120
|
-
|
121
|
-
even_object = open(
|
155
|
+
even_object = open(pdflist[1],"rb") #pdflist[1]には、evenのファイルがある。
|
122
|
-
|
156
|
+
|
123
|
-
even_pdf = PyPDF2.PdfFileReader(
|
157
|
+
even_pdf = PyPDF2.PdfFileReader()
|
158
|
+
|
159
|
+
|
160
|
+
|
161
|
+
#evenとoddが同じ枚数の紙からスキャンしたオブジェクトなら、ページ数が揃うはず。その検証を行う。
|
162
|
+
|
163
|
+
#evenのページ数を取得する。
|
164
|
+
|
165
|
+
odd_num_page = odd_pdf.numPages
|
166
|
+
|
167
|
+
even_num_page = even_pdf.numPages
|
168
|
+
|
169
|
+
superchecker = 0
|
170
|
+
|
171
|
+
#57行目のような状況に遭遇した場合の排他処理そするための識別コード:デフォルトは1で、if文に引っかかった場合に1とする。
|
172
|
+
|
173
|
+
if odd_num_page != even_num_page:
|
174
|
+
|
175
|
+
print("異なる文書からスキャンた奇数ページファイル、偶数ページファイルを誤って組み合わせないようにするための、安全用プログラムが作動しました。")
|
176
|
+
|
177
|
+
print("同じ文書からスキャンして得られた偶数ページファイルと奇数ページファイルは、同じページ数になるはずです。")
|
178
|
+
|
179
|
+
print("しかし、同じ文書からスキャンした文書で、最後のページが真っ白だった場合にそのページをスキャンしなかった場合も考えられます。")
|
180
|
+
|
181
|
+
print("あなたは、上記の状況に該当しますか。する場合は、1を入力してください。")
|
182
|
+
|
183
|
+
checknum = int(input())
|
184
|
+
|
185
|
+
if chenknum == 1:
|
186
|
+
|
187
|
+
superchecker = 1
|
188
|
+
|
189
|
+
#57行目の状況に該当するので、1にしておく。
|
190
|
+
|
191
|
+
break
|
192
|
+
|
193
|
+
else:
|
194
|
+
|
195
|
+
print("プログラムを終了します。")
|
196
|
+
|
197
|
+
sys.exit()
|
198
|
+
|
199
|
+
|
200
|
+
|
201
|
+
#57行目にある状況を想定して、2つのファイルのページ数で、大きい方を格納する。
|
202
|
+
|
203
|
+
if even_num_page > odd_num_page or even_num_page == odd_num_page:
|
204
|
+
|
205
|
+
maxpagenum = even_num_page
|
206
|
+
|
207
|
+
else:
|
208
|
+
|
209
|
+
maxpagenum = odd_num_page
|
124
210
|
|
125
211
|
|
126
212
|
|
127
213
|
#PDFを、いよいよマージする。
|
128
214
|
|
215
|
+
if superchecker == 0:
|
216
|
+
|
217
|
+
#まずは、57行目のような状態でない場合(supercheckerが0の場合)
|
218
|
+
|
129
|
-
for pagenum in range(0,
|
219
|
+
for pagenum in range(0,maxpagenum):
|
130
|
-
|
220
|
+
|
131
|
-
oddpageobject = odd_pdf.getPage(pagenum)
|
221
|
+
oddpageobject = odd_pdf.getPage(pagenum)
|
132
|
-
|
222
|
+
|
133
|
-
pdfwriter = addPage(oddpageobject)
|
223
|
+
pdfwriter = addPage(oddpageobject)
|
134
|
-
|
224
|
+
|
135
|
-
evenpageobject = even_pdf.getPage(pagenum)
|
225
|
+
evenpageobject = even_pdf.getPage(pagenum)
|
136
|
-
|
226
|
+
|
137
|
-
pdfwriter = addPage(evenpageobject)
|
227
|
+
pdfwriter = addPage(evenpageobject)
|
138
|
-
|
139
|
-
|
140
|
-
|
228
|
+
|
229
|
+
|
230
|
+
|
141
|
-
#マージングが終了したので、最後に書き出す
|
231
|
+
#マージングが終了したので、最後に書き出す
|
142
|
-
|
232
|
+
|
143
|
-
pdfoutput = open(
|
233
|
+
pdfoutput = open("merged.pdf","wb") #"meiged.pdf"という名前のPDFを作成する
|
144
|
-
|
234
|
+
|
145
|
-
pdfwriter.write(pdfoutput)
|
235
|
+
pdfwriter.write(pdfoutput) #書き出す
|
146
|
-
|
236
|
+
|
147
|
-
pdfoutput.close()
|
237
|
+
pdfoutput.close() #書き込みの終了
|
148
|
-
|
238
|
+
|
149
|
-
print("すべての処理が正常に完了しました。")
|
239
|
+
print("すべての処理が正常に完了しました。")
|
240
|
+
|
241
|
+
print(r'merged.pdfという名前のファイルが保存されているはずです。')
|
242
|
+
|
243
|
+
print("プログラムを終了します。")
|
244
|
+
|
245
|
+
|
246
|
+
|
247
|
+
else:
|
248
|
+
|
249
|
+
#次は、57行目のような状態である場合(superchecker1の場合)
|
250
|
+
|
251
|
+
for pagenum in range(0,maxpagenum-1):
|
252
|
+
|
253
|
+
oddpageobject = odd_pdf.getPage(pagenum)
|
254
|
+
|
255
|
+
pdfwriter = addPage(oddpageobject)
|
256
|
+
|
257
|
+
evenpageobject = even_pdf.getPage(pagenum)
|
258
|
+
|
259
|
+
pdfwriter = addPage(evenpageobject)
|
260
|
+
|
261
|
+
if pagenum == maxpagenum-2:
|
262
|
+
|
263
|
+
lastpage = maxpagenum-1
|
264
|
+
|
265
|
+
lastpageobject = even_pdf.getPage(lastpage)
|
266
|
+
|
267
|
+
pdfwriter = addPage(lastpageobject)
|
268
|
+
|
269
|
+
|
270
|
+
|
271
|
+
#マージングが終了したので、最後に書き出す
|
272
|
+
|
273
|
+
pdfoutput = open("merged.pdf","wb") #"meiged.pdf"という名前のPDFを作成する
|
274
|
+
|
275
|
+
pdfwriter.write(pdfoutput) #書き出す
|
276
|
+
|
277
|
+
pdfoutput.close() #書き込みの終了
|
278
|
+
|
279
|
+
print("すべての処理が正常に完了しました。")
|
280
|
+
|
281
|
+
print(r'merged.pdfという名前のファイルが保存されているはずです。')
|
282
|
+
|
283
|
+
print("プログラムを終了します。")
|
284
|
+
|
285
|
+
|
150
286
|
|
151
287
|
```
|
152
288
|
|
3
ご指摘にあった部分を修正済み
test
CHANGED
File without changes
|
test
CHANGED
@@ -118,7 +118,7 @@
|
|
118
118
|
|
119
119
|
print(even_file_name)
|
120
120
|
|
121
|
-
even_object = open(even_file_name,"
|
121
|
+
even_object = open(even_file_name,"rb") #wbだったため、rbに修正済み
|
122
122
|
|
123
123
|
even_pdf = PyPDF2.PdfFileReader(even_object)
|
124
124
|
|
2
ご指摘にあった部分を修正済み
test
CHANGED
File without changes
|
test
CHANGED
@@ -126,7 +126,7 @@
|
|
126
126
|
|
127
127
|
#PDFを、いよいよマージする。
|
128
128
|
|
129
|
-
for pagenum in range(0,ma
|
129
|
+
for pagenum in range(0,odd_pdf.numPages):
|
130
130
|
|
131
131
|
oddpageobject = odd_pdf.getPage(pagenum)
|
132
132
|
|
1
ご指摘にあった部分を修正済み
test
CHANGED
File without changes
|
test
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
|
15
15
|
しかし、いちいちスキャンして裏返してスキャンして、次の紙をセットしてスキャンして裏返してスキャンして次の紙...など、面倒でやってられません。
|
16
16
|
|
17
|
-
そこで、この文書を、フィーダーを使って表側をすべて連続スキャンし、表文書の表側(1,
|
17
|
+
そこで、この文書を、フィーダーを使って表側をすべて連続スキャンし、表文書の表側(1,3,5,...ページ)がスキャンされたPDFを出力します。
|
18
18
|
|
19
19
|
次に、同様に裏側(2,4,6,...ページ)がスキャンされたPDFを出力します。
|
20
20
|
|
@@ -106,9 +106,7 @@
|
|
106
106
|
|
107
107
|
print(odd_file_name)
|
108
108
|
|
109
|
-
odd_object = open(odd_file_name,"
|
109
|
+
odd_object = open(odd_file_name,"rb") #wbだったため、rbに修正済み
|
110
|
-
|
111
|
-
odd_pdf = PyPDF2.PdfFileReader(odd_object)
|
112
110
|
|
113
111
|
|
114
112
|
|
@@ -120,7 +118,7 @@
|
|
120
118
|
|
121
119
|
print(even_file_name)
|
122
120
|
|
123
|
-
even_object = open(even_file_name,"wb") #
|
121
|
+
even_object = open(even_file_name,"wb") #wbだったため、rbに修正済み
|
124
122
|
|
125
123
|
even_pdf = PyPDF2.PdfFileReader(even_object)
|
126
124
|
|