lib/fn/pdf/writer.rb in fn_document-0.9.13 vs lib/fn/pdf/writer.rb in fn_document-0.9.14
- old
+ new
@@ -1,9 +1,10 @@
require "rubygems"
require "PDFlib"
require "RMagick"
require "tempfile" # Built into ruby
+require "open-uri" # So we can download remote files
Dir[File.dirname(__FILE__) + "/node/*.rb"].each do |f|
require f.sub(/\.rb$/, '')
end
module FN
module PDF
@@ -110,21 +111,24 @@
doc.photo_blocks.each do |block|
image = nil
begin
context.inject_at_page(block.page_number) do
- image = doc.resource(block.src).path_from(root)
- tmp = Magick::Image::read(image).first
+ # image = doc.resource(block.src).path_from(root)
+ # tmp = Magick::Image::read(image).first
+ # http://stackoverflow.com/questions/7264895/rmagick-can-not-read-remote-image
+ urlimage = open(block.src)
+ tmp = Magick::Image::from_blob(urlimage.read)
dims = [tmp.columns.to_f, tmp.rows.to_f]
x, y, width, height = calculate(block, dims)
context.add LoadImage(image, "tmp")
context.add FitImage("{tmp}", x, y, :fitmethod => "meet",
:boxsize => [width, height])
end
rescue Magick::ImageMagickError => e
$stderr.puts e.message
$stderr.puts e.backtrace.join("\n")
- raise WriterError.new("Couldn't load '#{block.src}', given by #{doc.resource(block.src).node}")
+ raise WriterError.new("Couldn't load remote photo '#{block.src}', given by #{doc.resource(block.src).node}")
end
end
doc.pages.each do |page|
context.add EndPageExt(page["number"])
\ No newline at end of file