fillable-pdf 0.7 → 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6f75be2cd9e29a9a3d77a62387db476166b59e2fd6b74da3c15f54a46fecb152
4
- data.tar.gz: b1aa52a24db820d00fbf5a8bcf2419f63c5a9e4f7c08429cff2d8e05cae9639f
3
+ metadata.gz: 998124f748072a08e1a2f98593b85ba4297952c414bb800c7f05df607d76d1a7
4
+ data.tar.gz: d9f16c8942b1c167b476bcc5c630724f631c40285fe05cae20894d542b2daeb7
5
5
  SHA512:
6
- metadata.gz: 2634346658842e6c27d5be651085443771b5c70c32616dd85fd5aae8d2e0a5f2adee348405cfab7fdd74384f00a8a65726b6b04c2051320f9d74a75f86f9255c
7
- data.tar.gz: 6028a2dd57e7e22a6f7fa1215b5efe72949480d55c9e13db882d6d7932931269ad251cfe3b84f197359039255bee556d2e2fe0aac26d2cbd665ff32302944f6f
6
+ metadata.gz: 8e864663a4319fc61ee01448839615ab6125960c5e7a4a39585baa0ce14a339701b748332ffe7dd35bcf7a69fbcc271435e883ee8be86438b818d00d8a034595
7
+ data.tar.gz: 485287c89ed9073a01b97afc72d1ab96eec27b2024891c90b69fb2243d25409b14b22b76046ec0fcd2b4b2ed27262b8752f9d0037baff3bcf7a7004617ac83a3
@@ -1,21 +1,27 @@
1
1
  require:
2
+ - rubocop-minitest
2
3
  - rubocop-performance
4
+ - rubocop-rake
3
5
 
4
6
  AllCops:
7
+ NewCops: enable
5
8
  Exclude:
6
9
  - .git/**/*
7
10
 
8
11
  Layout/EmptyLineAfterGuardClause:
9
12
  Enabled: false
10
13
 
11
- Layout/SpaceInsideHashLiteralBraces:
12
- Enabled: false
13
-
14
- Metrics/LineLength:
14
+ Layout/LineLength:
15
15
  Exclude:
16
16
  - fillable-pdf.gemspec
17
17
  Max: 120
18
18
 
19
+ Layout/SpaceInsideHashLiteralBraces:
20
+ Enabled: false
21
+
22
+ Metrics/MethodLength:
23
+ Max: 12
24
+
19
25
  Naming/AccessorMethodName:
20
26
  Enabled: false
21
27
 
@@ -3,5 +3,8 @@ sudo: false
3
3
  language: ruby
4
4
  cache: bundler
5
5
  rvm:
