【发布时间】:2015-09-09 03:34:48
【问题描述】:
我花了很多时间研究使用 Ruby/Rails 的 PDF 工具,但我找不到我需要的东西。我的理解可能存在差距。
最终用户工作流程
作为用户,我可以将 PDF 文档(可能是扫描图像)上传到 AngularJS/Rails 应用程序。该 PDF 文档应作为 PDF 文档存储在服务器上(而不是存储在云存储中)。稍后,我可以将该 PDF 文档下载回我的计算机。
第一次尝试
实际上,我确实使用 CarrierWave、ImageMagick 和 GhostScript 完成了这项工作。 GhostScript 是让 ImageMagick 处理 PDF 的难题中缺失的一块。代码如下所示:
def create
@scanned_pdf = ScannedPdf.new
@scanned_pdf.image = params[:file]
image = MiniMagick::Image.new(@scanned_pdf.image.path)
@scanned_pdf.content_type = image.mime_type
@scanned_pdf.name = params[:file].original_filename
if @scanned_pdf.save
render status: :ok, json: serialize(@scanned_pdf)
else
render status: :unprocessable_entity, json: serialize_errors(@scanned_pdf)
end
end
一切都很好,直到我们意识到我们需要商业 GhostScript 许可证。我们已与他们联系,但他们的销售团队体验不佳,因此我们正在探索其他选择。
问题
我无法获取来自params[:file] 的数据并将其保存为服务器上的 PDF。我什至不知道数据是什么格式的。
如果我尝试下面的代码,我最终会得到一个文件...
# store_dir stores the path for the image
FileUtils.mkdir @scanned_pdf.store_dir
FileUtils.cp_r params[:file].path, @scanned_pdf.store_dir
...但是该文件中包含如下信息:
iÀø³Ÿ/rÌKC̱>©¬êÚy0¢¯9äÛ1 Žoé^×}œ_÷`ÿ~â•Rbu0ΞóC‚@J,LoŸ®MÀ IÃ:kˆ¾¿ªeßøîžÉ!Ç‚àh®6ˆÒ‡†î²jMÕñk¢{æv ¸ A §NŸÁ×½á /=~"QÖ‡¤aj...*Åß~'†ƒXGøëÑ>ÀÏ\º‡VIÓ/^£Ç/M E§ÉºN#OUÇËH¿&òƒáüÎøzÁ4kÖœ¤l«›hjªZ‡¡#øåù¡˜,ArPê0¬9ª:4j†²–Ü'¦k6ôõÛráßè¿ÖaXsTuhÔ4 (ˆxxá"ï~z烎ùÖaXëTuhŒÚÂôöéiºÆ]ìp>ÖaXëTu
我什至不确定我在这里做什么。
我自己尝试过pdf-reader gem、active_pdftk、Wicked PDF,并多次尝试使用Ruby File 和IO 类。
理想情况下,我想做类似的事情
File.open(params[:file].path, "rb") do |io|
reader = PDF::Reader.new(io)
rendered_pdf = reader.render # not actually a method
rendered_pdf.save # in a useful location
end
我觉得我在这里遗漏了一些东西,我会真的感谢您的任何见解。
【问题讨论】:
标签: ruby-on-rails pdf