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不过对我来说跑步失败了。我会继续研究。
我对你来说可能有点晚了,但对于那些仍然可能寻找答案的人来说,安装 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)