6
- - 2.6.4
7
- before_install: gem install bundler -v 2.0.2
6
+ - 3.0.0
7
+ jdk:
8
+ - openjdk8
9
+ before_install:
10
+ - gem install bundler
@@ -1,3 +1,7 @@
1
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
2
+
3
+ However, you must also adhere to the [iText License](https://github.com/itext/itext7) when using this gem in your project.
4
+
1
5
  The MIT License (MIT)
2
6
 
3
7
  Copyright (c) 2016 Vadim Kononov
data/README.md CHANGED
@@ -1,13 +1,22 @@
1
+
1
2
  # FillablePDF
2
3
 
3
4
  [![Gem Version](https://badge.fury.io/rb/fillable-pdf.svg)](https://rubygems.org/gems/fillable-pdf)
4
- [![Build Status](https://api.travis-ci.org/plataformatec/fillable-pdf.svg?branch=master)](http://travis-ci.org/plataformatec/fillable-pdf)
5
+ [![Build Status](https://api.travis-ci.org/vkononov/fillable-pdf.svg?branch=master)](http://travis-ci.org/vkononov/fillable-pdf)
5
6
 
6
7
  FillablePDF is an extremely simple and lightweight utility that bridges iText and Ruby in order to fill out fillable PDF forms or extract field values from previously filled out PDF forms.
7
8
 
8
- ## Known Bugs (Rails + Passenger Phusion only)
9
+ ## Known Issues
10
+
11
+ If the gem hangs in `development`, removing the following gems may fix the issue:
12
+
13
+ ```ruby
14
+ gem 'spring'
15
+ gem 'spring-watcher-listen'
16
+ ```
17
+
18
+ If the gem hangs in `production`, you could try to use `puma` with a reverse proxy to host the application.
9
19
 
10
- if you are using Rails and hosting the app with Passenger Phusion (be it standalone or as a plugin for Apache or Nginx), the Java code within this gem simply hangs without any errors and warnings. If you need to deploy your Rails application, do not use Passenger Phusion. I have tested Puma, and it works fine. Not sure about other webservers.
11
20
 
12
21
  ## Installation
13
22
 
@@ -42,97 +51,126 @@ First of all, you should open a fillable PDF file:
42
51
  pdf = FillablePDF.new 'input.pdf'
43
52
  ```
44
53
 
45
- An instance of `FillablePDF` has the following methods at its disposal:
46
-
47
- ```ruby
48
- fillable-pdf
49
- # output example: true
50
- pdf.any_fields?
51
- ```
52
-
53
- ```ruby
54
- # get the total number of fillable form fields
55
- # output example: 10
56
- pdf.num_fields
57
- ```
58
-
59
- ```ruby
60
- # retrieve a single field value by field name
61
- # output example: 'Richard'
62
- pdf.field(:full_name)
63
- ```
64
-
65
- ```ruby
66
- # retrieve a field type by field name
67
- # numeric types should
68
- # output example: 4
69
- pdf.field_type(:football)
70
-
71
- # list of all field types
72
- Field::BUTTON
73
- Field::CHOICE
74
- Field::SIGNATURE
75
- Field::TEXT
76
- ```
77
-
78
- ```ruby
79
- # retrieve a hash of field name and values
80
- # output example: {:last_name=>"Rahl", :first_name=>"Richard"}
81
- pdf.fields
82
- ```
83
-
84
- ```ruby
85
- # set the value of a single field by field name
86
- # result: changes the value of 'first_name' to 'Richard'
87
- pdf.set_field(:first_name, 'Richard')
88
- ```
89
-
90
- ```ruby
91
- # set the values of multiple fields by field names
92
- # result: changes the values of 'first_name' and 'last_name'
93
- pdf.set_fields(first_name: 'Richard', last_name: 'Rahl')
94
- ```
95
-
96
- ```ruby
97
- # rename field (i.e. change the name of the field)
98
- # result: renames field name 'last_name' to 'surname'
99
- # NOTE: this action does not take effect until the document is saved
100
- pdf.rename_field(:last_name, :surname)
101
- ```
102
-
103
- ```ruby
104
- # remove field (i.e. delete field and its value)
105
- # result: physically removes field 'last_name' from document
106
- pdf.remove_field(:last_name)
107
- ```
108
-
109
- ```ruby
110
- # get an array of all field names in the document
111
- # output example: [:first_name, :last_name]
112
- pdf.names
113
- ```
114
-
115
- ```ruby
116
- # get an array of all field values in the document
117
- # output example: ["Rahl", "Richard"]
118
- pdf.values
119
- ```
120
-
121
- Once the PDF is filled out you can either overwrite it or save it as another file:
54
+ > **Always remember to close your document once you're finished working with it in order to avoid memory leaks:**
122
55
 
123
56
  ```ruby
124
- pdf.save
125
- pdf.save_as('output.pdf')
57
+ pdf.close
126
58
  ```
127
59
 
128
- Or if you prefer to flatten the file (i.e. make it non-editable), you can instead use:
60
+ ## Instance Methods
129
61
 
130
- ```ruby
131
- pdf.save(flatten: true)
132
- pdf.save_as('output.pdf', flatten: true)
133
- ```
62
+ An instance of `FillablePDF` has the following methods at its disposal:
134
63
 
135
- **NOTE:** Saving the file automatically closes the input file, so you would need to reinitialize the `FillabePDF` class before making any more changes or saving another copy.
64
+ * `any_fields?`
65
+ *Determines whether the form has any fields.*
66
+ ```ruby
67
+ pdf.any_fields?
68
+ # output example: true
69
+ ```
70
+
71
+ * `num_fields`
72
+ *Returns the total number of fillable form fields.*
73
+ ```ruby
74
+ # output example: 10
75
+ pdf.num_fields
76
+ ```
77
+
78
+ * `field`
79
+ *Retrieves the value of a field given its unique field name.*
80
+ ```ruby
81
+ pdf.field(:full_name)
82
+ # output example: 'Richard'
83
+ ```
84
+
85
+ * `field_type`
86
+ *Retrieves the numeric type of a field given its unique field name.*
87
+ ```ruby
88
+ pdf.field_type(:football)
89
+ # output example: 4
90
+
91
+ # list of all field types
92
+ Field::BUTTON
93
+ Field::CHOICE
94
+ Field::SIGNATURE
95
+ Field::TEXT
96
+ ```
97
+
98
+ * `fields`
99
+ *Retrieves a hash of all fields and their values.*
100
+ ```ruby
101
+ pdf.fields
102
+ # output example: {first_name: "Richard", last_name: "Rahl"}
103
+ ```
104
+
105
+ * `set_field`
106
+ *Sets the value of a field given its unique field name and value.*
107
+ ```ruby
108
+ pdf.set_field(:first_name, 'Richard')
109
+ # result: changes the value of 'first_name' to 'Richard'
110
+ ```
111
+
112
+ * `set_fields`
113
+ *Sets the values of multiple fields given a set of unique field names and values.*
114
+ ```ruby
115
+ pdf.set_fields(first_name: 'Richard', last_name: 'Rahl')
116
+ # result: changes the values of 'first_name' and 'last_name'
117
+ ```
118
+
119
+ * `rename_field`
120
+ *Renames a field given its unique field name and the new field name.*
121
+ ```ruby
122
+ pdf.rename_field(:last_name, :surname)
123
+ # result: renames field name 'last_name' to 'surname'
124
+ # NOTE: this action does not take effect until the document is saved
125
+ ```
126
+
127
+ * `remove_field`
128
+ *Removes a field from the document given its unique field name.*
129
+ ```ruby
130
+ pdf.remove_field(:last_name)
131
+ # result: physically removes field 'last_name' from document
132
+ ```
133
+
134
+ * `names`
135
+ *Returns a list of all field keys used in the document.*
136
+ ```ruby
137
+ pdf.names
138
+ # output example: [:first_name, :last_name]
139
+ ```
140
+
141
+ * `values`
142
+ *Returns a list of all field values used in the document.*
143
+ ```ruby
144
+ pdf.values
145
+ # output example: ["Rahl", "Richard"]
146
+ ```
147
+
148
+ * `save`
149
+ *Overwrites the previously opened PDF document and flattens it if requested.*
150
+ ```ruby
151
+ pdf.save
152
+ # result: document is saved without flatenning
153
+ pdf.save_as(flatten: true)
154
+ # result: document is saved with flatenning
155
+ ```
156
+
157
+ * `save_as`
158
+ *Saves the filled out PDF document in a given path and flattens it if requested.*
159
+ ```ruby
160
+ pdf.save_as('output.pdf')
161
+ # result: document is saved in a given path without flatenning
162
+ pdf.save_as('output.pdf', flatten: true)
163
+ # result: document is saved in a given path with flatenning
164
+ ```
165
+
166
+ **NOTE:** Saving the file automatically closes the input file, so you would need to reinitialize the `FillabePDF` class before making any more changes or saving another copy.
167
+
168
+ * `close`
169
+ *Closes the PDF document discarding all unsaved changes.*
170
+ ```ruby
171
+ pdf.close
172
+ # result: document is closed
173
+ ```
136
174
 
137
175
  ## Example
138
176
 
@@ -203,6 +241,9 @@ pdf.save_as('output.pdf')
203
241
  # saving another copy of the filled out PDF in another file and making it non-editable
204
242
  pdf = FillablePDF.new('output.pdf')
205
243
  pdf.save_as 'output.flat.pdf', flatten: true
244
+
245
+ # closing the document
246
+ pdf.close
206
247
  ```
207
248
 
208
249
  The example above produces the following output and also generates the output file [output.pdf](example/output.pdf).
@@ -236,4 +277,6 @@ Signatory: Richard Rahl
236
277
 
237
278
  ## License
238
279
 
239
- The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
280
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
281
+
282
+ However, you must also adhere to the [iText License](https://github.com/itext/itext7) when using this gem in your project.
data/Rakefile CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'bundler/gem_tasks'
2
2
  require 'rake/testtask'
3
+ require 'rubocop/rake_task'
3
4
 
4
5
  Rake::TestTask.new(:test) do |t|
5
6
  t.libs << 'test'
@@ -7,4 +8,6 @@ Rake::TestTask.new(:test) do |t|
7
8
  t.test_files = FileList['test/**/*_test.rb']
8
9
  end
9
10
 
10
- task default: :test
11
+ RuboCop::RakeTask.new
12
+
13
+ task default: %i[test rubocop]
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1,4 +1,4 @@
1
- lib = File.expand_path('../lib', __dir__)
1
+ lib = File.expand_path('lib', __dir__)
2
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
  require 'fillable-pdf/version'
4
4
 
@@ -12,6 +12,7 @@ Gem::Specification.new do |spec|
12
12
  spec.description = 'FillablePDF is an extremely simple and lightweight utility that bridges iText and Ruby in order to fill out fillable PDF forms or extract field values from previously filled out PDF forms.'
13
13
  spec.homepage = 'https://github.com/vkononov/fillable-pdf'
14
14
  spec.license = 'MIT'
15
+ spec.required_ruby_version = Gem::Requirement.new('>= 2.4.0')
15
16
 
16
17
  spec.files = Dir.chdir(File.expand_path(__dir__)) do
17
18
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(example|test|spec|features)/}) }
@@ -20,9 +21,14 @@ Gem::Specification.new do |spec|
20
21
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
22
  spec.require_paths = %w[ext lib]
22
23
 
23
- spec.add_development_dependency 'bundler', '~> 2.0'
24
- spec.add_development_dependency 'minitest', '~> 5.0'
25
- spec.add_development_dependency 'rake', '~> 10.0'
24
+ spec.add_development_dependency 'bundler'
25
+ spec.add_development_dependency 'minitest'
26
+ spec.add_development_dependency 'rake'
27
+ spec.add_development_dependency 'rubocop'
28
+ spec.add_development_dependency 'rubocop-md'
29
+ spec.add_development_dependency 'rubocop-minitest'
30
+ spec.add_development_dependency 'rubocop-performance'
31
+ spec.add_development_dependency 'rubocop-rake'
26
32
 
27
33
  spec.add_runtime_dependency 'rjb', '~> 1.6'
28
34
  end
@@ -1,7 +1,12 @@
1
1
  require_relative 'fillable-pdf/itext'
2
+ require_relative 'kernel'
2
3
 
3
4
  class Field
4
- PDF_NAME = Rjb.import('com.itextpdf.kernel.pdf.PdfName')
5
+ # PdfName has a constant "A" and a constant "a". Unfortunately, RJB does not differentiate
6
+ # between these constants and tries to create the same constant ("A") for both, which causes
7
+ # an annoying warning "already initialized constant Rjb::Com_itextpdf_kernel_pdf_PdfName::A".
8
+ # As long as RJB has not fixed this issue, this warning will remain suppressed.
9
+ suppress_warnings { PDF_NAME = Rjb.import('com.itextpdf.kernel.pdf.PdfName') } # rubocop:disable Lint/ConstantDefinitionInBlock
5
10
 
6
11
  BUTTON = PDF_NAME.Btn.toString
7
12
  CHOICE = PDF_NAME.Ch.toString
@@ -1,5 +1,6 @@
1
1
  require_relative 'fillable-pdf/itext'
2
2
  require_relative 'field'
3
+ require 'fileutils'
3
4
  require 'securerandom'
4
5
 
5
6
  class FillablePDF
@@ -19,12 +20,16 @@ class FillablePDF
19
20
  def initialize(file_path)
20
21
  raise IOError, "File at `#{file_path}' is not found" unless File.exist?(file_path)
21
22
  @file_path = file_path
22
- @byte_stream = BYTE_STREAM.new
23
- @pdf_reader = PDF_READER.new @file_path
24
- @pdf_writer = PDF_WRITER.new @byte_stream
25
- @pdf_doc = PDF_DOCUMENT.new @pdf_reader, @pdf_writer
26
- @pdf_form = PDF_ACRO_FORM.getAcroForm(@pdf_doc, true)
27
- @form_fields = @pdf_form.getFormFields
23
+ begin
24
+ @byte_stream = BYTE_STREAM.new
25
+ @pdf_reader = PDF_READER.new @file_path
26
+ @pdf_writer = PDF_WRITER.new @byte_stream
27
+ @pdf_doc = PDF_DOCUMENT.new @pdf_reader, @pdf_writer
28
+ @pdf_form = PDF_ACRO_FORM.getAcroForm(@pdf_doc, true)
29
+ @form_fields = @pdf_form.getFormFields
30
+ rescue StandardError => e
31
+ raise "#{e.message} (input file may be corrupt, incompatible, or may not have any forms)"
32
+ end
28
33
  end
29
34
 
30
35
  ##
@@ -37,7 +42,7 @@ class FillablePDF
37
42
  end
38
43
 
39
44
  ##
40
- # Returns the total number of form fields.
45
+ # Returns the total number of fillable form fields.
41
46
  #
42
47
  # @return the number of fields
43
48
  #
@@ -147,24 +152,38 @@ class FillablePDF
147
152
  end
148
153
 
149
154
  ##
150
- # Overwrites the previously opened PDF file and flattens it if requested.
155
+ # Overwrites the previously opened PDF document and flattens it if requested.
151
156
  #
152
157
  # @param [bool] flatten true if PDF should be flattened, false otherwise
153
158
  #
154
159
  def save(flatten: false)
155
160
  tmp_file = SecureRandom.uuid
156
161
  save_as(tmp_file, flatten: flatten)
157
- File.rename tmp_file, @file_path
162
+ FileUtils.mv tmp_file, @file_path
158
163
  end
159
164
 
160
165
  ##
161
- # Saves the filled out PDF file with a given file and flattens it if requested.
166
+ # Saves the filled out PDF document in a given path and flattens it if requested.
162
167
  #
163
168
  # @param [String] file_path the name of the PDF file or file path
164
169
  # @param [Hash] flatten: true if PDF should be flattened, false otherwise
165
170
  #
166
171
  def save_as(file_path, flatten: false)
167
- File.open(file_path, 'wb') { |f| f.write(finalize(flatten: flatten)) && f.close }
172
+ if @file_path == file_path
173
+ save(flatten: flatten)
174
+ else
175
+ File.open(file_path, 'wb') { |f| f.write(finalize(flatten: flatten)) && f.close }
176
+ end
177
+ end
178
+
179
+ ##
180
+ # Closes the PDF document discarding all unsaved changes.
181
+ #
182
+ # @return [Boolean] true if document is closed, false otherwise
183
+ #
184
+ def close
185
+ @pdf_doc.close
186
+ @pdf_doc.isClosed
168
187
  end
169
188
 
170
189
  private
@@ -176,7 +195,7 @@ class FillablePDF
176
195
  #
177
196
  def finalize(flatten: false)
178
197
  @pdf_form.flattenFields if flatten
179
- @pdf_doc.close
198
+ close
180
199
  @byte_stream.toByteArray
181
200
  end
182
201
 
@@ -1,3 +1,3 @@
1
1
  class FillablePDF
2
- VERSION = '0.7'
2
+ VERSION = '0.9.1'
3
3
  end
@@ -0,0 +1,9 @@
1
+ module Kernel
2
+ def suppress_warnings
3
+ original_verbosity = $VERBOSE
4
+ $VERBOSE = nil
5
+ result = yield
6
+ $VERBOSE = original_verbosity
7
+ result
8
+ end
9
+ end
metadata CHANGED
@@ -1,57 +1,127 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fillable-pdf
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.7'
4
+ version: 0.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vadim Kononov
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-08-31 00:00:00.000000000 Z
11
+ date: 2020-12-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '2.0'
19
+ version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '2.0'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: minitest
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '5.0'
33
+ version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '5.0'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '10.0'
47
+ version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rubocop
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop-md
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rubocop-minitest
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rubocop-performance
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
53
109
  - !ruby/object:Gem::Version
54
- version: '10.0'
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rubocop-rake
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
55
125
  - !ruby/object:Gem::Dependency
56
126
  name: rjb
57
127
  requirement: !ruby/object:Gem::Requirement
@@ -79,27 +149,29 @@ files:
79
149
  - ".rubocop.yml"
80
150
  - ".travis.yml"
81
151
  - Gemfile
82
- - LICENSE.txt
152
+ - LICENSE.md
83
153
  - README.md
84
154
  - Rakefile
85
155
  - bin/console
86
156
  - bin/setup
87
- - ext/forms-7.1.7.jar
88
- - ext/io-7.1.7.jar
89
- - ext/kernel-7.1.7.jar
90
- - ext/layout-7.1.7.jar
91
- - ext/slf4j-api-1.7.28.jar
92
- - ext/slf4j-simple-1.7.28.jar
157
+ - ext/font-asian-7.1.12.jar
158
+ - ext/forms-7.1.12.jar
159
+ - ext/io-7.1.12.jar
160
+ - ext/kernel-7.1.12.jar
161
+ - ext/layout-7.1.12.jar
162
+ - ext/slf4j-api-1.7.29.jar
163
+ - ext/slf4j-simple-1.7.29.jar
93
164
  - fillable-pdf.gemspec
94
165
  - lib/field.rb
95
166
  - lib/fillable-pdf.rb
96
167
  - lib/fillable-pdf/itext.rb
97
168
  - lib/fillable-pdf/version.rb
169
+ - lib/kernel.rb
98
170
  homepage: https://github.com/vkononov/fillable-pdf
99
171
  licenses:
100
172
  - MIT
101
173
  metadata: {}
102
- post_install_message:
174
+ post_install_message:
103
175
  rdoc_options: []
104
176
  require_paths:
105
177
  - ext
@@ -108,15 +180,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
108
180
  requirements:
109
181
  - - ">="
110
182
  - !ruby/object:Gem::Version
111
- version: '0'
183
+ version: 2.4.0
112
184
  required_rubygems_version: !ruby/object:Gem::Requirement
113
185
  requirements:
114
186
  - - ">="
115
187
  - !ruby/object:Gem::Version
116
188
  version: '0'
117
189
  requirements: []
118
- rubygems_version: 3.0.3
119
- signing_key:
190
+ rubygems_version: 3.2.3
191
+ signing_key:
120
192
  specification_version: 4
121
193
  summary: Fill out or extract field values from simple fillable PDF forms using iText.
122
194
  test_files: []
Binary file
Binary file
Binary file
Binary file