PythonでPDFファイルのページを回転してみた

PyPDF2を使って、PDFファイルのページを回転してみました。

目次

  1. 回転の手順
  2. 使用するクラスとメソッド
  3. ページ回転の実施例

回転の手順

PyPDF2モジュールを使ってPDFファイルの中のページを回転してみます。手順は概ね下記のようになります。

  1. PdfFileReaderでPDFファイルを読み込む

  2. 回転したいページをgetPageメソッドで抜き出す

  3. rotateClockwizeまたはrotateCounderClockwizeメソッドでページオブジェクトを回転する

  4. PdfFileWriterオブジェクトを作る

  5. PdfFileWriterオブジェクトに、回転したページオブジェクトを追加する

  6. writeメソッドで書き出す

使用するクラスとメソッド

PdfFileReaderクラス

reader = PyPDF2.PdfFileReader(stream, [strict], [warndest], [overwriteWarnings])

名前

内容

stream

PDFファイルのパスを示す文字列、またはreadとseekに対応したオブジェクト。

strict

bool

省略可。既定値はTrue。PDFファイルを読み取ったときの警告を表示するかどうか。

warndest

省略可。既定値はsys.stderr。警告の出力先。

overwriteWarnings

bool

省略可。既定値はTrue。

reader

PdfFileReaderオブジェクト。

PdfFileReaderオブジェクトを作成します。

getNumPagesメソッド

n = reader.getNumPages()

名前

内容

reader

ページ数を調べたいPdfFileReaderオブジェクト。

n

int

PdfFileReaderオブジェクトのページ数。

PdfFileReaderオブジェクトのページ数を計算するメソッドです。引数はありません。

getPageメソッド

page = reader.getPage(pageNumber)

名前

内容

reader

ページを取得したいPdfFileReaderオブジェクト。

pageNumber

int

取得したいページのページ番号。1ページ目を0とする。

page

PageObject

取得したページオブジェクト。

PdfFileReaderオブジェクトから、指定したページを取得します。

rotateClockwizeメソッドとrotateCounterClockwizeメソッド

page.rorateCloclwize(angle)
page.rorateCounterCloclwize(angle)

名前

内容

page

PageObject

回転したいページオブジェクト。

angle

int

回転角度。90度刻みで指定する。

ページオブジェクトを回転するメソッドです。Clockwizeが時計回り、CounterClockwizeが反時計回りです。角度は90度刻みで指定します。

PdfFileWriterクラス

writer = PyPDF2.PdfFileWriter()

名前

内容

writer

PdfFileWriterオブジェクト。

PdfFileWiterクラスは、ページオブジェクトをPDFファイルに書き込むためのクラスです。

addPageメソッド

writer.addPage(PageObject)

名前

内容

writer

PdfFileWriterオブジェクト。

PageObject

PageObject

writerオブジェクトに追加するページオブジェクト。

PdfFileWiterオブジェクトにPageObjectを追加するメソッドです。

writeメソッド

writer.write(stream)

名前

内容

writer

PdfFileWriterオブジェクト。

stream

ファイルオブジェクト、またはwriteとtellに対応したオブジェクト。

ファイルオブジェクトに書き込みをします。withおよびopenと共に使うのが良いでしょう。

ページ回転の実施例

夏目先生の「こころ」のテキストを、ワードパッドに貼り付けて、PDFに出力したファイルがあります。

回転前

このPDFファイルの1ページ目を90度回転してみます。

import PyPDF2

reader = PyPDF2.PdfFileReader('kokoro.pdf', strict=False)

page = reader.getPage(0)
page.rotateClockwise(90)

writer = PyPDF2.PdfFileWriter()
writer.addPage(page)

for i in range(1, reader.getNumPages()):
    writer.addPage(reader.getPage(i))

with open('out.pdf', mode='wb') as f:
    writer.write(f)

1ページ目を回転するので、readerからページ0を抜き出してrotateClockwizeで回転しました。

回転しないページは、forループを使って1ページずつreaderからgetPageしてwriterにaddPageします。

できあがったファイルはこんな感じです。最初のページだけ回転しました。

回転後

公開日

広告