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



38
39
40
41
42
# File 'lib/despeck/pdf_tools.rb', line 38

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) ⇒ Object



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

def images_to_pdf(images, pdf_path)
  doc = nil

  for_each_image_file(images) do |path, page_size, pic_size, layout|
    if doc
      doc.start_new_page(size: page_size, layout: layout)
    else
      doc = Prawn::Document.new(page_size: page_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



34
35
36
# File 'lib/despeck/pdf_tools.rb', line 34

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

.pdf_to_images(pdf_path, dpi: DEFAULT_DPI) ⇒ Object



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

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