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');
Main Program | True |
Call protocol | HTTP |
サブプロシージャ1
PDF_Detail01 – Sauce
print printBlock1
PDF_Detail01 – Rules
Parm(in:&Line);
サブプロシージャ2
PDF_Detail02 – Sauce
print printBlock1
PDF_Detail02 – Rules
Parm(in:&Line);
実行結果
わからない人
PDF_Detail01 と PDF_Detail02 でテキストの位置が違うのはなんで?
PDF_Detail01 と PDF_Detail02 に引数で渡す&Line変数は同じだからテキストの位置が同じだと↓みたいな感じになって重なって出力されちゃうんだよ!
![](https://www.oqiita.com/wp-content/uploads/2020/10/GX_PDF009.png)
Oqiita
改ページすると
サブプロシージャ1 と サブプロシージャ2 の間に改ページ(eject)するとサブプロシージャ2の内容が次ページになります。
PDF_Header – Sauce
print printBlock1
PDF_Detail01.Call(&Line)
Eject
PDF_Detail02.Call(&Line)
これだとタイトルが1ページ目だけです。
ヘッダーとして出力します。
PDF_Header – Sauce
Header
print printBlock1
End
PDF_Detail01.Call(&Line)
eject
PDF_Detail02.Call(&Line)
まとめ
PDFなんて久しぶりでしたーw
以上です。