Django
ReportLabで既存のPDFに文字を上書きする
テンプレート用の既存PDFの上から文字を上書きしてダウンロードする方法です。 attachmentをつけるとリンクを押したら即ダウンロードが始まります。
テンプレート用の既存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を使ったAIやソフトウェアを開発している株式会社ファントムが運営しています。
メーリングリストに登録するとファントムの最新情報をお届けします
お客様のメールアドレスを共有することはありません
Comments