Class: VivlioStarter::CLI::PdfCommands::PdfRasterizer

Inherits:
Object
  • Object
show all
Defined in:
lib/vivlio_starter/cli/pdf.rb

Overview

PDF 全ページを JPEG 経由でラスタライズして再結合する

Instance Method Summary collapse

Constructor Details

#initialize(options, cli_input = nil, pdf_to_jpeg: ::VivlioStarter::Pdf::PdfToJpeg, jpeg_to_pdf: ::VivlioStarter::Pdf::JpegToPdf) ⇒ PdfRasterizer

Returns a new instance of PdfRasterizer.



390
391
392
393
394
395
396
397
# File 'lib/vivlio_starter/cli/pdf.rb', line 390

def initialize(options, cli_input = nil,
               pdf_to_jpeg: ::VivlioStarter::Pdf::PdfToJpeg,
               jpeg_to_pdf: ::VivlioStarter::Pdf::JpegToPdf)
  @options = options || {}
  @cli_input = cli_input
  @pdf_to_jpeg = pdf_to_jpeg
  @jpeg_to_pdf = jpeg_to_pdf
end

Instance Method Details

#callObject



399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
# File 'lib/vivlio_starter/cli/pdf.rb', line 399

def call
  apply_verbose
  pdf_path = resolve_pdf_path
  ensure_input_exists!(pdf_path)
  ensure_pdf_rasterize_tools!

  base = File.basename(pdf_path, '.*')
  work_dir = "#{base}_images"
  output_pdf = "#{base}_rasterized.pdf"

  Common.log_action("--- Phase 1: PDF → JPEG (#{normalized_dpi}dpi / quality #{normalized_quality}) ---")
  images = pdf_to_jpeg.convert(pdf_path, output_dir: work_dir, dpi: normalized_dpi, quality: normalized_quality)
  Common.log_info("#{images.size} ページを生成しました")

  Common.log_action('--- Phase 2: JPEG → PDF ---')
  jpeg_to_pdf.convert(images, output_pdf)

  Common.log_result("#{images.size} ページをラスタライズしました: " \
                    "#{File.basename(output_pdf)}#{output_size_mb(output_pdf)} MB)", status: :success)
  cleanup_work_dir_if_needed(work_dir)

  { pdf_path:, work_dir:, output_pdf:, images: }
end