異なった高さのページから成るPDFファイルを作るには

Go down

異なった高さのページから成るPDFファイルを作るには

投稿 by M_Fujihara on 2018-03-07, 1:26 pm

4Dver16でページ毎に高さ(長さ)が異なったPDFファイルを作るには,どうすれば良いでしょうか。
例えば1ページ目が目次のページで,次からは切れ目のない巻物の様なページにするという感じです。

SET PRINT OPTION(Paper option;$望む幅;$望む高さ)
$area1:=Print form([table];"print form";0;$1ページ目)
PAGE BREAK //改ページをしたつもり
$area2:=Print form([table];"print form";$1ページ目+改ページ余白;$望む高さ)

としたのですが,2ページ目だけが用紙の先頭から印刷されます。PAGE BREAKを消すと,全体が切れ目のないPDFファイルになってしまいます。2つのフォームから作ったファイルを結合するという方法もありますが,4Dだけでは出来ないと思います。


余計ではありますが,この作業をしていて気付いたこと;
GET PRINTABLE AREAの反対は,SET PRINTABLE AREAではなく(この様なコマンドは存在しない),SET PRINT OPTION(Paper option;Winkですね。

M_Fujihara

投稿数 : 61
登録日 : 2016/12/03

トップに戻る Go down

Re: 異なった高さのページから成るPDFファイルを作るには

投稿 by miyako on 2018-03-07, 2:21 pm

PDFの用紙サイズは,

PAGE SETUP
http://doc.4d.com/4Dv16/4D/16.3/PAGE-SETUP.301-3651113.ja.html

WP USE PAGE SETUP
http://doc.4d.com/4Dv16/4D/16.3/WP-USE-PAGE-SETUP.301-3651606.ja.html

PRINT SETTINGS
http://doc.4d.com/4Dv16/4D/16.3/PRINT-SETTINGS.301-3651124.ja.html

SET PRINT OPTION(Paper option)

などで設定できますが,印刷ジョブを開始した後,用紙サイズなどのプリント設定を変えることは,できないことになっています。

エラーメッセージ:

Code:
Error code: 1009 (4DRT)
このメソッドや関数を印刷ジョブが開始された時に呼び出すことはできません。

いずれにしても,PAGE BREAKを挿入するタイミングで用紙サイズを制御することはできないのではないでしょうか。

お察しのとおり,PDF文書を分割して出力する必要がありそうです。

例:

$path:=Temporary folder+Generate UUID+Folder separator
CREATE FOLDER($path;*)

SET PRINTABLE MARGIN(0;0;0;0)

 //custom page size
FORM LOAD("F")
OBJECT GET COORDINATES(*;"H";$l;$t;$r;$b)
$width:=$r-$l
$height:=$b-$t
SET PRINT OPTION(Paper option;$height;$width)
SET PRINT OPTION(Destination option;3;$path+"p1.pdf")
FORM UNLOAD

OPEN PRINTING JOB
FORM LOAD("F")
$printed:=Print object(*;"H")
FORM UNLOAD
CLOSE PRINTING JOB

$count:=20

 //custom page size
FORM LOAD("F")
OBJECT GET COORDINATES(*;"D";$l;$t;$r;$b)
$width:=$r-$l
$height:=$b-$t
SET PRINT OPTION(Paper option;$height*$count;$width)
SET PRINT OPTION(Destination option;3;$path+"p2.pdf")
FORM UNLOAD

OPEN PRINTING JOB
FORM LOAD("F")
$x:=0
$y:=0
For ($i;1;$count)
$printed:=Print object(*;"D";$x;$y)
$y:=$y+$height
End for
FORM UNLOAD
CLOSE PRINTING JOB

SHOW ON DISK($path)

https://github.com/4D-JP/4d-tips-print-variable-document-size/releases/tag/0.1

miyako

投稿数 : 258
登録日 : 2016/07/05

トップに戻る Go down

Re: 異なった高さのページから成るPDFファイルを作るには

投稿 by miyako on 2018-03-07, 2:30 pm

PDFを結合するツールはいろいろあるようですね。

PDFtk
https://www.pdflabs.com/tools/pdftk-server/

4Dの例題:
https://github.com/miyako/4d-component-pdftk

Poppler
https://poppler.freedesktop.org

4Dの例題:
https://github.com/miyako/4d-component-poppler

Ghostscript
https://www.ghostscript.com

4Dの例題:
https://github.com/miyako/4d-plugin-gs

ほか,python, ruby, PHPなどのプログラムがいっぱい検索でヒットしました。

miyako

投稿数 : 258
登録日 : 2016/07/05

トップに戻る Go down

Re: 異なった高さのページから成るPDFファイルを作るには

投稿 by miyako on 2018-03-07, 2:59 pm

Ghostscriptの例題を作ってみました。

https://github.com/4D-JP/4d-tips-print-variable-document-size

miyako

投稿数 : 258
登録日 : 2016/07/05

トップに戻る Go down

Re: 異なった高さのページから成るPDFファイルを作るには

投稿 by M_Fujihara on 2018-03-07, 9:51 pm

ありがとうございました。

用紙サイズの設定で,SET PRINT OPTION(Paper option;$望む幅;$望む高さ)が気に入った点はプリントアウトの範囲を操作できるので,余白を減らせることです。

書類を残すのは,紙よりもPDFとなりつつあるので,4DもPDFをSET PRINT OPTIONの選択肢の一つでなく,強化して頂きたいと思います。4DでPDFの入力可能フォームが直接出力出来るようになり,また逆にPDFから入力されたデータを簡単に吸い上げることが出来れば(今でもPDFの設定で出来るはずですが),ネットワークに依存しないデータ収集も出来る様になると思います。

M_Fujihara

投稿数 : 61
登録日 : 2016/12/03

トップに戻る Go down

Re: 異なった高さのページから成るPDFファイルを作るには

投稿 by Sponsored content


Sponsored content


トップに戻る Go down

トップに戻る


 
Permissions in this forum:
返信投稿: 不可