让我们制作一个应用程序,当您在表格①中输入名称时输出 PDF 戳记(使用 Ruby on Rails 创建 PDF 文件)

   2023-03-08 学习力0
核心提示:介绍你好!我的名字是荣查本。这次在Ruby on Rails中实现PDF转换的时候,用到了一个叫Prawn的gem,所以总结了一下。您可以通过阅读本文创建フォームに名前を入力するとPDF化された印鑑を出力するアプリ。即使是我,一个初学者也可以做到,所以实现方法很简单

介绍

你好!我的名字是荣查本。
这次在Ruby on Rails中实现PDF转换的时候,用到了一个叫Prawn的gem,所以总结了一下。
您可以通过阅读本文创建フォームに名前を入力するとPDF化された印鑑を出力するアプリ
即使是我,一个初学者也可以做到,所以实现方法很简单。
你经常在工作中使用它吗?我认为这是一种技术,所以如果你能参考它我会很高兴。

您还可以使用 PDF 转换技术创建如下应用程序
起义期限
Github
它是一个应用程序,可让您轻松地将宣布叛乱期的通知转换为 PDF。
如果您可以使用它,我会很高兴。

文章分为两部分。前半部分是PDF输出,后半部分解释了如何使用一个叫做Prawn的gem。

当您在表格②中输入名称时,让我们制作一个输出PDF图章的应用程序(Prawn自定义的PDF文件)

看完这篇文章你能做什么

输入

用户输入姓名

フォームに名前を入力するとPDF化された印鑑を出力するアプリを作ろう①(Ruby on RailsでPDFファイルを作成)

输出

印章将转换为PDF并输出

フォームに名前を入力するとPDF化された印鑑を出力するアプリを作ろう①(Ruby on RailsでPDFファイルを作成)

环境

导轨 6.1.5
红宝石 3.1.2

实施流程

  1. 宝石介绍
  2. 路由
  3. 型号
  4. 为 PDF 创建类
  5. 控制器
  6. 查看
  7. 自定义 PDF

    安装宝石

    将安装虾的 gem 添加到 Gemfile。
    prawn-table 是用于绘制表格的宝石。

    宝石文件
    gem 'prawn'
    gem 'prawn-table'
    

    安装。

    终端
    $ bundle install
    

    路由

    PDF 显示屏不需要路由。

    路线.rb
    Rails.application.routes.draw do
      root 'users#new'
      resources :users, only: %i[new create]
    end
    

    模型

    由于这次我们没有使用数据库,我们将包含ActiveModel::Model 来创建一个不适用于数据库的模型。

    用户.rb
    class 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.rb
    class 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 的实现。

    用户控制器.rb
    class 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了

    フォームに名前を入力するとPDF化された印鑑を出力するアプリを作ろう①(Ruby on RailsでPDFファイルを作成)

    到下半场

    参考


原创声明:本文系作者授权爱码网发表,未经许可,不得转载;

原文地址:https://www.likecs.com/show-308630190.html

 
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • [ruby on rails] 跟我学之(6)显示指定数据
    根据《[ruby on rails] 跟我学之路由映射》,我们知道,可以访问 GET    /posts/:id(.:format) 来显示具体的对象。 修改 app/controllers/posts_controller.rb的show这个action。这里有个难题,如果获取url里面的参数?可以通过params内置变量进行访问
    03-16
  • [ruby on rails] 跟我学之(10)数据输入验证
    这里简单加上几个验证,非空,最小长度,唯一修改app/models/post.rb文件,如下:class PostActiveRecord::Base#attr_accessible :title, :contentvalidates :title, :context, :presence = truevalidates :title, :length = { :minimum =2}validates :title,
    03-16
  • 我尝试使用 Ruby 和 mittsu 库制作 3D 战斗动作游戏
    我尝试使用 Ruby 和 mittsu 库制作 3D 战斗动作
    概述这篇文章是关于我偶然发现的 hitbox 的回忆录。2022 夏季鲁比训练营创造了这个游戏。我的游戏仓库这里是。我们作为一个团队开发,有 4 名成员第一次见面,并第一次使用 Git 和 Github 进行开发。使用的技术是Ruby,三通图书馆是。我主要负责碰撞检测,所
    03-16
  • 我只是想在我的 Mac 上将 Ruby 和 Rails 更新到终端中的最新版本。 .
    我只是想在我的 Mac 上将 Ruby 和 Rails 更新到
    介绍自从我尝试创建一个简单的应用程序以来已经有很长时间了,并且我尝试在创建它之前将 Ruby 和 Rails 更新到最新版本,但是我意外卡住了,所以我将它作为备忘录留下。作为版本升级1. 更新 Homebrew 和 rbenv2. 红宝石更新3. Rails 更新这就是它的感觉。让我
    03-16
  • ruby写爬虫 ruby python
    ruby写爬虫 ruby python
    http://www.javaeye.com/topic/545160爬虫性能比较http://www.rubyrailways.com/data-extraction-for-web-20-screen-scraping-in-rubyrails/srcapihttp://huacnlee.com/blog/ruby-scrapi-collect-koubei  2009年4月22日 星期三用ruby写的一个网络爬虫程序前
    03-08
  • 一个关于创建一个可以用 Ruby 做 UMAP 的 gem 的故事
    一个关于创建一个可以用 Ruby 做 UMAP 的 gem
    介绍统一流形逼近和投影 (UMAP) 是一种通过降维的可视化方法,通常与 t-SNE 一起使用。用 Ruby 语言执行机器学习时,瘤胃我认为有很多情况下你使用 gem 调用。瘤胃有t-SNE但不是UMAP。这一次,它是一个 C++ 库乌马普的红宝石绑定我创造了它,所以我会在我忘记
    03-08
  • [脚本_Ruby]Windows安装配置Ruby On Rails
    感觉Java学的差不多了,想接触下Ruby On Rails,看看它比Java WEB高效到哪里了,在Ubuntu12.10上弄了两天总是报错提示没有指向的文件sqlite3,不管怎么安装sqlite3都不行,到最后没办法只有跑到WIN7平台下试试,以下就是我搭建Ruby On Rails的过程:    
    02-10
  • Prawn:Ruby生成PDF更简捷的选择
    在InfoQ上看到《Prawn:使用Ruby生成PDF更简捷》,其说到的Prawn可以更加快捷的在Ruby中生成PDF文件。因为之前使用过很多版本的PDF生成类库都不尽如人意,有的太复杂,有的太慢,于是对这个做了测试。1、安装安装很简单,直接使用gem install prawn即可安装完
    02-10
  • Ruby On Rails:InstanRails
    参考数据:对于Ruby On Rails 不是粉清楚的朋友可以参考以下的连结信息,该连结网站都提供不错的Ruby On Rails 信息。Ruby: 一个纯OO的脚本语言..Ruby on Rails: 快速建置Web的MVC架构的Framework说明:整合环境: Instant Rails 是在Windows环境中,整合了Ruby,
    02-10
  • 进入Ruby on Rails世界
    一、ruby和rails简介  ruby是一种面向对象的动态脚本语言。它的语法很灵活,而且提供了丰富的类库。因此,用ruby编写程序的效率是非常高的。  虽然ruby很早就出现了(1993年诞生于日本),但由于ruby一直缺乏英语文档,而且当时的ruby在web开发上并不怎么
    02-10
点击排行