PythonでPDFファイルのページを回転してみた
PyPDF2を使って、PDFファイルのページを回転してみました。
目次
回転の手順
PyPDF2モジュールを使ってPDFファイルの中のページを回転してみます。手順は概ね下記のようになります。
PdfFileReaderでPDFファイルを読み込む
回転したいページをgetPageメソッドで抜き出す
rotateClockwizeまたはrotateCounderClockwizeメソッドでページオブジェクトを回転する
PdfFileWriterオブジェクトを作る
PdfFileWriterオブジェクトに、回転したページオブジェクトを追加する
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します。
できあがったファイルはこんな感じです。最初のページだけ回転しました。
公開日
広告