lib/pdf/merger/rjb.rb in pdf-merger-0.2.0 vs lib/pdf/merger/rjb.rb in pdf-merger-0.3.0
- old
+ new
@@ -16,27 +16,42 @@
# export LD_LIBRARY_PATH=/usr/java/jdk1.6.0/jre/lib/i386/:/usr/java/jdk1.6.0/jre/lib/i386/client/:./
# export JAVA_HOME=/usr/java/jdk1.6.0/
#
# Check the RJB documentation if you are having issues with this.
class Merger
+
# Saves the PDF into a file defined by path given.
- # return the number of pages in the new file
- def save_as(output_file_path)
+ # - return the number of pages in the new file
+ # - populate failure_list with paths of missing or invalid PDFs
+ def save_as(output_file_path, failure_list=[])
@pdfreader = Rjb::import('com.lowagie.text.pdf.PdfReader')
@pdfcopyfields = Rjb::import('com.lowagie.text.pdf.PdfCopyFields')
@filestream = Rjb::import('java.io.FileOutputStream')
filestream = @filestream.new(output_file_path)
copy = @pdfcopyfields.new(filestream)
@files_to_merge.each do |f|
- copy.addDocument(@pdfreader.new(f))
+ if File.exists?(f)
+ begin
+ copy.addDocument(@pdfreader.new(f))
+ rescue => e
+ failure_list << f
+ Rails.logger.warn "PDF::Merger: Invalid PDF: #{f}"
+ end
+ else
+ failure_list << f
+ Rails.logger.warn "PDF::Merger: File does not exist: #{f}"
+ end
end
- copy.addJavaScript(@js) if @js.present?
-
- copy.close()
- @pdfreader.new(output_file_path).getNumberOfPages
+ if @files_to_merge.size - failure_list.size > 0
+ copy.addJavaScript(@js) if @js.present?
+ copy.close()
+ @pdfreader.new(output_file_path).getNumberOfPages
+ else
+ 0
+ end
end
end
end