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
- .for_each_page(pdf_path) ⇒ Object
- .images_to_pdf(images, pdf_path) ⇒ Object
- .pages_count(pdf_path) ⇒ Object
- .pdf_to_images(pdf_path, dpi: DEFAULT_DPI) ⇒ Object
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 |