如何解决通过Rmagick错误将PDF / DOC / DOX转换为PNG时:没有这样的文件或目录@ error / blob.c / OpenBlob / 2712-Ruby on Rails
我能够使用本地系统中Ruby on Rails中的Rmagick gem将PDF / DOC / DOCX转换为PNG。
我正在遵循的算法:
1。。从给定的网址中提取PDF / DOC / DOCX。
2。。将该PDF / DOC / DOCX文件临时下载到本地项目文件夹中。
download_path_of_document = "#{Rails.root}/path/to/my/local/download_folder"
open("https://my-url.com") do |doc|
File.open(File.join(download_path_of_document,".#{extension according to file doc/docx/pdf}"),"wb") do |file|
file.write(doc.read)
end
end
3。,并提及该本地下载文件的路径,从而将该文件通过 RMagick 转换器代码传递。
4。。成功将其转换为PNG。
my_converted_pngs = Magick::ImageList.new(File.join(download_path_of_document,".#{extension according to file doc/docx/pdf}"))
5。。删除在步骤2中下载的下载文件。
此方法在我的本地系统(环境)中绝对可以正常工作。
但是我的登台服务器中发生了一些奇怪的事情。 我收到类似以下错误:无法打开图像`/ tmp / magick-14238gTk5-CaYAECT':没有这样的文件或目录@ error / blob.c / OpenBlob / 2712 。奇怪的是,只有在第3步中传递 DOC 和 DOCX 文件时,我才会收到此错误;如果是 PDF ,则可以正常工作。
Kindy,请帮忙。 (如果对问题有任何疑问,请在评论中多次提问)
红宝石-2.2.2 导轨-4.2.2 宝石-rmagick
解决方法
嘿,我不知道这是否有帮助,但是我遇到了类似的问题,它将返回相同的错误。对于我的用例,我要求一个页面同时执行2个过程。第一个过程是获取图像,第二个过程是生成要获取的图像。
我发现,由于Rails Puma服务器是单线程的,因此我的计算机将无法同时执行这两个过程。
我所做的是我向Puma添加了另一个并发。
#puma.rb
#uncomment this line and add a concurrency of 2
workers ENV.fetch("WEB_CONCURRENCY") { 2 }
现在杀死Rails服务器。
下次运行rails服务器时,应该可以看到不同的内容。流程工作者应该增加到2名。
如果没有看到此更改,请尝试输入bundle exec puma -C config/puma.rb
希望这对您有所帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。