使用Paperclip附加PDF – 获取文档属性(如页数)
在我的应用程序中学习RoR,我想看看如何处理附件。 得到回形针工作,并希望获得文档属性。 那么,如何从pdf文件(使用Paperclip附加)获取文档属性(PDF信息)?
一种方法是使用命令行,但如何获取文件(这里@annotation.file
– 或其他对象@document.file
)? 实际上,我需要将文件下载到临时文件夹来执行此操作并执行文件删除以进行清理。 如何在不下载的情况下获取详细信息?
所以控制器看起来像这样:
def pdf @annotation = Annotation.find(params[:id]) render layout: false command = 'pdfinfo @annotation.file' no_of_pages = command.split("\n")[-7].split(":").last.strip end
它抛出一个错误:
nil的未定义方法`split’:NilClass
我使用以下命令查看我的注释视图:
与此同时,我看了gem“ [pdfinfo][1]
”作为替代,但如何使用它?
使用gem
的替代方法,您还可以使用linux的内置命令获取任何pdf
的详细信息。 只需编写以下ruby代码即可执行,您将获得所有详细信息。 例如:
要在ruby代码中执行linux
命令,请编写以下命令:
def pdf @annotation = Annotation.find(params[:id]) command = `pdfinfo @annotation.file` @no_of_pages = command.split("\n")[-7].split(":").last.strip render layout: false end
你会得到所有的细节,如没有。 您的command
变量中的pages,file_size等。 您可以轻松获取所需的相应详细信息。 我希望这有帮助!!
UPDATE
注意:为pdf文件提供正确的路径,即放置它的确切目录。 在我的情况下:
command = `pdfinfo /home/hbiyawarwala/Documents/books/Rails-Angular-Postgres-and-Bootstrap.pdf`
第二件事是,在你的视图中直接使用变量@no_of_pages
<%= @no_of_pages %>
易解决方案L使用PDFINFOgem; 效果很好