ruby-on-rails 使用Rails活动存储时无法预览PDF?

xiozqbni  于 2022-12-01  发布在  Ruby
关注(0)|答案(3)|浏览(170)

按照Rails指南,显然PDF预览是由Rails的ActiveStorage“开箱即用”支持的。
可以预览某些非图像文件:也就是说,它们可以呈现为图像。例如,可以通过提取视频文件的第一帧来预览该文件。Active Storage支持预览视频和PDF文档。
它给出的代码示例如下:

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

我用这个代码上传了一个pdf文件,然后我得到了这个错误:

ActiveStorage::UnpreviewableError

也许我遗漏了什么?

更新

好的,我想我知道问题出在哪里了。我应该在我的机器或“服务器”上安装像muPDF这样的第三方库才能正常工作。但是运行brew install muPDF失败了。我会继续研究的。

lb3vh1jj

lb3vh1jj1#

我可能有点晚了,但对于那些谁仍然可能寻找一个答案,安装宝石poppler为我工作。
在宝石文件中

gem 'poppler'

然后

bundle install

现在可以预览了!你也可以使用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>
drkbr07n

drkbr07n2#

我试图使我的PDF预览工作。
我已经确认了@ferne97在评论中提到的指令对我的环境有效。即:

  • brew cask install xquartz
  • brew install muPDF

(显然,我用的是MacOS)。

ncgqoxb0

ncgqoxb03#

对我来说,在AlmaLinux 8和Rails 7上,将Poppler gem安装到应用程序并没有帮助。
您需要在系统级别安装popplerpoppler-utils。对于Red Hat系列,您可以运行yum install poppler poppler-utils
您可以在Rails控制台中测试pdf预览。

attachment = page.uploads.first # or whatever you have
attachment.blob.content_type    # should be "application/pdf"
attachment.representable?       # true, if pdf previews work

相关问题