0
1

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 1 year has passed since last update.

A0サイズ1ページのPDFをA4サイズ16ページのPDFに分割する

Posted at

まず、PyPDF2モジュールの中にあるトリミングするための関数cropbox.lower_leftとcropbox.upper_rightは理解しにくいのですが、分かりやすく言うと、A0サイズ(縦1189mm 横841mm)を例にすると、

.cropbox.lower_left=(0で左切れない,1189で上切れない)
.cropbox.upper_right=(841で右切れない,0で下切れない)

というように書くことができます。

下が、A0サイズ1ページのPDFをA4サイズ16ページのPDFに分割するためのプログラムです。

import PyPDF2

# A0サイズPDFのファイルパス。予め縦にしておく。
pdf_path = '学会ポスター.pdf'

# PDFファイルを読み込む
pdf_file = open(pdf_path, 'rb')
pdf_reader = PyPDF2.PdfReader(pdf_file)

#ミリをポイントに変換するための定数。
#2.8ポイント≒1ミリメートル
pt_per_mm = 72 / 25.4 #≒2.8

# 各A4ページを作成
for a in range(4):
  for b in range(4):
        #aは列。bは行を指し、最初に縦を上から取り、その後に右へ移動します
        p1 = pdf_reader.pages[0]
        p1.cropbox.lower_left=((0+210*(a))*pt_per_mm,(1189-297*(b))*pt_per_mm)
        p1.cropbox.upper_right=((841-(3-a)*210)*pt_per_mm,(0+891-297*(b))*pt_per_mm)#y

        #A4ページをPDFファイルに保存します
        output_path = f"output/{a}{b}行目.pdf"
        pdf_writer = PyPDF2.PdfWriter()
        pdf_writer.add_page(p1)
        with open(output_path, 'wb') as output_file:
            pdf_writer.write(output_file)

A0サイズのPDFは、ポスター用であればパワーポイントで用意するのが良いと思います。

参考
A4サイズのページサイズ
a4_width = 210
a4_height = 297

A0サイズのページサイズ
a0_width = 841
a0_height = 1189

参考文献:https://blog.shikoan.com/pdf-trimming-in-python/#CropBox%E3%81%A7%E3%83%88%E3%83%AA%E3%83%9F%E3%83%B3%E3%82%B0

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?