ryotankの備考録日記

趣味の電子工作についての備考録などなど

基板作りチェックリストその43

PDFに書き込むその2

一部抜粋して載せる

"""基板作りチェックリストの機能動作確認

ファイル名:PDFに変数を書き込むその2
内容:フォームで入力された項目(フォームAのリスト作成日のみ)を変数に格納し
それをPDFのヘッダー部分に描画する
作成年月日:2022-6-22

動作確認日:2022-6-23

その3は、フォームAの入力項目を格納しヘッダー部分を描画する
基板名がカラの場合は、sg.popupで入ってないよと通知する

本来のリスト表にした時に今の設定(特に原点からの位置)2行表示がどのように影響するかは
まだ見ていない暫定で2行表示に成功した

keep_on_True=[bool]
Trueの場合ウィンドウは画面上のほかの全てのウィンドウの上に
作成出来る 2022-6-20"""
from PySimpleGUI import TITLE_LOCATION_TOP, InputText
import PySimpleGUI as sg

#pdf関連ライブラリ
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4, portrait #A4縦型を生成する為のライブラリ
from reportlab.lib.units import cm #描画単位をcmに設定

#特定のフォントを指定する為に
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.cidfonts import UnicodeCIDFont

elif sub_event =='-header_PDF_INPUT-':  #PDFヘッダー部分に書き込むボタンが押されたら
                #pdfに書き込みする作業
                ##1.A4サイズ縦型のCanvasを準備
                filename = sub_value['-BOARD_NAME-'] + 'チェックリスト.pdf'
                pdf = canvas.Canvas(filename, pagesize=portrait(A4))
                pdf.saveState() #セーブ

                ##2.フォント,文字サイズを設定
                pdfmetrics.registerFont(UnicodeCIDFont('HeiseiKakuGo-W5'))
                pdf.setFont('HeiseiKakuGo-W5', 16)

                ##3.固定の文字列を描画する(左から原点から, 描画したい文字列の順)
                pdf.drawString(2.2*cm, 26*cm, 
                '基板名:              ') #ヘッダー部分固定の文字列
                pdf.drawString(2.2*cm, 24*cm,
                'リスト作成日:              ')

                ##4.変数部分の文字列を描画する(左から原点から, 描画したい文字列の順)
                pdf.drawString(6.4*cm, 24*cm, 
                sub_value['-LIST_DATE-']) #ヘッダー部分可変の文字列

                ##5.pdfを保存する
                pdf.restoreState()
                pdf.save() 

上記のコードを実行すると
これが出来る

pdfに変数を書き込むその2成功例

次回は、その3を作成する

具体的には、フォームAの項目を変数に格納し、
もし基板名が何も入力されていなければ通知で警告を出す