lib/pdf_filler/book.rb in gbdev-pdf_filler-0.3.2 vs lib/pdf_filler/book.rb in gbdev-pdf_filler-0.3.3
- old
+ new
@@ -40,24 +40,53 @@
end
end
document.close
FileUtils.rm_rf(temp_dir, {:secure => true})
- end
+ end
- # Renders the PDF Book without saving it to disk and displays it in the browser.
- def display
- end
+ # Renders the template with the given data and returns that buffer.
+ def to_buffer
+ dir = defined?(RAILS_ROOT) ? [RAILS_ROOT, 'tmp'].join('/') : File.expand_path(File.dirname(__FILE__) + '/../../spec/output')
+ temp_dir = [dir, "collection_temp_#{build_random_string}"].join('/')
+ Dir.mkdir(temp_dir)
+ @pages.each_with_index do |page, indx|
+ page.save_to([temp_dir, "#{indx}_#{build_random_file_name}"].join('/'))
+ end
+ temp_files = Dir[[temp_dir,'*'].join('/')].sort
+
+ document = Document.new
+ baos = ByteArrayOutputStream.new
+ copier = PdfCopy.new(document, baos)
- # Renders the PDF Book, saves it to the specified file and then displays the PDF in the browser.
- #
- # * filename - A path to the file to be created.
- def save_and_display(filename)
- save(filename)
- display
- end
+ document.open
+
+ # This did not work but try working on it again later.
+ # @pages.each do |page|
+ # bais = ByteArrayInputStream.new_with_sig(page.to_buffer)
+ # reader = PdfReader.new(bais)
+ # reader = page.get_pdf_reader
+ # n_pages = reader.getNumberOfPages
+ # n_pages.times do |i|
+ # copier.addPage( copier.getImportedPage(reader, i+1)) if copier
+ # end
+ # end
+
+ temp_files.each do |read_target|
+ reader = PdfReader.new(read_target)
+ n_pages = reader.getNumberOfPages
+ n_pages.times do |i|
+ copier.addPage( copier.getImportedPage(reader, i+1)) if copier
+ end
+ end
+ document.close
+
+ #FileUtils.rm_rf(temp_dir, {:secure => true})
+
+ return baos.toByteArray()
+ end
- include Gbdev::Utils::PrivateMethods
+ include GBDev::Utils::PrivateMethods
end # End Filler
end # End PDF