Module: Pdfrb::ImageLoader::PDF

Defined in:
lib/pdfrb/image_loader/pdf.rb

Overview

PDF image loader. Imports a page from another PDF document as a Form XObject, suitable for embedding via the Do operator or the canvas image method (TODO 95 enhancement).

Class Method Summary collapse

Class Method Details

.call(document, io, page: 0, **_opts) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/pdfrb/image_loader/pdf.rb', line 11

def call(document, io, page: 0, **_opts)
  source_doc = io.is_a?(Pdfrb::Document) ? io : Pdfrb::Document.open(io)
  source_page = source_doc.pages[page]
  return nil unless source_page

  importer = Pdfrb::Importer.new(document)
  imported_value = importer.import(source_page.value, source_doc)
  imported_value.delete(:Parent)
  imported_value[:Type] = :XObject
  imported_value[:Subtype] = :Form
  imported_value[:BBox] ||= imported_value[:MediaBox] || [0, 0, 612, 792]

  form = document.add(imported_value, type: Pdfrb::Model::Type::XObjectForm)
  form
end