1

在我学习 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:NilClass 的未定义方法“split”

我使用以下方法将它放到我的注释视图中:

<%= @no_of_pages %>

同时,我查看了 gem " [pdfinfo][1]" 作为替代,但是如何使用它呢?

4

2 回答 2

2

作为使用 的替代方法gem,您还可以pdf使用 linux 的内置命令获取任何详细信息。只需编写以下 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变量中的页数、文件大小等。您可以轻松获取所需的相应详细信息。我希望这有帮助!

更新

注意:为您的 pdf 文件提供正确的路径,即放置它的确切目录。就像我的情况一样:

command = `pdfinfo /home/hbiyawarwala/Documents/books/Rails-Angular-Postgres-and-Bootstrap.pdf`

第二件事是,@no_of_pages直接在您的视图中使用变量,例如

<%= @no_of_pages %>
于 2016-09-14T07:55:01.343 回答
0

简单的解决方案L使用PDFINFO gem;效果很好

于 2016-10-24T11:58:28.933 回答