介绍
你好!我的名字是荣查本。
这次在Ruby on Rails中实现PDF转换的时候,用到了一个叫Prawn的gem,所以总结了一下。
您可以通过阅读本文创建フォームに名前を入力するとPDF化された印鑑を出力するアプリ
。
即使是我,一个初学者也可以做到,所以实现方法很简单。
你经常在工作中使用它吗?我认为这是一种技术,所以如果你能参考它我会很高兴。
您还可以使用 PDF 转换技术创建如下应用程序
起义期限
Github
它是一个应用程序,可让您轻松地将宣布叛乱期的通知转换为 PDF。
如果您可以使用它,我会很高兴。
文章分为两部分。前半部分是PDF输出,后半部分解释了如何使用一个叫做Prawn的gem。
当您在表格②中输入名称时,让我们制作一个输出PDF图章的应用程序(Prawn自定义的PDF文件)
看完这篇文章你能做什么
输入
用户输入姓名
输出
印章将转换为PDF并输出
环境
导轨 | 6.1.5 |
---|---|
红宝石 | 3.1.2 |
实施流程
- 宝石介绍
- 路由
- 型号
- 为 PDF 创建类
- 控制器
- 查看
- 自定义 PDF
安装宝石
将安装虾的 gem 添加到 Gemfile。
prawn-table 是用于绘制表格的宝石。宝石文件gem 'prawn' gem 'prawn-table'
安装。
终端$ bundle install
路由
PDF 显示屏不需要路由。
路线.rbRails.application.routes.draw do root 'users#new' resources :users, only: %i[new create] end
模型
由于这次我们没有使用数据库,我们将包含
ActiveModel::Model
来创建一个不适用于数据库的模型。用户.rbclass User include ActiveModel::Model attr_accessor :name # 名前の文字数を2文字に指定 validates :name, length: { is: 2 } end
为 PDF 创建类
创建用于创建 PDF 内容的专用类。
在 Prawn 中,可以将 PDF 内容直接倒入控制器中,但是这样会降低可读性和可维护性,因此建议创建一个专用的类。终端$ mkdir app/pdfs $ touch app/pdfs/stamp_pdf.rb # stamp_pdf.rbというファイル名で作成、model名はStampPdfとなる
为 PDF 创建创建模型。
继承自 Prawn::Document。app/pdf/stamp_pdf.rbclass StampPdf < Prawn::Document # userにモデルなどのデータを渡します def initialize(user) # superで初期設定を指定 super(page_size: 'A4') # 新規PDF作成 # フォントのパスを指定 font "app/assets/fonts/SourceHanSans-Bold.ttc" # 名前の出力 text user.name end end
Prown 默认不支持日文,所以准备一个日文字体。
日文字体从这里你可以下载它。下载的字体资产/字体把它放进去
控制器
实现输出 PDF 的实现。
用户控制器.rbclass UsersController < ApplicationController def new @user = User.new end def create user = User.new(user_params) stamp_pdf = StampPdf.new(user).render # PDF出力に必要なオプション send_data stamp_pdf, filename: 'stamp_pdf.pdf', type: 'application/pdf', disposition: 'inline' #PDFをブラウザ上に出力 外すとダウンロード end private def user_params params.require(:user).permit(:name) end end
查看(表单输入屏幕)
实现表单输入屏幕。
新的.html.erb<%= form_with model: @user, url: users_path, local: true do |f| %> <%= f.text_field :name %> <%= f.submit 'PDF作成' %> <% end %>
确认
在表格中输入您的姓名,然后创建 PDF当你按下按钮时,
显示成这样就OK了到下半场
参考
- 使用 Rails Prawn 创建 PDF
- [Rails] 简述如何实现可以实现PDF输出的gem“Prawn”
原创声明:本文系作者授权爱码网发表,未经许可,不得转载;
原文地址:https://www.likecs.com/show-308630190.html