記事
· 2022年7月11日 3m read

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 と世界をつなげてみてください! laugh
 

 

★お知らせ

Embedded Pythonのセルフラーニングビデオを順次公開しています。Embedded Python概要や利用前準備、対象者別の使い方も含めて、ぜひ、以下の開発者コミュニティ記事をあわせてご参照ください。

 【はじめてのInterSystems IRIS】Embedded Python セルフラーニングビデオシリーズ公開!

ディスカッション (0)0
続けるにはログインするか新規登録を行ってください