acts_as_pdf 0.1.1 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +76 -5
- data/lib/acts_as_pdf.rb +15 -5
- data/lib/acts_as_pdf/version.rb +1 -1
- data/lib/preview_pdf.rb +34 -0
- metadata +60 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 07f696acccba5069d6731c64603a9558574bc25d
|
4
|
+
data.tar.gz: dd2e2b09e636cf7bd159f7aa4df716ef043ccbaa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0c86878cd3f0af40d38792cf13648b3799ff56777187fd25f46c8fe8fce726bb3dea399bb178cb7d6c88e5ee6d6de2149e92942ddf0e1181202a72a24339829d
|
7
|
+
data.tar.gz: 283d5e0d4ad9840cc66b1ab11209bdc7779284238c074deb2e4c643b7f58819e53cac18dc01547b3726b3f6f6f3fc3480e812c9dd3696feda3d99db79e488e01
|
data/README.md
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
# ActsAsPdf
|
2
|
-
Short description and motivation.
|
3
2
|
|
4
|
-
|
5
|
-
How to use my plugin.
|
3
|
+
Quick way to convert markdown to a template pdf.
|
6
4
|
|
7
5
|
## Installation
|
8
6
|
Add this line to your application's Gemfile:
|
@@ -21,8 +19,81 @@ Or install it yourself as:
|
|
21
19
|
$ gem install acts_as_pdf
|
22
20
|
```
|
23
21
|
|
24
|
-
##
|
25
|
-
|
22
|
+
## Usage
|
23
|
+
|
24
|
+
**bill.rb**
|
25
|
+
```ruby
|
26
|
+
class Bill < ApplicationRecord
|
27
|
+
|
28
|
+
acts_as_pdf :field, {method: :generate_bill, font_size: '10', font_name: 'Arial', line_height: '180%'}
|
29
|
+
|
30
|
+
def generate_bill user, company, obj # has many arguments or no one
|
31
|
+
{
|
32
|
+
"//COMPANY_NAME//": company.company_name,
|
33
|
+
"//COMPANY_FULL_ADDRESS//": company.company_full_address,
|
34
|
+
"//COMPANY_USER_POST//": company.company_user_post,
|
35
|
+
"//USER_FIRST_NAME//": user.first_name,
|
36
|
+
"//USER_LAST_NAME//": user.last_name,
|
37
|
+
"//OBJECT_PRICE//": obj.salary,
|
38
|
+
"//OBJECT_CURRENCY//": obj.currency
|
39
|
+
}
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
```
|
44
|
+
|
45
|
+
**bills_controller.rb**
|
46
|
+
```ruby
|
47
|
+
class BillsController < ApplicationController
|
48
|
+
preview_pdf
|
49
|
+
# preview_pdf {view: 'preview.pdf'}
|
50
|
+
end
|
51
|
+
```
|
52
|
+
|
53
|
+
**views/bills/preview.pdf.prawn**
|
54
|
+
```ruby
|
55
|
+
@pdf
|
56
|
+
```
|
57
|
+
|
58
|
+
**views/bills/_form.html.haml**
|
59
|
+
```ruby
|
60
|
+
= simple_form_for resource do |f|
|
61
|
+
= f.text :field # with the markdown gem you want (be aware of whitespaces)
|
62
|
+
= f.submit 'preview', name: 'preview', action: 'preview', formtarget: "_blank", id: "first"
|
63
|
+
= f.submit class: 'btn btn-custom inline', id: "second"
|
64
|
+
|
65
|
+
:javascript # in other file
|
66
|
+
$('#first').removeAttr('data-disable-with')
|
67
|
+
$('#second').removeAttr('data-disable-with')
|
68
|
+
|
69
|
+
```
|
70
|
+
|
71
|
+
**routes.rb**
|
72
|
+
```ruby
|
73
|
+
resources :bills do
|
74
|
+
post :create, on: :member, action: :preview
|
75
|
+
patch :update, on: :member, action: :preview
|
76
|
+
end
|
77
|
+
```
|
78
|
+
|
79
|
+
Now you can use it at runtime:
|
80
|
+
|
81
|
+
**users_controller.rb**
|
82
|
+
```ruby
|
83
|
+
class BillsController < ApplicationController
|
84
|
+
|
85
|
+
def after_buying_something
|
86
|
+
bill = Bill.find(param[:bill_id])
|
87
|
+
product = Product.find(param[:product_id])
|
88
|
+
@pdf = bill.generate_bill(@user, product.company, product)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
```
|
92
|
+
|
93
|
+
**views/bills/after_buying_something.pdf.prawn**
|
94
|
+
```ruby
|
95
|
+
@pdf
|
96
|
+
```
|
26
97
|
|
27
98
|
## License
|
28
99
|
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
data/lib/acts_as_pdf.rb
CHANGED
@@ -1,17 +1,22 @@
|
|
1
|
+
require 'preview_pdf'
|
2
|
+
|
1
3
|
module ActsAsPdf
|
2
4
|
extend ActiveSupport::Concern
|
3
5
|
|
4
|
-
@@pdf_options =
|
6
|
+
@@pdf_options = {}
|
5
7
|
cattr_accessor :pdf_options
|
6
8
|
|
7
9
|
def md_pdf args = []
|
8
10
|
hash = self.send(ActsAsPdf.pdf_options[self.class.to_s.downcase][:opts][:method], *args) rescue {}
|
9
11
|
output = md_to_pdf
|
10
12
|
|
11
|
-
|
13
|
+
opts = ActsAsPdf.pdf_options[self.class.to_s.downcase][:opts]
|
14
|
+
font_name = opts[:font_name] || 'Futura'
|
15
|
+
font_size = opts[:font_size] || '10'
|
16
|
+
line_height = opts[:line_height] || '180%'
|
12
17
|
|
13
18
|
hash.each { |k, v| output.gsub!(k.to_s, v.to_s) }
|
14
|
-
|
19
|
+
"<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'> <style type = 'text/css'> body { font-family: #{font_name}; font-size: #{font_size}; line-height: #{line_height}; }</style> " + output
|
15
20
|
end
|
16
21
|
|
17
22
|
def md_to_pdf
|
@@ -22,6 +27,10 @@ module ActsAsPdf
|
|
22
27
|
result[:output].to_s
|
23
28
|
end
|
24
29
|
|
30
|
+
def name_method
|
31
|
+
ActsAsPdf.pdf_options[self.class.to_s.downcase][:opts][:method] rescue nil
|
32
|
+
end
|
33
|
+
|
25
34
|
def preview params
|
26
35
|
return self unless params[:preview]
|
27
36
|
|
@@ -34,13 +43,14 @@ module ActsAsPdf
|
|
34
43
|
end
|
35
44
|
|
36
45
|
def generate_pdf params, args = []
|
37
|
-
|
38
|
-
WickedPdf.new.pdf_from_string(
|
46
|
+
model = self.preview params
|
47
|
+
WickedPdf.new.pdf_from_string(model.md_pdf(args), ActsAsPdf.pdf_options[self.class.to_s.downcase][:opts])
|
39
48
|
end
|
40
49
|
|
41
50
|
module ClassMethods
|
42
51
|
|
43
52
|
def acts_as_pdf field, opts = {}
|
53
|
+
ActsAsPdf.pdf_options[self.to_s.downcase] ||= {}
|
44
54
|
ActsAsPdf.pdf_options[self.to_s.downcase][:opts] = opts
|
45
55
|
ActsAsPdf.pdf_options[self.to_s.downcase][:field] = field
|
46
56
|
end
|
data/lib/acts_as_pdf/version.rb
CHANGED
data/lib/preview_pdf.rb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
module PreviewPdfAddOn
|
2
|
+
extend ActiveSupport::Concern
|
3
|
+
|
4
|
+
module ClassMethods
|
5
|
+
def preview_pdf opts = {}
|
6
|
+
|
7
|
+
define_method :preview do
|
8
|
+
|
9
|
+
name_view = opts[:view] || 'preview.pdf'
|
10
|
+
@pdf = resource.generate_pdf params
|
11
|
+
if params[:preview]
|
12
|
+
render name_view
|
13
|
+
else
|
14
|
+
route = params[:commit].split(' ').first.downcase.to_sym
|
15
|
+
send(route) if [:create, :update].include? route
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
define_method :create do
|
20
|
+
|
21
|
+
if params[:preview]
|
22
|
+
send('preview')
|
23
|
+
else
|
24
|
+
super()
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
class ActionController::Base
|
33
|
+
include PreviewPdfAddOn
|
34
|
+
end
|
metadata
CHANGED
@@ -1,15 +1,71 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acts_as_pdf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Oren Carta-Lag
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-09-
|
12
|
-
dependencies:
|
11
|
+
date: 2017-09-29 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: html-pipeline
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 2.7.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 2.7.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: wicked_pdf
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: wkhtmltopdf-binary
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: prawn_rails
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
13
69
|
description: Description of ActsAsPdf.
|
14
70
|
email:
|
15
71
|
- oren.carta-lag@hotmail.fr
|
@@ -22,6 +78,7 @@ files:
|
|
22
78
|
- Rakefile
|
23
79
|
- lib/acts_as_pdf.rb
|
24
80
|
- lib/acts_as_pdf/version.rb
|
81
|
+
- lib/preview_pdf.rb
|
25
82
|
- lib/tasks/acts_as_pdf_tasks.rake
|
26
83
|
homepage: http://rubygems.org/gems/acts_as_pdf
|
27
84
|
licenses:
|