在 IE7 中使用 Prawn 生成 Rails PDF

2023-12-02

我正在使用 Prawn 和 Prawnto 在 Ruby on Rails 应用程序(Rails 版本 2.2.2)中生成 PDF,该应用程序运行良好,可以愉快地生成 PDF 并将其发送给用户以在 Firefox 中下载。

问题出在IE7上。

我有一条路线设置如下:

map.invoice_pdf '/invoices.pdf', :controller => 'invoices', 
                :action => 'index', :format => 'pdf'

然后我有一个像这样的链接可以调用:

invoice_pdf_path(:year => params[:year], :month => params[:month], 
                 :unpaid_only => params[:unpaid_only])

我的控制器中有以下内容:

 def index
    params[:year]  = default params[:year]
    params[:month] = default params[:month]
    params[:page] ||= 1

    @invoices = Arobl.find_invoices_for_customer(current_customer.strCustomerID,
                       params)

    respond_to do |format|
      format.html{ render :action => 'index' }
      format.pdf{
        prawnto :inline => false, :filename => 
                "#{current_customer.strCustomerID}_invoice.pdf"
  end

在 FF 中,这按预期工作,当单击链接时,将使用 .pdf 格式调用显示操作,并以正确命名的 PDF 进行响应。当使用 IE7 时,它会说找不到文件或网站,并引用“invoices.pdf”而不是预期的 customer_id_invoice.pdf 文件名。

知道什么可能导致这种行为吗?

Thanks!


我也有这个问题。当我尝试在 Internet Explorer(7 或 8)上请求没有 SSL 的相同 PDF 时,它可以工作,但如果我使用 SSL 请求它,它就不起作用...

我们认为我们可能已经追踪到 IE 在下载 PDF 时所期望的标头。我还没有检查 prawnto 源代码来查看它设​​置了什么标头,但我们可能会使用一些 Rack Middleware 来注入我们需要的标头:

# add headers for PDF downloads in IE
# PDFs not downloading correctly via SSL in IE
# solution: add some headers for PDF downloads
# http://marc.info/?l=php-general&m=124301243808544&w=2
class RackAddPdfHeadersForIe
  def initialize( app )
    @app = app
  end

  def call( env )
    @status, @headers, @body = @app.call env
    add_headers if is_pdf? and is_internet_explorer?        
    [@status, @headers, @body]
  end

  def is_pdf?
    @headers['Content-Type'] =~ /pdf/
  end

  def is_internet_explorer?
    @headers['User-Agent'] =~ /MSIE ([0-9]{1,}[\.0-9]{0,})/
  end

  def add_headers
    @headers['Content-Description'] = 'File Transfer'
    @headers['Content-Transfer-Encoding'] = 'binary'
    @headers['Expires'] = '0'
    @headers['Pragma'] = 'public'
  end      
end

于是我尝试了一下,以为可以,结果发现确实还是不行。

所以我最终这样做了,无论出于什么原因,这对我有用:

class ReportsController < ApplicationController

  def payroll_summary
    respond_to do |format|
      format.pdf do 
        response.headers['Content-Disposition'] = "attachment;filename=\"#{action_name}.pdf\""
        response.headers['Content-Description'] = 'File Transfer'
        response.headers['Content-Transfer-Encoding'] = 'binary'
        response.headers['Expires'] = '0'
        response.headers['Pragma'] = 'public'
        render
      end  #format.pdf
    end #respond_to
  end #payroll_summary

end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 IE7 中使用 Prawn 生成 Rails PDF 的相关文章

  • ruby on Rails,会话过期通知

    我正在使用 ruby 1 9 3 和 Rails 3 2 我的实际会话处理如下所示 会话助手 def sign in user cookies remember token value user remember token expires
  • 从部分重定向回具有部分的同一页面后保留验证错误

    因此 我试图从我的表单中获取错误 该表单在我的 root path 中呈现为部分内容 在我尝试发布它但失败 或成功 后 我想重定向回 root path 但是 redirect to 决定不保存任何验证信息 想知道如何做到这一点 class
  • Rails:关于产量

    我在a中看到了一些代码导轨 v2 3 app In layout car general html erb 这个视图是由 cars controller 中的方法调用的 我看到了代码 var some car new Object 有两个问
  • 使用 Minitest 测试自定义验证器

    我有多个带有电子邮件验证的模型 因此 我将验证提取到自定义验证器中 我按照以下教程做到了这一点导轨指南 http guides rubyonrails org active record validations html custom va
  • IE bug:具有不透明背景色的绝对定位元素

    我有一个绝对定位的 DIV 需要捕获 onclick 事件 事实证明 在 IE7 中 DIV 似乎没有诸如单击甚至光标之类的 足迹 例如 div width 200px height 200px position absolute bord
  • Twitter Bootstrap 中下拉链接的模态

    我正在尝试从下拉菜单中的链接进行模式启动 该模式似乎已启动 网站变为灰色 但看不到 来自不在下拉列表中的常规链接的模态工作得很好 我对 jquery 进行了愚弄 但由于我是 jquery 的新手 所以没有任何结果 这是我的网站代码
  • 数据库分片和 Rails

    在 Rails 中处理分片数据库的最佳方法是什么 分片应该在应用层 活动记录层 数据库驱动层 代理层还是其他层处理 各自的优点和缺点是什么 FiveRuns 有一个名为的 gem数据结构 https github com bpot data
  • 使用 apache PDF-Box 插入 PDF 附件的缩略图

    我有一个代码可以将文件附加到 PDF 文件 PDDocument doc new PDDocument PDPage page new PDPage doc addPage page read attachment file File fi
  • kaminari ajax 分页不更新分页

    我正在使用 kaminari gem 在 Rails3 中实现分页 我一直在关注github上的这段代码https github com amatsuda kaminari example commits ajax https github
  • Ruby on Rails 3 - 为每个请求重新加载 lib 目录

    我正在为 Rails 3 应用程序创建一个新引擎 正如您所猜测的 该引擎位于我的应用程序的 lib 目录中 但是 我在开发它时遇到了一些问题 事实上 每次更改引擎中的某些内容时 我都需要重新启动服务器 有办法避免这种情况吗 我可以强制rai
  • 如何从rails控制台将数据添加到数据库

    我有一个User model gt gt u User new gt
  • 如何确保为客户端加载最新版本的 javascript 代码?

    我们的客户拥有数千名用户 他们都使用 Internet Explorer 和大量的 javascript 文件 这些文件可以增强他们对我们产品的用户体验 我遇到的问题是 每当我们更新这些脚本之一时无法知道客户端是否看到的是最新版本 我们要做
  • 在 Web 应用程序中显示最新的提交值?

    我有一些 Rails 应用程序 我使用 Git 作为版本控制系统 我使用 GitHub 或 Beanstalk 作为存储库主机 从理论上讲 我想要做的事情非常简单 以某种方式在 Web 应用程序的页脚中显示最新的提交 ID 号 哈希值 这样
  • 删除 IE9 边缘周围的 2px 灰色边框

    我正在尝试对这个网站进行编码 尝试关键字 并且我正在尝试找出如何删除这个阴影2px灰色边框延伸到 IE9 窗口的内部 至少顶部 左侧和底部 我的边距设置为零 因此所有页面元素都到达页面的最边缘 但使用 IE9 它们会停在这个灰色边框处 我没
  • 使用 PHP 的 openssl_pkcs7_sign 签署 pdf 时出错

    我正在使用 TCPDF 生成 pdf 文档并对其进行签名 TCPDF 本身只是调用 PHP 的openssl pkcs7 sign函数 在我看来 它正在调用 C 的PKCS7 sign函数基于源代码 https github com php
  • Rails 从 OrdersController 更新用户模型的属性

    这是我的代码 订单控制器类 def create order Order new params order if order purchase work GATEWAY store credit card options result wo
  • Capybara-webkit 无法处理与 bootstrap glyphicon 的链接

    我有一个链接 link to q span class glyphicon glyphicon trash span html safe feed item data confirm Are you sure toggle tooltip
  • Omniauth + Google + Faraday + 代理背后=如何设置代理?

    我的生产服务器是乌班图12 我在用着设计 OmniAuth处理 Google 身份验证 但是当 Google 将控件返回给我的应用程序时 我收到错误 网络不可达 我认为这是因为服务器位于代理后面 这是错误描述 Request URL htt
  • 带回形针、导轨的水印图像 4

    我一直在尝试按照中列出的答案向我的图像添加水印带有回形针的水印 https stackoverflow com questions 13517757 watermark with paperclip 水印 rb module Papercl
  • Capybara with Rails:如何仅查找不可见元素

    我正在 Rails 项目 Rails 5 2 0 中使用 Capybara capybara 3 1 0 进行系统测试 确保元素不可见的方法是什么 我当时用的是visible false选项 直到我发现它也匹配可见元素 例如我使用 find

随机推荐

  • JavaFX:线程“JavaFX 应用程序线程”java.lang.RuntimeException 中的异常:java.lang.reflect.InitationTargetException

    我正在开发 JavaFX 项目 遇到这样的错误 Logout Exception in thread JavaFX Application Thread java lang RuntimeException java lang reflec
  • emberjs - 如何使用路由器基础设施标记活动菜单项

    我正在尝试创建导航选项卡 取自推特引导程序 ul class nav nav tabs li class active a href Home a li li a href Profile a li li a href Messages a
  • 如何在弹性布局中拥有固定元素(如 float: right)?

    I have a flex layout with elements in it I want one of them to always stick in the top right corner When I put it out of
  • LessCSS - 带变量和减亮的 IE 渐变过滤器

    我需要在 Less CSS 中使用带有变量和变亮的 IE 渐变过滤器 这可能吗 whatever filter progid DXImageTransform Microsoft gradient startColorstr lighten
  • 哈希表中的通用列表

    我可以将数组定义为这样的通用列表 array Collections Generic List String 我可以将哈希表中的元素定义为这样的数组 hash array 但我无法将哈希表中的元素定义为通用列表 如下所示 hash arra
  • Fabricjs 1.6.3:为什么活动对象总是显示在顶部

    我的问题的良好演示 http fabricjs com hovering如果您选择任何项目 它将显示在顶部 在早期版本 1 5 0 1 6 2 中不存在此问题 抱歉英语不好 如果你不想要这种行为 你可以设置保留对象堆叠为真 检查此处的文档
  • 使用 Android Gradle 更改版本代码

    我正在尝试在我的版本中自动增加 versionCodebuild gradle 但这不起作用 然后我尝试简单地覆盖 versionCode 例如versionCode 20但它仍然没有更新 都检查过原件AndroidManifest xml
  • 指向接口/重载过程的过程指针

    我使用过程重载和接口来在 Fortran 程序中实现某种通用性 为此 我有一个包含许多过程的模块 所有过程都是重复的 以便能够更改变量类型 我还在模块的开头提供了一系列以下类型的接口 interface norm module proced
  • Geodjango 的 Beanstalk 迁移失败

    我想在 aws beanstalk 中部署 geodjango 我已经尝试过这个解决方案 以前有用过 commands 01 yum update command sudo yum y update 02 epel repo command
  • 当向视图控制器添加展开函数时,链接器命令失败,退出代码为 1

    我正在使用 Storyboard 开发一款 iPad 应用程序 在我的应用程序中 我有一个弹出窗口和一个视图控制器 如果我添加一个像这样的函数 IBAction unwindCouponPaymentToOrderdetailsView U
  • python 中的复制构造函数?

    python中有复制构造函数吗 如果不是 我会做什么来实现类似的目标 情况是 我正在使用一个库 并且我已经用额外的功能扩展了其中一个类 并且我希望能够将从库中获取的对象转换为我自己的类的实例 我想你想要复制模块 import copy x
  • 如何将词云放入grob中?

    我创建了一个简单的词云 require wordcloud words lt c affectionate ambitious anxious articulate artistic caring contented creative cy
  • 使用 BeautifulSoup 的 Python 进行网页抓取 429 错误

    首先 我不得不说我对使用 Python 进行 Web 抓取还很陌生 我正在尝试使用这些代码行来抓取数据 import requests from bs4 import BeautifulSoup baseurl https name of
  • Angular 2路由到同一路由

    I have Ride组件 并在骑行结束时Ride Summary显示 右侧的摘要有一个 开始另一次骑行 按钮 该按钮会重定向到同一组件 Ride routerLink Ride 自从Ride组件已经是我所在的组件 它没有刷新并且Ride
  • 使用 C 结构成员的连续内存

    在将其标记为重复之前 请先阅读问题 所以这可能是一个潜在的非常愚蠢的问题 但它困扰着我 我从阅读以及许多其他问题中知道 由于编译器添加的填充 C 结构中的字段不能保证是连续的 例如 根据C标准 13 在结构体对象中 非位域成员和位域所在的单
  • Javascript 在重新加载或重定向之前删除 cookie

    我需要删除一个cookie并且then进行重定向 然而 在处理重定向之前 cookie 不会被删除 问题是 如果执行重定向时 cookie 仍然存在 则重定向会被拦截并发送到预期页面以外的页面 很奇怪 我知道 说来话长 是否有可能欺骗浏览器
  • 如何使用其他Facebook帐户登录?

    我关注了本教程制作一个小应用程序来登录并打招呼 用户名 问题是 我只能使用我的帐户登录 但无法使用其他帐户登录 此问题发生在一些需要登录的示例代码 例如 HelloFacebookSample 或 Scrumptious 中 Logcat
  • 如何在Python中合并2列

    假设我使用 numpy 定义了一个 2x2 矩阵 array 1 2 2 3 现在另一个 2x1 矩阵 array 3 4 如何按列连接这两个矩阵 使其变为 array 1 2 3 2 3 4 我怎样才能删除指定列 这样它就会变成 arra
  • 使用正确的网格在 R 中绘制 netcdf

    我的目标是在世界地图上绘制硝酸盐 no3 数据 使用这些数据的正确经度和纬度 有两个 netcdf 文件 1 与数据 2 与网格信息 数据摘要信息 no3 是长度为 x y sigma 的数组 no3 df 是 x y 观测值 3 个变量
  • 在 IE7 中使用 Prawn 生成 Rails PDF

    我正在使用 Prawn 和 Prawnto 在 Ruby on Rails 应用程序 Rails 版本 2 2 2 中生成 PDF 该应用程序运行良好 可以愉快地生成 PDF 并将其发送给用户以在 Firefox 中下载 问题出在IE7上