Sha256: a1cfabf3c697335836e3ee34a0397596e1de2049bc34d865618bda44ac05db29

Contents?: true

Size: 1.81 KB

Versions: 9

Compression:

Stored size: 1.81 KB

Contents

module Dhalang
  # Allows consumers of this library to create PDFs with Puppeteer. 
  class PDF
    PUPPETEER_SCRIPT_PATH = File.expand_path('../js/pdf-generator.js', __FILE__).freeze
    private_constant :PUPPETEER_SCRIPT_PATH
    
    # Captures the full webpage under the given url as PDF.
    #
    # @param  [String] url      The url to get as PDF.
    # @param  [Hash]   options  User configurable options.
    #
    # @return [String] The PDF that was created as binary.
    def self.get_from_url(url, options = {})
      UrlUtils.validate(url)
      get(url, options)
    end

    # Captures the full HTML as PDF.
    # Useful when creating dynamic content, for example invoices.
    #
    # @param  [String]  html     The html to get as PDF.
    # @param  [Hash]    options  User configurable options.
    #
    # @return [String] The PDF that was created as binary.
    def self.get_from_html(html, options = {})
      html_file = FileUtils.create_temp_file("html", html)
      url = "file://" + html_file.path
      begin
          binary_pdf_content = get(url, options)
      ensure
        FileUtils.delete(html_file)
      end
      return binary_pdf_content
    end

    
    # Groups and executes the logic for creating a PDF of a webpage.
    #
    # @param  [String]  url      The url to create a PDF for.
    # @param  [Hash]    options  Set of options to use, passed by the user of this library.
    #
    # @return [String] The PDF that was created as binary.
    private_class_method def self.get(url, options)
      temp_file = FileUtils.create_temp_file("pdf")
      begin
        Puppeteer.visit(url, PUPPETEER_SCRIPT_PATH, temp_file.path, "pdf", options)
        binary_pdf_content = FileUtils.read_binary(temp_file.path)
      ensure
        FileUtils.delete(temp_file)
      end
      return binary_pdf_content
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
Dhalang-0.6.6 lib/PDF.rb
Dhalang-0.6.5 lib/PDF.rb
Dhalang-0.6.4 lib/PDF.rb
Dhalang-0.6.3 lib/PDF.rb
Dhalang-0.6.2 lib/PDF.rb
Dhalang-0.6.1 lib/PDF.rb
Dhalang-0.6.0 lib/PDF.rb
Dhalang-0.5.0 lib/PDF.rb
Dhalang-0.4.0 lib/PDF.rb