ReportLabで既存のPDFに文字を上書きする


press
ReportLabで既存のPDFに文字を上書きする

テンプレート用の既存PDFの上から文字を上書きしてダウンロードする方法です。

attachmentをつけるとリンクを押したら即ダウンロードが始まります。

from io import BytesIO
from reportlab.pdfgen import canvas
from reportlab.pdfbase.cidfonts import UnicodeCIDFont
from reportlab.pdfbase import pdfmetrics
from PyPDF2 import PdfFileWriter, PdfFileReader
from reportlab.lib.pagesizes import A4
from reportlab.lib.colors import pink, black, red, blue, green

def sampleSheet(request):
    packet = BytesIO()
    can = canvas.Canvas(packet, pagesize=A4) # A4のPDFを生成
    fontname = "HeiseiMin-W3" # フォントを指定
    pdfmetrics.registerFont (UnicodeCIDFont (fontname_g))
    can.setFont(fontname_g,11) # フォントサイズを指定
    can.setFillColor(green) # 文字の色を指定

    can.drawString(300, 300, "Hello world")

    can.save()

    packet.seek(0)
    new_pdf = PdfFileReader(packet)
    existing_pdf = PdfFileReader(open("sample.pdf", "rb")) # 既存のPDFを指定
    output = PdfFileWriter()
    page = existing_pdf.getPage(0)
    page.mergePage(new_pdf.getPage(0))
    output.addPage(page)

    # attachmentをつけると即ダウンロードが始まる
    response = HttpResponse(content_type='application/pdf')
    response['Content-Disposition'] = 'attachment; filename="somefilename.pdf"'
    output.write(response)
    packet.close()

    return response

当ブログは、群馬県でPython / Djangoを中心にウェブアプリケーションを開発している株式会社ファントムが運営しています。

投稿についてのお問い合わせ




Show Comments (0)

Comments

Related Articles

Python

複数の画像から動画ファイルを作る

複数の画像から動画ファイルを作る 前回に続き、今回は複数の画像をまとめて動画ファイルに変換する方法です。gifアニメーションを生成するときはPillowを使いましたが、動画を生成するときはOpenCVを使います。 コード […]

Posted on by press
Python

気象庁の天気予報をBeautifulSoup4でスクレイピング

気象庁の天気予報をBeautifulSoup4でスクレイピングします。サンプルとして群馬県の週間天気予報(場所、日付、曜日、最高気温、最低気温)を取得します。 コードはGitHubリポジトリにあげています。 週間天気予報 […]

Posted on by press