class DocPdf

Public Class Methods

configure(**opts) click to toggle source
# File lib/doc_2_pdf/doc_pdf.rb, line 2
def self.configure **opts
  [:doc_dir, :pdf_dir].each do |required_opt|
    raise ArgumentError, "Missing required config option: :#{required_opt}" unless opts[required_opt]
  end
  @@doc_dir = File.join(opts[:doc_dir], '') # adds trailing '/' if it doesn't already have one
  @@pdf_dir = File.join(opts[:pdf_dir], '') # adds trailing '/' if it doesn't already have one
end
convert!() { |relative_pdf_path| ... } click to toggle source
# File lib/doc_2_pdf/doc_pdf.rb, line 10
def self.convert!
  Dir.glob(File.join(@@doc_dir, '**', '*.{doc,docx}')) do |doc|
    relative_pdf_path = convert_doc doc
    yield(relative_pdf_path) if block_given?
  end
end
convert_single!(doc) click to toggle source
# File lib/doc_2_pdf/doc_pdf.rb, line 17
def self.convert_single! doc
  convert_doc doc
end
doc?(file_path) click to toggle source
# File lib/doc_2_pdf/doc_pdf.rb, line 21
def self.doc? file_path
  ['.doc', '.docx'].include? File.extname(file_path)
end

Private Class Methods

convert_doc(doc) click to toggle source
# File lib/doc_2_pdf/doc_pdf.rb, line 27
def self.convert_doc doc
  raise ArgumentError, "Not a .doc/.docx file: #{doc}" unless doc?(doc)
  pdf_filename = File.basename(doc, '.*')+'.pdf'
  relative_path = File.dirname doc.gsub(@@doc_dir, '')
  relative_pdf_path = relative_path == '.' ? pdf_filename : File.join(relative_path, pdf_filename)
  pdf_path = File.join @@pdf_dir, relative_pdf_path
  FileUtils.mkdir_p File.dirname(pdf_path)
  Libreconv.convert doc, pdf_path
  relative_pdf_path
end