Skip to content

Instantly share code, notes, and snippets.

@masudakoji
Last active September 15, 2020 06:16
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save masudakoji/0db742b76c67e581e31d5670f3ac7a3b to your computer and use it in GitHub Desktop.
Save masudakoji/0db742b76c67e581e31d5670f3ac7a3b to your computer and use it in GitHub Desktop.
2枚のPDFを重ねて出力する
#!/usr/bin/env python
#coding: utf-8
#from pyPdf import PdfFileWriter, PdfFileReader
from PyPDF2 import PdfFileWriter, PdfFileReader
def Overlay():
back_ground = PdfFileReader(open("template.pdf", "rb"))
page1 = back_ground.getPage(0)
over_lay = PdfFileReader(open("abst.pdf", "rb"))
page1.mergePage(over_lay.getPage(0))
output = PdfFileWriter()
output.addPage(page1)
outputStream = open("overlay.pdf", "wb")
output.write(outputStream)
outputStream.close()
if __name__ == '__main__':
Overlay()
@masudakoji
Copy link
Author

masudakoji commented Jan 24, 2017

概要

2枚の同じサイズのPDFを重ねて出力する。主な用途としては、Wordで提供されているテンプレートをLaTeXで再現するときに、レイアウトが同じかどうかを確かめるときに使う。

requirements

  • pyPdf, or PyPDF2

仕様

  • 2つのpdfのサイズ(用紙サイズ)は同じでないとならない
  • 入力画像は template.pdfとabst.pdf
    • Wordでテンプレートが提供されている場合、これをtemplate.pdfとして出力すれば良いだろう
  • template.pdfの上に、abst.pdfが重なるようにして出力される
  • 出力ファイル名はoverlay.pdf

搭載していない機能

  • 複数ページのpdfへの対応
  • 現在はPDFの1ページ目のみを対象としている
    back_ground.getPage(0)
  • 複数ページで重ねて描画したい場合はgetPage(0)を変更するようなループを作ればできるかと思う。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment