acts_as_pdf 0.1.1 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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:
|