日替わり通信術練習(和文pdfファイルの表示とダウンロード機能)
2023年9月期の一総通試験が終わり、メールやX(Twitter)で頂いた合格(通信術の科目合格)の報告が5件と過去最高を記録。2023年3月期は1件だったので、通年だと最低でもアプリ利用者の合格者は6名ということになる。2022年度の合格者数が10名だそうなので、今年度はアプリの効果でもう少し合格者数が増えていたりしないだろうか、と期待。
頂いたメールの中で、古いパソコンのブラウザだと和文ページのマスがずれて表示されるというコメントがあった。この問題は把握していて、古いブラウザだとCSSの解釈が不完全だったりフォントが入っていないなどの原因がある。
基本的にはできるだけ最新のブラウザやスマートフォンを使ってほしい、ということなんだけど、試しにサーバ側で和文ページのpdfを生成して、ブラウザから表示・ダウンロードできるように検討を開始。
和文ページはJavaScriptで動的に生成しているので、サーバ(VPS)でChromeをヘッドレスモードで起動し、PythonのSeleniumで和文ページをクリックして表示させてから、pdfで保存するというのが一連の流れ。以下のページが参考になった(というかそのまま)。
[Qiita]SeleniumとHeadless ChromeでページをPDFに保存する
Seleniumのスクリプトを工夫して、過去の問題をどんどん掘っていってpdf化することも可能だけど、とりあえずは機能実装後のpdfを毎日保存していくようにしてみた。
このヘッドレスChromeとSeleniumは優秀で、たいていのWeb情報はクローリング・スクレイピングできそうだけど、なるほどそういうのを避けるために「私はロボットではありません」みたいなチェックをさせる仕掛けがあるんだな、と納得。
既知の不具合としては、スマホのPWAでアプリとして起動したときに、pdf表示から元の画面に戻る方法がないこと。pdfに元ページへのハイパーリンクを仕込めばいいのかな。