Embedded Python: 日本語PDFを IRISから作成しよう
IRIS 2022.1では Embedded Python が導入されました。Embedde Python によって、IRISの独自言語である ObjectScript と Python の親和性の良さをぜひ実感いただけると嬉しいです。今回の記事では、日本語PDFをPythonライブラリを利用して作成し、さらに ObjectScript と融合するところまで見ていただこうと思います。
【事前準備】
Pythonの ReportLab ライブラリ を Embedde Python にインストールしておきます。コマンドプロンプトで <IRISdir>\bin に移動し、以下を実行します。
C:\InterSystems\IRIS\bin>irispip install --target ..\mgr\python ReportLab
【PDF作成 by Python】
クラスに以下のクラスメソッドを作成し、実行します。そのまま Python のロジック、ですね。[Language=Python] と宣言するだけで、特に接続を定義する必要もなく、Pythonコードを IRISサーバ上で直接動かすことが出来ます。
ClassMethod createPDF() [ Language = python ]
{
from reportlab.pdfgen import canvas
from reportlab.lib import pagesizes
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase import ttfonts
# A4 PDF
FILENAME = 'C:/temp/HelloWorld.pdf'
pdfsize = pagesizes.portrait(pagesizes.A4)
c = canvas.Canvas(FILENAME, pdfsize)
# Font
FONTNAME = 'Meiryo UI'
FONTFILE = 'C:/Windows/fonts/Meiryo.ttc'
FONTSIZE = 24
pdfmetrics.registerFont(ttfonts.TTFont(FONTNAME, FONTFILE))
c.setFont(FONTNAME, FONTSIZE)
# put letters
xpos = 100
ypos = 500
c.drawString(xpos, ypos, 'IRISから簡単にPythonを呼び出そう')
c.save()
}
【PDF作成 by ObjectScript】
このロジックを、ObjectScriptのロジックに完全に移行することも簡単です。次のクラスメソッドをご覧ください。ReportLabライブラリの Import 、変数のセット、メソッドの実行の構文が少しだけ違いますが、先ほどのクラスメソッドと、1行ずつの実行内容がまったく同じになっていますね。PythonとObjectScriptの親和性の良さを感じていただけると思います。
ClassMethod createPDF2()
{
set canvas=##class(%SYS.Python).Import("reportlab.pdfgen.canvas")
set pagesizes=##class(%SYS.Python).Import("reportlab.lib.pagesizes")
set pdfmetrics=##class(%SYS.Python).Import("reportlab.pdfbase.pdfmetrics")
set ttfonts=##class(%SYS.Python).Import("reportlab.pdfbase.ttfonts")
; A4 PDF
set FILENAME="C:/temp/HelloWorld.pdf"
set pdfsize=pagesizes.portrait(pagesizes.A4)
set c = canvas.Canvas(FILENAME, pdfsize)
; Font
set FONTNAME = "Meiryo UI"
set FONTFILE = "C:/Windows/fonts/Meiryo.ttc"
set FONTSIZE = 24
do pdfmetrics.registerFont(ttfonts.TTFont(FONTNAME, FONTFILE))
do c.setFont(FONTNAME, FONTSIZE)
; Put letters
set xpos = 100
set ypos = 500
do c.drawString(xpos, ypos, "IRISから簡単にPythonを呼び出そう")
do c.save()
}
このように、Embedded Pythonによって、世の中に星の数ほどある Pythonライブラリ や 既存のPythonコードを、そのままIRISで実行するだけでなく、ObjectScriptに移行してIRISの既存データや既存ロジックと連携することも簡単にできます。
ぜひ Embedded Python を活用いただき、これまで以上に IRIS と世界をつなげてみてください!
★お知らせ
Embedded Pythonのセルフラーニングビデオを順次公開しています。Embedded Python概要や利用前準備、対象者別の使い方も含めて、ぜひ、以下の開発者コミュニティ記事をあわせてご参照ください。