イントラマートでiTextを使用してpdfファイルを作成する方法(1)
イントラマートでiTextを使用してpdfファイルを作成する方法をまとめます。
イントラマートとは
株式会社NTTデータイントラマート社が開発・販売している、Webアプリケーションシステムのシステム共通基盤(統合型フレームワーク)で、国内の著名企業を中心に6,000社以上に導入されています。
イントラマートを導入することにより、Webシステム開発における短納期・低コスト・標準化推進・品質向上を実現できます。
詳しくはこちらをご覧ください。
イントラマートでiTextを使用してpdfファイルを作成する方法(1)
イントラマートでiTextを使用してpdfファイルを作成する方法
ヘッダー、行、テーブル、フッターを出してみる。
注意点は
ヘッダー、フッター、PDFの作成者情報は文書出力開始前に
設定しておく必要あり
です。
function init( request )
{
var bout = new java.io.ByteArrayOutputStream() ;
var doc = new Packages.com.lowagie.text.Document( new Packages.com.lowagie.text.PageSize.getRectangle( "A4" ).rotate(), 50, 50, 50, 50 );
var writer = new Packages.com.lowagie.text.pdf.PdfWriter.getInstance( doc, bout ) ;
//フォントを作成
var local_font = new Packages.com.lowagie.text.Font( Packages.com.lowagie.text.pdf.BaseFont.createFont( "HeiseiKakuGo-W5", "UniJIS-UCS2-H", Packages.com.lowagie.text.pdf.BaseFont.NOT_EMBEDDED), 10 ) ;
var header_font = new Packages.com.lowagie.text.Font( Packages.com.lowagie.text.pdf.BaseFont.createFont( "HeiseiKakuGo-W5","UniJIS-UCS2-H", Packages.com.lowagie.text.pdf.BaseFont.NOT_EMBEDDED), 15, Packages.com.lowagie.text.Font.BOLD ) ;
//ヘッダを作成
var headers = new Packages.com.lowagie.text.HeaderFooter( new Packages.com.lowagie.text.Phrase( "ヘッダー", header_font ), false ) ;
headers.setAlignment( Packages.com.lowagie.text.Element.ALIGN_CENTER ) ;
headers.setBorder( Packages.com.lowagie.text.Rectangle.NO_BORDER ) ;
doc.setHeader( headers ) ;
//フッターを作成
var footers = new Packages.com.lowagie.text.HeaderFooter( new Packages.com.lowagie.text.Phrase( "-", header_font ), new Packages.com.lowagie.text.Phrase( "-", header_font )) ;
footers.setAlignment( Packages.com.lowagie.text.Element.ALIGN_CENTER ) ;
footers.setBorder( Packages.com.lowagie.text.Rectangle.NO_BORDER ) ;
doc.setFooter( footers ) ;
//編集者を設定
doc.addAuthor( "lightgauge.net" ) ;
//タイトルを設定
doc.addTitle( "iTextサンプル・タイトル" ) ;
//サブジェクトを設定
doc.addSubject( "iTextサンプル・サブジェクト" ) ;
//作成日付を設定
doc.addCreationDate() ;
//ドキュメントをオープン
doc.open() ;
//行を作成
doc.add( new Packages.com.lowagie.text.Paragraph( "これは1行目" , local_font )) ;
doc.add( new Packages.com.lowagie.text.Paragraph( "これは2行目" , local_font )) ;
//テーブルを作成
var basetable = new Packages.com.lowagie.text.pdf.PdfPTable( 4 ) ;
//テーブルを中央寄せ
basetable.setHorizontalAlignment( Packages.com.lowagie.text.Element.ALIGN_CENTER ) ;
//カラムの大きさを指定
var col_width = java.lang.reflect.Array.newInstance( java.lang.Integer.TYPE , 4 ) ;
col_width[ 0 ] = new java.lang.Integer( 50 ).intValue() ;
col_width[ 1 ] = new java.lang.Integer( 20 ).intValue() ;
col_width[ 2 ] = new java.lang.Integer( 30 ).intValue() ;
col_width[ 3 ] = new java.lang.Integer( 40 ).intValue() ;
basetable.setWidths( col_width ) ;
//セルを作成
var cell1 = new Packages.com.lowagie.text.Phrase( "No", local_font ) ;
var cell2 = new Packages.com.lowagie.text.Phrase( "コード", local_font ) ;
var cell3 = new Packages.com.lowagie.text.Phrase( "名称", local_font ) ;
var cell4 = new Packages.com.lowagie.text.Phrase( "金額", local_font ) ;
//テーブルにセルを設定
basetable.addCell( cell1 ) ;
basetable.addCell( cell2 ) ;
basetable.addCell( cell3 ) ;
basetable.addCell( cell4 ) ;
//テーブルをドキュメントオブジェクトに追加
doc.add( basetable ) ;
//ドキュメントをクローズ
doc.close() ;
//PDFをブラウザーに出力
var strPdfFileName = Client.identifier() + ".pdf" ;
var local_file = new Packages.jp.co.intra_mart.foundation.service.client.file.NetworkFile( strPdfFileName ) ;
if(local_file.exists()){
local_file.remove() ;
}
local_file.save( bout.toByteArray()) ;
local_file.close() ;
var pdffile = new VirtualFile( strPdfFileName ) ;
var strFileData = pdffile.load() ;
pdffile.remove() ;
Module.download.send( strFileData, "test.pdf", "application/pdf" ) ;
}






