Class: VivlioStarter::CLI::Build::PrintPdfBuilder
- Inherits:
-
Object
- Object
- VivlioStarter::CLI::Build::PrintPdfBuilder
- Defined in:
- lib/vivlio_starter/cli/build/print_pdf_builder.rb
Overview
================================================================
Build::PrintPdfBuilder — 入稿用(print_pdf)PDF 生成
output.targets に print_pdf が含まれる場合の一連の生成フローを担う。
生成経路は 2 つある:
【導出フロー(既定)】「pdf +トンボ= print_pdf」
閲覧用の中間 PDF(_titlepage_legalpage.pdf / _sections.pdf / _colophon.pdf・
dedup 済み)を結合し、qpdf でページジオメトリを塗り足し+トンボ代付きへ拡張して、
トンボ・ノンブルを重畳し、最後に仕上がり線(TrimBox/BleedBox)を確定する。
入稿用本文が閲覧用と同一レンダリング由来になるため、
ページずれ・内容差・入稿用レンダの flaky が構造的に消え、
本文の再レンダリング 3 回分(実測 172 秒)が丸ごと不要になる。
【従来フロー(フォールバック)】
output.print_pdf.full_bleed: true(本文にフチなし=塗り足しまで届く要素がある本)
では閲覧用 PDF から塗り足しを復元できないため、--crop-marks --bleed 付きで
個別にレンダリングする。導出が不能な PDF(回転ページ等)を検出した場合の
自動退避先でもある。
いずれの経路でも、結合後は 隠しノンブル → アウトライン → リネーム と進む。
ビルド対象の Entry 配列に依存するため、ビルドごとにインスタンス化する。
Constant Summary collapse
- CROP_MARK_OFFSET_MM =
vivliostyle --crop-marks が確保するトンボ代(塗り足しの外側・mm)
CoverCommands::CROP_MARK_OFFSET_MM
Instance Method Summary collapse
-
#build! ⇒ Object
入稿用 PDF 生成のメインフロー。.
-
#initialize(entries, derive: !Common.print_pdf_full_bleed?)) ⇒ PrintPdfBuilder
constructor
A new instance of PrintPdfBuilder.
Constructor Details
#initialize(entries, derive: !Common.print_pdf_full_bleed?)) ⇒ PrintPdfBuilder
Returns a new instance of PrintPdfBuilder.
44 45 46 47 |
# File 'lib/vivlio_starter/cli/build/print_pdf_builder.rb', line 44 def initialize(entries, derive: !Common.print_pdf_full_bleed?) @entries = Array(entries) @derive = derive end |
Instance Method Details
#build! ⇒ Object
入稿用 PDF 生成のメインフロー。
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/vivlio_starter/cli/build/print_pdf_builder.rb', line 50 def build! Common.log_action('[print pdf] 入稿用 PDF を生成します…') # カバー画像(本文と別ファイルで入稿)は共通前段の `prepare cover assets` が # 作り済み。閲覧用 PDF の結合と同じ資産を読むため、生成はそちらに一本化した #(build-target-parallelization-spec.md §3.2)。 # --- Phase: 本文の用意(導出 or 個別レンダリング) --- derived = build_by_derivation! build_by_rendering! unless derived # --- Phase: 仕上げ --- stamp_nombre! # 導出フローの仕上がり線(TrimBox/BleedBox)はノンブル重畳の後に確定する。 # 先に書くと qpdf --overlay がトンボ・ノンブルを TrimBox に合わせて # 縮小配置してしまうため(仕様 §3.8)、overlay 完了後まで遅延させる。 finalize_print_boxes! if derived add_outline! rename! end |