
在 rails 开发中,将 pdf 文件呈现在浏览器中有两种主要方式:一种是作为文件下载或直接在浏览器中打开(通过 send_file 等方法),另一种是将其嵌入到现有的 html 页面中,作为页面内容的一部分。本文主要关注后者,即如何在 html 视图中无缝地嵌入 pdf。
最直接且推荐的方法是利用标准的 HTML <embed> 标签。这个标签允许在 HTML 文档中嵌入外部内容,包括 PDF 文件。
<embed> 标签需要指定 src 属性来指向 PDF 文件的路径,以及 width 和 height 来定义嵌入区域的尺寸,同时 type 属性应设置为 application/pdf。
<embed src="http://example.com/the.pdf" width="500" height="375" type="application/pdf">
在 Rails 应用中,PDF 文件的路径管理是关键。根据文件存放位置和是否使用资产管道,有不同的处理方式。
如果您的 PDF 文件存放在 Rails 资产管道(Asset Pipeline)管理的目录中(例如 app/assets/files/),那么使用 asset_path 辅助方法是最佳实践。
Rails 的资产管道在生产环境中会对静态文件进行预编译,这通常包括文件名哈希处理(例如 menulq2.pdf 可能变为 menulq2-60aa4fdc5cea14baf5400fba1abf4f2a46a5166bad4772b1effe341570f07de9.pdf)。直接硬编码文件名将导致链接失效。asset_path 辅助方法会自动处理这些变化,确保链接始终指向正确的文件,而开发者只需提供原始文件名。
假设您的 PDF 文件位于 app/assets/files/menulq2.pdf:
<!-- app/views/your_controller/your_action.html.erb -->
<div class="pdf-container">
<embed src="<%= asset_path('menulq2.pdf') %>"
width="100%"
height="600px"
type="application/pdf">
</div>注意事项:
在某些特定场景下,如果您的 PDF 文件不通过资产管道处理,或者您希望直接从公共目录提供文件,可以直接硬编码文件路径。但这需要额外的服务器配置。
为了让 Rails 服务器能够直接提供 public 目录下的静态文件,您需要在对应的环境配置文件(例如 config/environments/development.rb 或 config/environments/production.rb)中启用静态文件服务。
对于 Rails 4.x 版本:
config.serve_static_files = true
对于 Rails 5.x 及更高版本:
config.public_file_server.enabled = true
假设您的 PDF 文件位于 public/files/menulq2.pdf:
<!-- app/views/your_controller/your_action.html.erb -->
<div class="pdf-container">
<embed src="/files/menulq2.pdf"
width="100%"
height="600px"
type="application/pdf">
</div>注意事项:
通过上述方法,您可以在 Ruby on Rails 应用程序中灵活且专业地嵌入 PDF 文件,提升用户体验和内容呈现的丰富性。
以上就是在 Ruby on Rails 应用中优雅地嵌入 PDF 文件的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号