Closed kazurayam closed 1 month ago
v0.1.17が作ったPDFはセブンイレブンで印刷できた。 v0.1.18が作ったPDFは上記の通り失敗した。
v0.1.18が作ったPDFに収録された画像はv0.1.17の画像と見た目がかなり違う。ひょっとしたら縦横のサイズが大きいのかもしれない。その結果、PDFの印刷面の縦横サイズが大きくなって、上記のようなエラーを起こしているのかもしれない。
com.kazurayam.vba.printing.PDFFromImageGeneratorがPNG画像を埋め込んでPDFを生成する。
このとき画像をせめてA2サイズより小さくなるように縮小する、とかすればいいんじゃないか?
あるいはMuPDFを使って元となるPDFを縮小できるんじゃないか?
https://oshiete.goo.ne.jp/qa/11068933.html
605 本サービスで登録可能な用紙サイズの範囲外です。もしくは、出力用紙サイズの設定がされていません。 登録された原稿の縦横のサイズが対応していない為、エラーが発生しています。 ネットプリントでご登録頂ける用紙サイズは最大A2(420mm×594mm)から最小A7(74mm×105mm)までとなります。原稿のサイズを以下の範囲にしていただくことで、登録可能になります。
短辺:74mm~420mm 長編:105mm~594mm PDF形式やXPS形式に変換可能でしたら、上記のサイズに収まるように変換いただいてから、登録いただくとエラーが解消される可能性があります。
v0.1.18 のFindUsageAppGrandTestが出力した lib/build/tmp/testOutput/com.kazurayam.vba.puml.FindUsageAppGrandTest/test_writeDiagram_Options_KAZURAYAM-poster.pdf を Adobe Acrobatで開いて 文書プロパティを見た。
ページサイズが 554.9 x 722.5 mm だった。
このPDFはネットプリントで印刷するのに大きすぎるのか?
ネットプリントでご登録頂ける用紙サイズは最大A2(420mm×594mm)
ああ、ちょっと大きすぎるんですね。
短辺が 554.9 / 420.0 = 1.32 倍 長辺が 722.5 / 594 = 1.26倍
入力のPDFの縦横比率を保存したまま、短辺が420mm以下、長辺が594mm以下になるように変換したい。
v0.1.18の FindUsageAppGrandTestがこう書いてあった。70行目あたり
// modify the original PDF to a poster PDF
MutoolPosterRunner mutool =
new MutoolPosterRunner.Builder()
.x(2)
.y(2)
.original(original)
.build();
横を半分、たても半分に割って、ページにせよという指定だ。この通りに分割したその結果としてできたページが縦横ともちょっと大きすぎた。
ならば半分ではなくて三分の一づつに分割すればいいのではないか?そうすれば各ページの縦横とも少し小さくなるはず。ネットプリントサービスが受け付けてくれる範囲に収まるだろう。
v0.1.19dで FingUsageAppGrandTest を変更した。70行目あたり。
// modify the original PDF to a poster PDF
MutoolPosterRunner mutool =
new MutoolPosterRunner.Builder()
.x(3)
.y(3)
.original(original)
.build();
横3つ、縦3つに分割して、合計9ページからなるPosterができた。そのPoster.pdfのサイズがどうなったかというと
369.9 x 481.8 mm
だ。これならネットプリントサービスが受け付ける最大のページサイズ 420mm×594mm の範囲に収まる。
v0.1.19が作ったPoster.pdfをセブンイレブンのネットプリントサービスに申し込んだ。 受け付けられた。 大丈夫だ。
これまでの経験を踏まえて考えるに、MutoolPosterRunnerがどういうパラメータを受け付けて動作するのが望ましいか、アイディアを持つことができた。
こうですね。
// modify the original PDF to a poster PDF
MutoolPosterRunner mutool =
new MutoolPosterRunner.Builder()
.original(original)
.maxsize("A2") // 420 x 594 mm
.build();
ポスターpdfのページの最大サイズをmaxsizeパラメータで指定する。"A2" とはつまりA2サイズの紙のこと。A2のサイズは具体的には420ミリメートルx594ミリメートル。
.maxsize("A3")
とかやってみてもいいが、多分収まらないんじゃないかな。
セブンイレブンのネットプリントサービスを使うなら上記の書き方でOK。このやり方ならば-xと-yつまり分割する数を人が考えて指定する必要はない。与えられた入力pdfの実際のサイズと、指定されたmaxsizeとに基づいて、ソフトウェアが -xと-yを導出する。
ちょっと疑問なのが、余白がどうなるのかな?Mutoolが元画像のどこに切り込み線を入れるのか?よくわからない。まあ、なるようになればいいんだけど。
別のissueを立てて、そちらで実装しよう。
v0.1.19で対処した。