使用 PDFkit gem 生成 pdf 挂在 Rails 4 上

2023-11-21

我可以通过以下方式下载 pdf 文件:

curl google.com | wkhtmltopdf - test.pdf

所以这意味着wkhtmlpdf安装成功。

但是,当我尝试通过访问生成 pdf 文件时http://localhost:3000/contacts/1.pdf它挂了。状态栏中显示:Waiting for localhost...

Rails 服务器输出:

Started GET "/contacts/1.pdf" for 127.0.0.1 at 2013-07-28 21:45:06 +0900
  ActiveRecord::SchemaMigration Load (0.1ms)  SELECT "schema_migrations".* FROM "schema_migrations"
Processing by ContactsController#show as HTML
  Parameters: {"id"=>"1"}
  Contact Load (0.3ms)  SELECT "contacts".* FROM "contacts" WHERE "contacts"."id" = ? LIMIT 1  [["id", "1"]]
  Rendered contacts/show.html.erb within layouts/application (1.4ms)
Completed 200 OK in 99ms (Views: 57.0ms | ActiveRecord: 0.7ms)

Gemfile:

gem 'pdfkit'

应用程序.rb:

config.middleware.use "PDFKit::Middleware"

根据PDFKit 轨道广播这应该足以生成 pdf 文件,只需添加.pdf ...


UPDATE:

显示.html.erb:

<p id="notice"><%= notice %></p>

<p>
  <strong>Name:</strong>
  <%= @contact.name %>
</p>

<p>
  <strong>Age:</strong>
  <%= @contact.age %>
</p>

<%= link_to 'Edit', edit_contact_path(@contact) %> |
<%= link_to 'Back', contacts_path %>

布局/application.html.erb:

<!DOCTYPE html>
<html>
<head>
  <title>Pdftest</title>
  <%= stylesheet_link_tag    "application", media: "all", "data-turbolinks-track" => true %>
  <%= javascript_include_tag "application", "data-turbolinks-track" => true %>
  <%= csrf_meta_tags %>
</head>
<body>

<%= yield %>

</body>
</html>

更新2:

感谢@Arman H 帮助我弄清楚我必须指定资产的绝对路径而不是相对路径。当我删除以下行时,我能够生成 PDF 文件:

<%= stylesheet_link_tag    "application", media: "all", "data-turbolinks-track" => true %>
<%= javascript_include_tag "application", "data-turbolinks-track" => true %>

现在,我不知道如何用绝对路径。看来这个post是我所需要的,但我仍然无法弄清楚这对于我的情况来说会是什么样子。


该问题是由于stylesheet_link_tag and javascript_include_tag使用相对 URL,这通常会导致wkhtmltopdf从同一服务器加载资源时挂起wkhtmltopdf正在运行。

Using 绝对网址资产解决了问题。

Set asset_host在 Rails 的配置中,这也会影响stylesheet_link_tag and javascript_include_tag:

# Modify asset host config setting in `config/application.rb`
# Or create a new initializer: `config/initializers/wkhtmltopdf.rb`
config.action_controller.asset_host = "http://mysite.com"

