`

rails 导出 pdf

    博客分类:
  • RUBY
阅读更多
方案一:基于web页面的打印生成pdf

在linux上先安装wkhtmltopdf这个软件。再在需要调用的地方写命令行。

system("wkhtmltopdf http://www.baidu.com /fullcalendarBranch/public/my_web_site.pdf")


方案二:生成pdf工具
gem 'prawn'
gem 'prawn-table' 


class OrderPdf < Prawn::Document

  extend ActiveSupport::Autoload
  autoload :PrawnTable

	def initialize(order)
		super()
    font_families["msyh"] = {
      :normal => { :file => "#{Rails.root}/public/pdf/gkai00mp.ttf" },
      :bold => { :file => "#{Rails.root}/public/pdf/gkai00mp.ttf" }
    }
		@order = order
#		font "Times-Roman", :size => 13 do
    font "msyh", :size => 13 do
			logo
			company
			orders
			order_item
		end
	end

	def logo
    bounding_box [0, bounds.top], :width  => bounds.width do
      image "#{Rails.root}/app/assets/images/coa_logo1.png", :width => 190, :height =>90
    end
  end

  def company
		bounding_box [250, bounds.top - 30], :width  => bounds.width do
      text "COMMERCIAL INVOICE", :size => 24, :styles => [:bold, :italic]
      text "#{@order.contact.company.name}"
      move_down 8
      text "Date: #{@order.created_at.format_date(:date)}"
  	end
  end

  def orders
  	bounding_box [0, bounds.top - 120], :width  => bounds.width do
      text "To"
      move_down 8
      text "#{@order.address.contact_person}"
      move_down 8
      text "Phone: #{@order.address.tel}"
      move_down 8
      text "Email: #{@order.address.email}"
      move_down 8
      text "Address: #{@order.address.address}"
    end
    bounding_box [250, bounds.top - 120], :width  => bounds.width do
      text "Invoice: #{@order&.invoice}"
      move_down 8
      text "Order ID: #{@order.uuid}"
      move_down 8
      text "Your PO#: #{@order.po}"
    end
  end

  def order_item
  	bounding_box [0, bounds.top - 290], :width  => bounds.width do
     stroke_horizontal_rule
     items = Array.new() { Array.new() }
     items[0] = ["Catalog No.", "Product", "CAS No.", "Payment Due", "Subtotal"]
     @order.order_items.each_with_index do |item, index|
     		items[index + 1] = [item.chemical.catalog_no, item.chemical.name, item.chemical.cas, item&.overdue_date, "$" + (format "%0.2f", item.amount).to_s ]
     end
     th_style = {
        align: :center,
        valign: :center,
        size: 14,
        font_style: :bold,
        height: 30,
        background_color: 'eeeeee'
     }
     td_style = {
        align: :center,
        valign: :center,
        size: 12
     }
     options = {
        position: :center,
        width: bounds.width
     }

     table(items, options) do
        row(0).style th_style
        row(1..-1).style td_style
     end
     move_down 8
     text "* According to and weight of the above products, a total of $#{@order.handling_fee} package fee will be charged", :size => 10
     move_down 20
     text "Shipping: $#{@order.shipping_fee}", :size => 16, :styles => [:bold, :italic], :align => :right
     move_down 4
     text "Total: $#{@order.amount}", :size => 16, :styles => [:bold, :italic], :align => :right
     move_down 10
     text "Payment Terms: #{Order.enum_i18n(:payment_method, @order.payment_method)}", :size => 16, :styles => [:bold, :italic], :align => :left
     move_down 10
     text "Overdue payment may defer new quotation and order by iChemical.", :size => 12, :styles => [:bold, :italic], :align => :left
    end
  end

end


    pdf = OrderPdf.new(@order)
    send_data pdf.render, filename: 'iChemical Invoice-' << @order.uuid << '.pdf', type: "application/pdf", disposition: "attachment"
分享到:
评论

相关推荐

    java基础之rails命令大全.pdf

    ### Java基础之Rails命令大全知识点解析 #### 一、Rails 命令概述 Rails 是一个用于 Web 开发的框架,它基于 Ruby 语言。Rails 遵循 MVC(Model-View-Controller)架构模式,使得 Web 应用程序的开发更加高效、简洁...

    rails-exporter-源码.rar

    数据导出是 web 应用中常见的需求,例如生成 CSV、Excel 或 PDF 文件供用户下载。Exporter 类库通常包含一系列方法,用于格式化数据、生成文件并提供下载链接。Rails Exporter 可能会利用 ActiveRecord 查询数据,并...

    Ruby-Yomu从各种文档读文本和元数据docdocxpagesodtrtfpdf

    - **.pages**:这是Apple的Pages软件创建的文档格式,Yomu可能需要将.pages文件导出为更通用的格式(如.doc或.pdf)再进行处理。 - **.odt**:OpenDocument Text,是开放源码的文档格式,通常由LibreOffice和...

    技术选择-导出.pdf

    ### 技术选择指南:Ruby、Go、Java、Rails、Vue、React #### 一、技术选型概览 在进行技术选型时,需要综合考量项目的特点、团队的技术背景等多个方面。本篇将从以下几个角度对Ruby、Go、Java、Rails、Vue、React...

    rails-exporter:RoR 上 FusionCharts 的导出服务器

    Fusioncharts 导出器处理程序 Ruby on Rails 的 FusionCharts 导出处理程序。安装将此行添加到应用程序的 Gemfile 中: gem 'fusioncharts_exporter'然后执行: $ bundle介绍它是什么? FusionCharts Suite XT 使用 ...

    export-handlers(fusioncharts离线导出服务).rar

    FusionCharts的离线导出服务允许用户在本地环境中,无需互联网连接,就能将图表导出为不同的格式,如JPEG、PNG等图片格式以及CSV、PDF、Excel等文件格式。这样不仅方便了数据的保存和分发,还能确保数据的安全性,...

    modular

    2. **导出模块**: 在编译模块时,需要设置模块的输出路径,生成SWF文件。 3. **导入模块**: 在主应用程序中,通过`&lt;mx:ModuleLoader&gt;`组件来引用和加载模块。可以指定模块的URL,或者在本地文件系统中引用模块SWF。...

    Ruby-Shrimp一个基于phantomjs的pdf渲染器

    在实际应用中,Ruby-Shrimp可以与其他Ruby框架,如Rails或Sinatra结合使用,为Web应用程序提供PDF导出功能。例如,在Rails中,你可以在控制器中创建一个动作,使用Ruby-Shrimp生成PDF,然后将其作为HTTP响应返回给...

    redmine260

    项目管理工具Redmine: 这是基于Ruby+Rails框架开发的一套跨平台项目管理系统, 支持多种数据库,除了有基本的项目管理功能外,还有不少自己独特的功能,例如提供wiki、新闻台、时间跟踪、feed聚合、导出pdf等待,还...

    Web开发敏捷之道第三版(中文版).pdf

    - **生成XML**:为导出数据或与其他系统集成提供XML格式的数据输出。 - **扫尾工作**:完成项目的所有收尾工作,包括文档编写、测试等。 #### 第13章:任务I: 国际化 - **迭代I1: 启用翻译**:支持多语言界面,...

    RubyonRails九日学习计划

    参考资料《Ruby on Rails 实践.pdf》。 2. 搭建ruby on rails 开发环境并熟悉开发环境。用到的软件在《软件工具》目录。 3. 给学生展示《Ruby on Rails 实践.pdf》中的示例快速建立简单应用。 4. 指导学生...

    ticketmule_react:在后端使用Rails 6并在前端使用ReactJS的Ticketmule

    特征与现代Web浏览器兼容的简洁界面向票证添加评论和文件附件通过电子邮件订阅票证更新(警报) 自动向指定为票证所有者的用户发送电子邮件从仪表板查看最近的故障单活动和时间线统计信息以PDF格式导出票证没有复杂...

    Redmine使用说明文档.

    它支持多种数据库,除了和 DotProject 的功能大致相当外,还有不少自己独特的功能,例如提供 wiki、新闻台、时间跟踪、feed 聚合、导出 pdf 等待,还可以集成其他版本管理系统和 BUG 跟踪系统,例如 SVN、CVS、TD ...

    基于ubuntu18.4的redmine的插件安装教程

    但如果你发现该功能缺失,可能需要确保Redmine的PDF渲染插件已启用,并且系统中安装了支持PDF预览的软件,如Poppler或PDF.js。 在安装和配置这些插件时,需要注意的是,每次安装新的插件后,都需要执行数据库迁移并...

    FusionCharts产品手册.pdf

    - **智能报表**:具备工具提示、滚动、缩放等功能,支持导出为图像或CSV格式,以及链接图表功能。 - **JavaScript API**:提供强大的JavaScript API,便于与AJAX应用和JavaScript框架集成。 - **源代码访问**:提供...

    New Riders -- The Zope Book.pdf

    文中提及了Zope的替代品,但是未提供具体信息,通常替代品可能包括其他Web应用开发框架如Django、Rails或商业产品如WebSphere。 #### Zope社区 Zope拥有活跃的开发者和用户社区,提供支持、分享经验和贡献代码。 #...

    open-source-billing:开源计费是一种创建,发送发票和在线接收付款的超级简单方法-Open source

    将发票导出为PDF 创建估算并将其发送给您的客户 将估算值转换为发票 将估算值导出为PDF 接收已发送发票的付款 部分付款跟踪 通过贝宝和信用卡接收付款 列表页面过滤器 使用弹性搜索的全文搜索功能 运行项目的时间...

    billing

    将发票导出为PDF 创建估算并将其发送给您的客户 将估算值转换为发票 将估算值导出为PDF 接收已发送发票的付款 部分付款跟踪 通过贝宝和信用卡接收付款 列表页面过滤器 使用弹性搜索的全文搜索功能 运行项目的时间...

    java开源包5

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解...可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...

Global site tag (gtag.js) - Google Analytics