Skip to content

Instantly share code, notes, and snippets.

@3110
Last active July 20, 2019 08:45
Show Gist options
  • Save 3110/8ea21e8957d9f7977097 to your computer and use it in GitHub Desktop.
Save 3110/8ea21e8957d9f7977097 to your computer and use it in GitHub Desktop.
PDFのページを時計回りに90度回転させる
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# ==============================================================================
#
# PDF を時計回りに 90 度回転させる
#
# https://github.com/mstamy2/PyPDF2
# ==============================================================================
import os
from PyPDF2 import PdfFileWriter, PdfFileReader
import logging
def get_logger():
logger = logging.getLogger('pr')
logger.setLevel(logging.DEBUG)
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
logger.addHandler(ch)
return logger
def rotate_pdf(argv):
logger = get_logger()
input_pdf = os.path.abspath(argv.input_pdf)
output_pdf = '%s-ROTATED%s' % (os.path.splitext(input_pdf))
writer = PdfFileWriter()
with open(input_pdf, 'rb') as istream:
reader = PdfFileReader(istream)
n_pages = reader.getNumPages()
if argv.pages is None:
argv.pages = range(1, n_pages + 1)
for p in range(0, n_pages):
if p + 1 in argv.pages:
if argv.verbose:
logger.info('Page %d: Rotating ...' % (p + 1))
writer.addPage(reader.getPage(p).rotateClockwise(90))
else:
if argv.verbose:
logger.info('Page %d: Processing ...' % (p + 1))
writer.addPage(reader.getPage(p))
logger.info('done.')
with open(output_pdf, 'wb') as ostream:
writer.write(ostream)
return 0
if __name__ == '__main__':
import sys
import argparse
parser = argparse.ArgumentParser(description=u'PDF を時計回りに回転させます。')
parser.add_argument('-p', '--pages',
nargs='*',
type=int,
help=u'回転させるページ')
parser.add_argument('-v', '--verbose',
action='store_true',
help=u'処理過程を詳細に表示')
parser.add_argument('input_pdf', help=u'変換するPDFファイル名')
sys.exit(rotate_pdf(parser.parse_args()))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment