PDF帳票、HTMLで準備するWebページをテンプレートにする発想

wkhtmltopdf を使用して、Python pdfkit で、URL指定からPDF生成という流れ。

wkhtmltopdf は、OS環境に合わせて以下からダウンロードしてインストール
https://wkhtmltopdf.org/downloads.html

参考は、過去の投稿、、、
Java→Python Pdfkit実行→PDF受け取る - Oboe吹きプログラマの黙示録

pdfkit の from_url - Oboe吹きプログラマの黙示録

# -*- coding: UTF-8 -*-
import sys
import pdfkit

def pageToPdf(url, pagesize='A4', orientation='Portrait'):
    options = {
        'page-size': pagesize,
        'orientation': orientation,
        'margin-top': '0.4in',
        'margin-right': '0.4in',
        'margin-bottom': '0.4in',
        'margin-left': '0.4in',
        'encoding': "UTF-8",
        'no-outline': None
    }
    pdf = pdfkit.from_url(url, False, options=options)
    sys.stdout.buffer.write(pdf)


編集したHTMLソースを即時、PDF変換を確認したければ、

pdfkit.from_file("sample.html", "out.pdf", options=options)

今日、メモとして残したいのは、、
テンプレートになるHTMLの最低限のCSS

base.css

@charset "UTF-8";
html{ width:100%; height:100%; }
body{
    margin: 0;
    padding: 0;
    -webkit-text-size-adjust: 100%;
    font-family: 'Hiragino Kaku Gothic ProN', 'ヒラギノ角ゴ ProN W3', Meiryo, メイリオ, sans-serif;
}
table{
    border-spacing: 0; border-collapse: collapse;
}
th,td{
    box-sizing: border-box;
}
#content{
    box-sizing: border-box;
    width: 1432px;
    height: 2074px;
}

表の罫線は、別途CSSで、

th,td{
   border: 1px solid #000000;
}

を用意すること。
HTMLソースは、、、

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta http-equiv="content-language" content="ja">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>sample</title>
    <link rel="stylesheet" type="text/css" href="base.css">
</head>

Python スクリプト起動→ pdfkit 実行 → PDF生成結果を出力 → HTTP 送信

Java→Python Pdfkit実行→PDF受け取る - Oboe吹きプログラマの黙示録
のようにする。

メリットと思われるもの
・帳票テンプレートとしてHTMLをWebページで確認、Webページ作成として編集できる。
・表の罫線描画など、HTML と CSS の知識があれば、テンプレートを書ける。
・Webアプリの通常の機能である動的なページHTML出力がそのままPDFイメージになる。
欠点と思われるもの
・HTML 、CSS 知識ない人は作れない。
・一度に複数レイアウト、複数の種類フォーマット( A4縦/横を混ぜたりなど)を出力できない
・大量の枚数、ページ数になるものには不向き

スピードは、、
 Webページ生成の時間+ pdfkit 実行時間 であるが、さほど時間がかからなく耐えられるであろう。
帳票テンプレートとしてHTML編集は、WYSIWYGというのも
有りだとは思うが、、、
WYSIWYG は、結構世の中にたくさん出ていて、どのCMSを使えば良いのか
判らない。
table タグや、罫線を書くとなると、かなり限定されてきそうだが、
めんどうで手を出しにくい。。。