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 タグや、罫線を書くとなると、かなり限定されてきそうだが、
めんどうで手を出しにくい。。。