无法使用 Rails 活动存储预览 PDF?

Ang*_*cia 1 ruby-on-rails rails-activestorage

按照 Rails 指南,很明显,rails 的 ActiveStorage 支持“开箱即用”的 PDF 预览。

一些非图像文件可以预览:也就是说,它们可以作为图像呈现。例如,可以通过提取其第一帧来预览视频文件。开箱即用,Active Storage 支持预览视频和 PDF 文档。

它给出的代码示例是这样的:

<ul>
  <% @message.files.each do |file| %>
    <li>
      <%= image_tag file.preview(resize_to_limit: [100, 100]) %>
    </li>
  <% end %>
</ul>
Run Code Online (Sandbox Code Playgroud)

我使用此代码上传了 pdf,但出现此错误:

ActiveStorage::UnpreviewableError
Run Code Online (Sandbox Code Playgroud)

也许我错过了什么?

更新

好的,我想我知道问题出在哪里了。我应该在我的机器或“服务器”上安装像 muPDF 这样的第三方库才能工作。brew install muPDF不过对我来说跑步失败了。我会继续研究。

GmS*_*GmS 5

我对你来说可能有点晚了,但对于那些仍然可能寻找答案的人来说,安装 gem poppler对我有用

在 Gemfile 中

gem 'poppler' 
Run Code Online (Sandbox Code Playgroud)

然后

bundle install
Run Code Online (Sandbox Code Playgroud)

现在预览有效!你也可以使用file.previewable?检查文件是否可以预览。用上面的例子:

<ul>
  <% @message.files.each do |file| %>
    <%= if file.previewable? %>
      <li>
        <%= image_tag file.preview(resize_to_limit: [100, 100]) %>
      </li>
    <% end %>
  <% end %>
</ul>
Run Code Online (Sandbox Code Playgroud)