0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

1ページを4分割で両面印刷したときに、つぎのページが裏面になるようにする

Last updated at Posted at 2021-02-19

何がしたいか

pdfファイルで、A4を4面分割し、両面印刷するときを考える。
デフォルトだと次のような順序でページが割り当てられると思う。

普通.png

 そのまま用紙を読むぶんにはこれでOKなのだが、今回わたしは用紙をバラバラに切りわけて、冊子にしたいとおもっている。そのため、両面印刷したときに、ちょうど次のページが真裏に来るようにページの順序を入れ替えたいのだ。
 こうすれば、印刷したあとで紙を切ると両面のペアになってくれる。

並び替えた.png

重ねる.png

プログラム

PyPDF2を利用した。もともとpdfの結合として使っていたが、ページの並び替えにも役立つようだ。

import PyPDF2

def sorting(i):
    lst = [0, 2, 4, 6, 3, 1, 7, 5]
    q = i % 8
    return lst[q]


targetPdf = PyPDF2.PdfFileReader('./target.pdf')
sortedPdf = PyPDF2.PdfFileWriter()
merger = PyPDF2.PdfFileMerger()

sort = []

for i in range(int(targetPdf.getNumPages() / 8) * 8):
    sort.append(sorting(i) + int(i / 8) * 8)

for i in range(int(targetPdf.getNumPages() / 8) * 8):
    sortedPdf.addPage(targetPdf.getPage(sort[i]))


with open('./sorted.pdf', 'wb') as f:
    sortedPdf.write(f)

ページ数が8で割り切れない場合の処理がかけていない。
一旦、あまりの箇所は対象から除外することで回避している。

なんでこんなことがしたかったか(背景)

 実はコンビニだとA4とA3の印刷代金が変わらない(らしい)。いままでA4の2分割(小冊子)を利用していたが、A3を4分割すれば半額で済むではないかと気付いた。

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?