【GeneXus】PDFの部品化?

PDFの出力をばらしたい。

この頃Blog毎日投稿してるのは。ほぼ下書きを書き上げてるだけ!これはちゃんと新規で書きました!

この頃PDF出力をする機会があり、あーこんなこともできたなー的な記憶がよみがえったので備忘録として。

PDFを出力する場合1個プロシージャを作ると思いますが、部品に分けていろいろ出力することもできます。
その場合は出力場所を保持してるLine変数を受け渡しましょう。

メインのプロシージャ

メインのプロシージャです。普通にPDFを出力する感じで作成します。

PDF_Header - Sauce

print printBlock1

PDF_Detail01.Call(&Line)
PDF_Detail02.Call(&Line)

PDF_Header - Rules

Output_file('test.pdf', 'pdf');

PDF_Header - Layout

Main Program True
Call protocol HTTP

サブプロシージャ1

PDF_Detail01 - Sauce

print printBlock1

PDF_Detail01 - Rules

Parm(in:&Line);

PDF_Detail01 - Layout

サブプロシージャ2

PDF_Detail02 - Sauce

print printBlock1

PDF_Detail02 - Rules

Parm(in:&Line);

PDF_Detail02 - Layout

実行結果

こんか感じで出力されます。

わからない人

PDF_Detail01 と PDF_Detail02 でテキストの位置が違うのはなんで?

PDF_Detail01 と PDF_Detail02 に引数で渡す&Line変数は同じだからテキストの位置が同じだと↓みたいな感じになって重なって出力されちゃうんだよ!

Oqiita

改ページすると

サブプロシージャ1 と サブプロシージャ2 の間に改ページ(eject)するとサブプロシージャ2の内容が次ページになります。

PDF_Header - Sauce

print printBlock1

PDF_Detail01.Call(&Line)
Eject
PDF_Detail02.Call(&Line)


1ページ目

2ページ目

これだとタイトルが1ページ目だけです。
ヘッダーとして出力します。

PDF_Header - Sauce

Header
	print printBlock1
End

PDF_Detail01.Call(&Line)

eject

PDF_Detail02.Call(&Line)


1ページ目

2ページ目

まとめ

PDFなんて久しぶりでしたーw

以上です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください