2013-04-25 85 views
1

我试图为我的Rails应用程序分割多页PDF,然后将页面转换为png。在最好的情况下,我最终会在我的图像模型中每页输入一个条目。Carrierwave:将多页PDF分割成多个图像

这是我到目前为止有:

def generate_png 
    manipulate! do |image, index| 
    image.format = 'png' 
    image.write("#{Rails.root}/public/#{store_dir}/image-#{index}.png") 
    end 
end 

不幸的是,只给我的图像0.png第一帧,并没有为其他帧。我哪里错了?

如何在每个帧的图像模型中生成一个新条目?类似于

model.images.new :image => image 

谢谢大家!

回答

1

当您将pdf文件拆分为图片时,如果文件名为file.pdf,结果将为多个图片同名,附加的数字为file-0.png,file-1.png .... ... 所以你需要加载PDF格式的所有转换后的图像,并将它们转换为任何你想要的格式

它给你image-0.png,因为splitting pdf文件的返回只是第一个图像,在PDF文件第一页

可以正常上传文件,然后执行after_create方法

def generate_image_form_pdf 
    file = @magazine.file 
    file_name=file.path.sub(".pdf",".jpg") 
    system("convert #{file.path} #{file_name}") 
end 

上述方法将创建PDF文件的JPG图像,并将它们存储在相同的目录和原始PDF文件的相同名称

+0

我假设你在你的系统上安装imagemagic – 2013-04-25 10:47:06

+0

感谢您的回答。目前为止我无法使用,但是我发现命令convert#{file.path}#{file_name}只返回我机器上的第一页。一般来说,似乎是我的机器出现问题。 – 2013-04-25 11:59:09

+0

当我拥有所有这些图像时,如何将它们插入到我的模型中?在我的文件系统中循环浏览它们?似乎对我来说有点不雅... – 2013-04-25 12:00:02