Module: Despeck::PdfTools

Defined in:
lib/despeck/pdf_tools.rb

Overview

Read/Write PDF files

Constant Summary collapse

DEFAULT_DPI =

Increase to improve image quality, decrease to improve performance

300

Class Method Summary collapse

Class Method Details

.for_each_page(pdf_path) ⇒ Object



40
41
42
43
44
# File 'lib/despeck/pdf_tools.rb', line 40

def for_each_page(pdf_path)
  pages_count(pdf_path).times do |page_no|
    yield page_no
  end
end

.images_to_pdf(images, pdf_path, origin_images = []) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/despeck/pdf_tools.rb', line 20

def images_to_pdf(images, pdf_path, origin_images = [])
  doc = nil

  for_each_image_file(images,
                      origin_images) do |path, pg_size, pic_size, layout|
    if doc
      doc.start_new_page(size: pg_size, layout: layout)
    else
      doc = Prawn::Document.new(page_size: pg_size, page_layout: layout)
    end
    doc.image(path, position: :left, vposition: :top, fit: pic_size)
  end

  doc.render_file(pdf_path)
end

.pages_count(pdf_path) ⇒ Object



36
37
38
# File 'lib/despeck/pdf_tools.rb', line 36

def pages_count(pdf_path)
  PDF::Reader.new(pdf_path).pages.count
end

.pdf_to_images(pdf_path, dpi: DEFAULT_DPI) ⇒ Object



12
13
14
15
16
17
18
# File 'lib/despeck/pdf_tools.rb', line 12

def pdf_to_images(pdf_path, dpi: DEFAULT_DPI)
  images = []
  for_each_page(pdf_path) do |page_no|
    images << Vips::Image.pdfload(pdf_path, page: page_no, dpi: dpi)
  end
  images
end