# Or you can have different hosts for development (local) and production (CDN):
# In `config/environments/development.rb`
config.action_controller.asset_host = "http://localhost"
# In `config/environments/production.rb`
config.action_controller.asset_host = "http://d111111abcdef8.cloudfront.net"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 PDFkit gem 生成 pdf 挂在 Rails 4 上 的相关文章

  • 我可以在 render.js 上执行的视图中使用 CoffeeScript 吗?

    我需要做什么才能在 Rails JS 视图中使用 CoffeeScript 例如 def index format js render layout gt false end 我需要做什么才能让 Rails 使用index js coffe
  • 在 SCSS 部分中使用 Rails 3.1 资源路径

    我有以下设置 app assets stylesheets application css scss require self require fancybox COLORS MIXINS FONT STACKS IMPORTS impor
  • 将超链接添加到 PDF 文档中

    我目前正在扩展我们的自定义 PDF 编写器 以便能够编写网站链接 但是 我遇到了一个问题 因为我无法找到如何将链接放入 PDF 的任何地方 这是打印文本的内容 BT 70 50 TD F1 12 Tf visit my website Tj
  • 缓存日期早于 1900 年的模型时出现编组错误

    我有一些具有 published on 属性的活动记录模型 当我尝试缓存 Publication on 日期早于 1900 年 1 月 1 日的模型时 出现如下错误 Marshalling error for key popular pro
  • render_views 在 rspec 中做什么?

    我对 rspec 很陌生 对 Rails 也很陌生 在为控制器编写测试用例时 我注意到render views经常使用 这是做什么的 如果我不调用它会发生什么 它呈现控制器规范中的视图 如果不放置 render views 视图将不会渲染
  • Rails 没有选择 en.yml 中的自定义日期和时间格式

    我对 Rails 中的 I18N 不太熟悉 所以请耐心等待 尝试设置自定义日期和时间格式 config locales en yml en date formats long dateweek A B d Y time formats ve
  • 更改 Rails 中的默认错误消息

    我们的客户决定 他们希望整个应用程序中所有空白 AR 错误消息从 不能为空 更改为 必须完成 Rails 最简单的方法是什么 Use config locales en yml 具体来说 将以下内容放入该文件中 en activerecor
  • Rails 中的命名空间模型生成 NameError:未初始化的常量

    我有一个这样的文件夹结构 app models bar foo rb connection rb foo rb connection rb是一个用于连接到另一个数据库的 抽象类 所以 class Bar Connection lt Acti
  • 在 Android 中使用 PhoneGap 打开 PDF

    我需要打开一个位于 url 中的 PDF 文件 我需要用 PDF 查看器打开它 有可能的 谢谢大家 此致 我建议使用儿童浏览器插件 https build phonegap com blog childbrowser plugin并使用 G
  • 如何使用python从文件夹中的pdf中提取文本并将其保存在数据框中?

    我有很多文件夹 每个文件夹都有几个 pdf 文件 也有其他文件类型 如 xlsx 或 doc 我的目标是提取每个文件夹的pdf文本并创建一个数据框 其中每条记录都是 文件夹名称 每列以字符串形式表示该文件夹中每个pdf文件的文本内容 我设法
  • 将 Rails 应用程序从 3.2.6 升级到 3.2.8

    我有一个使用 Rails 创建的 Rails 应用程序3 2 6 现在3 2 8已经发布了 这就是我更新应用程序所需要做的一切吗 Edit Gemfile 改变线路gem rails 3 2 6 to gem rails 3 2 8 Run
  • docker环境下日志不保存到文件

    在我的生产环境中production rb 我已配置我的日志将保存到文件中 config logger Logger new log production log 当我在本地运行时 使用命令行启动服务器rails s e productio
  • 禁用右键单击嵌入元素内的 pdf

    我有一个embed我在其中提供路径的元素pdf文件 我想阻止它被下载 但是当我右键单击该 t 时 我会看到保存和打印 pdf 的选项 我想阻止这些选项 I tried 但它禁用除 PDF 之外的整个页面上的右键单击 一种不受 CORS 或
  • 如何通过迁移向现有索引添加“唯一”约束

    我怎样才能添加unique true对 Rails 数据库中已有索引的约束 我尝试通过以下方式迁移 def change add index editabilities user id list id unique true end 但迁移
  • 前面的冒号:YAML 语法

    我目前在项目中使用 Sidekiq 并且有以下 YAML 配置文件 concurrency 5 pidfile tmp pids sidekiq pid logfile log sidekiq log staging concurrency
  • 表单提交按钮仅在重新加载后才有效

    我有一个构建表的索引页 我试图允许用户编辑表中的行 我试图以最基本的方式做到这一点 没有 javascript ajax 等 除非 Rails 提供了它 我的表在索引方法中显示良好 并且有一个表单作为表中的最后一行 可用于添加新行 新的形式
  • Ruby Time.parse 给我超出范围的错误

    我正在使用 Time parse 从字符串创建 Time 对象 因为某些原因 Time parse 05 14 2009 19 00 导致参数超出范围错误 而 Time parse 05 07 2009 19 00 does not 有任何
  • 无法从 PDFA1-a 格式文档中提取图像

    我正在使用以下代码从 PDFA1 a 格式的 pdf 中提取图像 但我无法获取图像 List
  • 在社交媒体 Ruby On Rails 上共享链接时的小预览

    我正在开发一个前端位于的网站angularjs和后端ROR Same ROR API用于android app还 现在我这里有一个情况 我需要在社交媒体上分享我的网站帖子 例如facebook twitter and google plus
  • Rails 3.1 中的嵌套表单

    我在嵌套表单方面遇到问题 rails 3 1 在应该渲染 fields for 块时不渲染 fields for 块 例如 在编辑现有记录时 由于我对自己的英语不够自信 我制作了一个小示例应用程序 新行动 def new manga Man

随机推荐