acrobat 0.0.5 → 0.0.7
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
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +1 -5
- data/Manifest.txt +2 -0
- data/README.adoc +2 -0
- data/lib/acrobat.rb +42 -1
- data/lib/acrobat/app.rb +17 -278
- data/lib/acrobat/jso.rb +94 -0
- data/lib/acrobat/pdoc.rb +92 -0
- metadata +9 -3
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6073a8a04f7af59dd0b8825ff3286975f0197d7d
|
4
|
+
data.tar.gz: 6004fca142d6c6856acf3bb83a2c918600ce3458
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8af177966f67905aba759fbced241768d2da6b5aa6128f531c505c6217d8b63d3893ec3092d88162c2d5d35ece6502f33d4db39d97640f6e3af3e3b4371a6ed8
|
7
|
+
data.tar.gz: 3e32a912018fcde36ee7ec584484e1f249313f356d29fa6535ee501052f8475d6248a03ffbe2334ce31a06166eefe3e3e75cdd39273deac5f7222cd5514ddc6c
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
data/Manifest.txt
CHANGED
data/README.adoc
CHANGED
@@ -19,6 +19,8 @@ Dominic Sisneros <https://github.com/dsisnero[@dsisnero]
|
|
19
19
|
|
20
20
|
== DESCRIPTION:
|
21
21
|
|
22
|
+
The acrobat gem is a library that uses WIN32OLE to automate pdf functions. Adobe Reader or Adobe Acrobat must be installed and then you can fill forms and merge documents
|
23
|
+
|
22
24
|
== Requirements
|
23
25
|
|
24
26
|
* Windows Adobe Acrobat installed
|
data/lib/acrobat.rb
CHANGED
@@ -3,5 +3,46 @@ require 'acrobat/app'
|
|
3
3
|
|
4
4
|
|
5
5
|
module Acrobat
|
6
|
-
VERSION = "0.0.
|
6
|
+
VERSION = "0.0.7"
|
7
|
+
end
|
8
|
+
|
9
|
+
|
10
|
+
if $0 == __FILE__
|
11
|
+
require 'pry'
|
12
|
+
|
13
|
+
app = Acrobat::App.run do |app|
|
14
|
+
|
15
|
+
data = Pathname(__dir__).parent + 'data'
|
16
|
+
antenna_form = data + 'faa.6030.17.antenna.pdf'
|
17
|
+
|
18
|
+
|
19
|
+
doc1 = app.open(antenna_form)
|
20
|
+
doc1.show
|
21
|
+
|
22
|
+
fields = {'city' => 'OGD', 'state' => 'Utah',
|
23
|
+
'lid' => 'OGD',
|
24
|
+
'fac' => 'RTR',
|
25
|
+
}
|
26
|
+
doc1.fill_form(fields)
|
27
|
+
|
28
|
+
|
29
|
+
doc1.save_as(name: 'ogd.rtr.pdf', dir: 'tmp')
|
30
|
+
binding.pry
|
31
|
+
jso = doc1.jso
|
32
|
+
jso.show_console
|
33
|
+
puts "field count: #{jso.field_count}"
|
34
|
+
puts "field names: \n#{jso.field_names}"
|
35
|
+
binding.pry
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
doc2 = app.open(data + 'faa.6030.17.cm300.uhf.tx.pdf')
|
40
|
+
doc2.show
|
41
|
+
doc2.fill_form(fields)
|
42
|
+
|
43
|
+
doc1.merge(doc2)
|
44
|
+
doc1.save_as(name: 'ogd.merged_antenna_tx.pdf', dir: 'tmp')
|
45
|
+
|
46
|
+
end
|
47
|
+
|
7
48
|
end
|
data/lib/acrobat/app.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
require 'pry'
|
2
2
|
require 'win32ole'
|
3
|
+
require_relative 'pdoc'
|
4
|
+
require_relative 'jso'
|
3
5
|
|
4
6
|
module FileSystemObject
|
5
7
|
|
@@ -73,6 +75,17 @@ module Acrobat
|
|
73
75
|
Pathname.glob( dir + '*.pdf')
|
74
76
|
end
|
75
77
|
|
78
|
+
def merge_pdfs(*pdfs)
|
79
|
+
pdf_array = Array(pdfs)
|
80
|
+
raise 'Not enough pdfs to merge' if pdfs.size < 2
|
81
|
+
first, *rest = pdf_array
|
82
|
+
doc = open(first)
|
83
|
+
rest.each do |path|
|
84
|
+
doc.merge(path)
|
85
|
+
end
|
86
|
+
doc
|
87
|
+
end
|
88
|
+
|
76
89
|
# merges the pdfs in directory
|
77
90
|
# @param dir [String] the path of the directory
|
78
91
|
# @param name [String,Nil] the name of the returned pdf file
|
@@ -80,21 +93,12 @@ module Acrobat
|
|
80
93
|
# @param output_dir [String,Nil] the name of the output dir
|
81
94
|
# if the output_dir is nil, the output dir is the dir param
|
82
95
|
# return [Boolean] if the merge was successful or not
|
83
|
-
def
|
96
|
+
def merge_pdfs_in_dir(dir, name: nil , output_dir: nil)
|
84
97
|
name = lname || "merged.pdf"
|
85
98
|
dir = output_dir || dir
|
86
99
|
pdfs = Pathname.glob( dir + '*.pdf')
|
87
|
-
|
88
|
-
|
89
|
-
open(first) do |pdf|
|
90
|
-
rest.each do |path|
|
91
|
-
open(path) do |pdfnext|
|
92
|
-
pdf.merge_doc(pdfnext)
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
pdf.save_as(name: name, dir: dir)
|
97
|
-
end
|
100
|
+
doc = merge_pdfs(pdfs)
|
101
|
+
doc
|
98
102
|
end
|
99
103
|
|
100
104
|
# quit the Adobe App.
|
@@ -128,7 +132,7 @@ module Acrobat
|
|
128
132
|
begin
|
129
133
|
yield doc
|
130
134
|
ensure
|
131
|
-
doc.close
|
135
|
+
doc.close
|
132
136
|
doc = nil
|
133
137
|
end
|
134
138
|
end
|
@@ -144,271 +148,6 @@ module Acrobat
|
|
144
148
|
WIN32OLE.const_load(ole_obj, ACRO) unless ACRO.constants.size > 0
|
145
149
|
end
|
146
150
|
|
147
|
-
|
148
|
-
end
|
149
|
-
|
150
|
-
class PDoc
|
151
|
-
|
152
|
-
attr_reader :app, :ole_obj, :path
|
153
|
-
|
154
|
-
def initialize(app,ole,path=nil)
|
155
|
-
@app = app
|
156
|
-
@ole_obj = ole
|
157
|
-
@path = path
|
158
|
-
end
|
159
|
-
|
160
|
-
def show(name = nil)
|
161
|
-
name = name || ole_obj.GetFileName
|
162
|
-
ole_obj.OpenAVDoc(name)
|
163
|
-
end
|
164
|
-
|
165
|
-
# @return [Fixnum] the number of pages in the pdf
|
166
|
-
def page_count
|
167
|
-
ole_obj.GetNumPages()
|
168
|
-
end
|
169
|
-
|
170
|
-
# merges the doc to the
|
171
|
-
# @overload merge(doc)
|
172
|
-
# @param doc [String] the String path of a pdf file
|
173
|
-
# @overload merge(doc)
|
174
|
-
# @param doc [PDoc] an open PDoc to merge
|
175
|
-
# @return [Boolean] whether the doc was merged correctly
|
176
|
-
def merge(doc)
|
177
|
-
case doc
|
178
|
-
when PDoc
|
179
|
-
merge_pdoc(doc)
|
180
|
-
when String, Pathname
|
181
|
-
docpath = Pathname(doc)
|
182
|
-
raise 'File not found' unless docpath.file?
|
183
|
-
doc2 = app.open(docpath)
|
184
|
-
merge_pdoc(doc2)
|
185
|
-
end
|
186
|
-
end
|
187
|
-
|
188
|
-
def update_form(results)
|
189
|
-
form.update(results)
|
190
|
-
end
|
191
|
-
|
192
|
-
def update_and_save(results,name: nil, dir: nil)
|
193
|
-
update_form(results)
|
194
|
-
is_saved = save_as(name: name, dir: dir)
|
195
|
-
puts "saved file: %s" % [dir + name] if is_saved
|
196
|
-
end
|
197
|
-
|
198
|
-
def default_dir(d)
|
199
|
-
Pathname(dir || Pathname.getw)
|
200
|
-
end
|
201
|
-
|
202
|
-
|
203
|
-
def save_as(name:nil, dir:nil)
|
204
|
-
name = path.basename unless name
|
205
|
-
dir = Pathname(dir || Pathname.getwd)
|
206
|
-
dir.mkpath
|
207
|
-
windows_path = FileSystemObject.windows_path(dir + name )
|
208
|
-
ole_obj.save(ACRO::PDSaveFull | ACRO::PDSaveCopy,windows_path)
|
209
|
-
end
|
210
|
-
|
211
|
-
def name
|
212
|
-
ole_obj.GetFileName
|
213
|
-
end
|
214
|
-
|
215
|
-
def close
|
216
|
-
ole_obj.Close
|
217
|
-
end
|
218
|
-
|
219
|
-
|
220
|
-
def jso
|
221
|
-
@jso ||= Jso.new(ole_obj.GetJSObject)
|
222
|
-
end
|
223
|
-
|
224
|
-
def field_names
|
225
|
-
jso.field_names
|
226
|
-
end
|
227
|
-
|
228
|
-
def fill_form(results)
|
229
|
-
jso.fill_form(results)
|
230
|
-
end
|
231
|
-
|
232
|
-
protected
|
233
|
-
def merge_pdoc(doc)
|
234
|
-
ole_obj.InsertPages(page_count - 1, doc.ole_obj, 0, doc.page_count, true)
|
235
|
-
end
|
236
|
-
|
237
|
-
end
|
238
|
-
|
239
|
-
class Jso
|
240
|
-
|
241
|
-
attr_reader :ole_obj
|
242
|
-
|
243
|
-
def initialize(ole)
|
244
|
-
@ole_obj = ole
|
245
|
-
end
|
246
|
-
|
247
|
-
def find_field(name_or_number)
|
248
|
-
case name_or_number
|
249
|
-
when String,Symbol
|
250
|
-
ole_get_field(name_or_number.to_s)
|
251
|
-
when Number
|
252
|
-
ole_get_field(name_or_number)
|
253
|
-
end
|
254
|
-
end
|
255
|
-
|
256
|
-
def ole_get_field(field)
|
257
|
-
ole_obj.getField(field)
|
258
|
-
end
|
259
|
-
|
260
|
-
def console
|
261
|
-
@console ||= ole_obj.console
|
262
|
-
end
|
263
|
-
|
264
|
-
def field_names
|
265
|
-
result = []
|
266
|
-
0.upto(field_count -1) do |i|
|
267
|
-
result << ole_obj.getNthFieldName(i)
|
268
|
-
end
|
269
|
-
result
|
270
|
-
end
|
271
|
-
|
272
|
-
def set_field(name,value)
|
273
|
-
field = find_field(name)
|
274
|
-
field.Value = value if field
|
275
|
-
end
|
276
|
-
|
277
|
-
def get_field(name)
|
278
|
-
field = find_field(name)
|
279
|
-
field.Value if field
|
280
|
-
end
|
281
|
-
|
282
|
-
def field_count
|
283
|
-
ole_obj.numFields
|
284
|
-
end
|
285
|
-
|
286
|
-
def clear_form
|
287
|
-
ole_obj.resetForm
|
288
|
-
end
|
289
|
-
|
290
|
-
def fill_form(hash)
|
291
|
-
clear_form
|
292
|
-
hash.each do |k,v|
|
293
|
-
set_field(k,v)
|
294
|
-
end
|
295
|
-
end
|
296
|
-
|
297
|
-
end
|
298
|
-
|
299
|
-
|
300
|
-
class Form
|
301
|
-
|
302
|
-
attr_reader :app, :ole_obj
|
303
|
-
|
304
|
-
def initialize(app, ole_obj)
|
305
|
-
@app = app
|
306
|
-
@ole_obj = ole_obj
|
307
|
-
end
|
308
|
-
|
309
|
-
def ole_fields
|
310
|
-
@ole_obj.fields
|
311
|
-
end
|
312
|
-
|
313
|
-
def [](name)
|
314
|
-
ole = get_name(name)
|
315
|
-
ole.value if ole
|
316
|
-
end
|
317
|
-
|
318
|
-
def get_name(name)
|
319
|
-
ole_obj.fields.Item(name.to_s) rescue nil
|
320
|
-
end
|
321
|
-
|
322
|
-
def []=(name,value)
|
323
|
-
ole = get_name(name.to_s)
|
324
|
-
ole.Value = value if ole
|
325
|
-
end
|
326
|
-
|
327
|
-
def update(hash)
|
328
|
-
hash.each do |k,v|
|
329
|
-
self[k.to_s] = v
|
330
|
-
end
|
331
|
-
|
332
|
-
end
|
333
|
-
|
334
|
-
def to_hash
|
335
|
-
result = {}
|
336
|
-
ole_obj.fields.each do |fld|
|
337
|
-
result[fld.Name] = fld.value
|
338
|
-
end
|
339
|
-
result
|
340
|
-
end
|
341
|
-
end
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
end
|
346
|
-
|
347
|
-
if $0 == __FILE__
|
348
|
-
require 'pry'
|
349
|
-
|
350
|
-
app = Acrobat::App.run do |app|
|
351
|
-
|
352
|
-
data = Pathname(__dir__).parent.parent + 'data'
|
353
|
-
antenna_form = data + 'faa.6030.17.antenna.pdf'
|
354
|
-
|
355
|
-
|
356
|
-
doc1 = app.open(antenna_form)
|
357
|
-
doc1.show
|
358
|
-
|
359
|
-
fields = {'city' => 'OGD', 'state' => 'Utah',
|
360
|
-
'lid' => 'OGD',
|
361
|
-
'fac' => 'RTR',
|
362
|
-
}
|
363
|
-
doc1.fill_form(fields)
|
364
|
-
|
365
|
-
|
366
|
-
doc1.save_as(name: 'ogd.rtr.pdf', dir: 'tmp')
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
doc2 = app.open(data + 'faa.6030.17.cm300.uhf.tx.pdf')
|
372
|
-
doc2.show
|
373
|
-
doc2.fill_form(fields)
|
374
|
-
|
375
|
-
doc1.merge(doc2)
|
376
|
-
doc1.save_as(name: 'ogd.merged_antenna_tx.pdf', dir: 'tmp')
|
377
|
-
|
378
151
|
end
|
379
152
|
|
380
153
|
end
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
# ublic Sub Main()
|
385
|
-
# Dim AcroApp As Acrobat.CAcroApp
|
386
|
-
# Dim AvDoc As Acrobat.CAcroAVDoc
|
387
|
-
# Dim fcount As Long
|
388
|
-
# Dim sFieldName As String
|
389
|
-
# Dim Field As AFORMAUTLib.Field
|
390
|
-
# Dim Fields As AFORMAUTLib.Fields
|
391
|
-
# Dim AcroForm As AFORMAUTLib.AFormApp
|
392
|
-
|
393
|
-
# Set AcroApp = CreateObject("AcroExch.App")
|
394
|
-
# Set AvDoc = CreateObject("AcroExch.AVDoc")
|
395
|
-
|
396
|
-
# If AvDoc.Open("C:\test\testform.pdf", "") Then
|
397
|
-
# AcroApp.Show
|
398
|
-
# Set AcroForm = CreateObject("AFormAut.App")
|
399
|
-
# Set Fields = AcroForm.Fields
|
400
|
-
# fcount = Fields.Count
|
401
|
-
# MsgBox fcount
|
402
|
-
# For Each Field In Fields
|
403
|
-
# sFieldName = Field.Name
|
404
|
-
# MsgBox sFieldName
|
405
|
-
# Next Field
|
406
|
-
# Else
|
407
|
-
# MsgBox "failure"
|
408
|
-
# End If
|
409
|
-
# AcroApp.Exit
|
410
|
-
# Set AcroApp = Nothing
|
411
|
-
# Set AvDoc = Nothing
|
412
|
-
# Set Field = Nothing
|
413
|
-
# Set Fields = Nothing
|
414
|
-
# Set AcroForm = Nothing
|
data/lib/acrobat/jso.rb
ADDED
@@ -0,0 +1,94 @@
|
|
1
|
+
module Acrobat
|
2
|
+
|
3
|
+
class Jso
|
4
|
+
|
5
|
+
attr_reader :doc, :ole_obj
|
6
|
+
|
7
|
+
def initialize(doc,ole)
|
8
|
+
@doc = doc
|
9
|
+
@ole_obj = ole
|
10
|
+
end
|
11
|
+
|
12
|
+
def find_field(name_or_number)
|
13
|
+
case name_or_number
|
14
|
+
when String,Symbol
|
15
|
+
ole_get_field(name_or_number.to_s)
|
16
|
+
when Number
|
17
|
+
ole_get_field(name_or_number)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def ole_get_field(field)
|
22
|
+
ole_obj.getField(field)
|
23
|
+
end
|
24
|
+
|
25
|
+
def console
|
26
|
+
@console ||= ole_obj.console
|
27
|
+
end
|
28
|
+
|
29
|
+
def show_console
|
30
|
+
console.show
|
31
|
+
end
|
32
|
+
|
33
|
+
def field_names
|
34
|
+
result = []
|
35
|
+
count = field_count
|
36
|
+
0.upto(count-1) do |i|
|
37
|
+
result << ole_obj.getNthFieldName(i)
|
38
|
+
end
|
39
|
+
result
|
40
|
+
end
|
41
|
+
|
42
|
+
def export_as_fdf(name)
|
43
|
+
end
|
44
|
+
|
45
|
+
def import_fdf(path)
|
46
|
+
end
|
47
|
+
|
48
|
+
|
49
|
+
def fields_hash
|
50
|
+
result = {}
|
51
|
+
field_names.each_with_object( result ) do |name, h|
|
52
|
+
h[name] = get_field(name)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
|
57
|
+
# // Enumerate through all of the fields in the document.
|
58
|
+
# for (var i = 0; i < this.numFields; i++)
|
59
|
+
# console.println("Field[" + i + "] = " + this.getNthFieldName(i));
|
60
|
+
|
61
|
+
def set_field(name,value)
|
62
|
+
begin
|
63
|
+
field = find_field(name)
|
64
|
+
field.Value = value.to_s if field
|
65
|
+
rescue
|
66
|
+
require 'pry'
|
67
|
+
binding.pry
|
68
|
+
nil
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def get_field(name)
|
73
|
+
field = find_field(name)
|
74
|
+
field.Value if field
|
75
|
+
end
|
76
|
+
|
77
|
+
def field_count
|
78
|
+
ole_obj.numFields().to_int
|
79
|
+
end
|
80
|
+
|
81
|
+
def clear_form
|
82
|
+
ole_obj.resetForm
|
83
|
+
end
|
84
|
+
|
85
|
+
def fill_form(hash)
|
86
|
+
clear_form
|
87
|
+
hash.each do |k,v|
|
88
|
+
set_field(k,v)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
end
|
93
|
+
|
94
|
+
end
|
data/lib/acrobat/pdoc.rb
ADDED
@@ -0,0 +1,92 @@
|
|
1
|
+
module Acrobat
|
2
|
+
|
3
|
+
class PDoc
|
4
|
+
|
5
|
+
attr_reader :app, :ole_obj, :path
|
6
|
+
|
7
|
+
def initialize(app,ole,path=nil)
|
8
|
+
@app = app
|
9
|
+
@ole_obj = ole
|
10
|
+
@path = path
|
11
|
+
end
|
12
|
+
|
13
|
+
def show(name = nil)
|
14
|
+
name = name || ole_obj.GetFileName
|
15
|
+
ole_obj.OpenAVDoc(name)
|
16
|
+
end
|
17
|
+
|
18
|
+
# @return [Fixnum] the number of pages in the pdf
|
19
|
+
def page_count
|
20
|
+
ole_obj.GetNumPages()
|
21
|
+
end
|
22
|
+
|
23
|
+
# merges the doc to the
|
24
|
+
# @overload merge(doc)
|
25
|
+
# @param doc [String] the String path of a pdf file
|
26
|
+
# @overload merge(doc)
|
27
|
+
# @param doc [PDoc] an open PDoc to merge
|
28
|
+
# @return [Boolean] whether the doc was merged correctly
|
29
|
+
def merge(doc)
|
30
|
+
case doc
|
31
|
+
when PDoc
|
32
|
+
merge_pdoc(doc)
|
33
|
+
when String, Pathname
|
34
|
+
docpath = Pathname(doc)
|
35
|
+
raise 'File not found' unless docpath.file?
|
36
|
+
doc2 = app.open(docpath)
|
37
|
+
merge_pdoc(doc2)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def fill_and_save(results,name: nil, dir: nil)
|
42
|
+
fill_form(results)
|
43
|
+
is_saved = save_as(name: name, dir: dir)
|
44
|
+
puts "saved file: %s" % [dir + name] if is_saved
|
45
|
+
true
|
46
|
+
end
|
47
|
+
|
48
|
+
def default_dir(d)
|
49
|
+
Pathname(dir || Pathname.getw)
|
50
|
+
end
|
51
|
+
|
52
|
+
def save_as(name:nil, dir:nil)
|
53
|
+
name = path.basename unless name
|
54
|
+
dir = Pathname(dir || Pathname.getwd)
|
55
|
+
dir.mkpath
|
56
|
+
windows_path = FileSystemObject.windows_path(dir + name )
|
57
|
+
ole_obj.save(ACRO::PDSaveFull | ACRO::PDSaveCopy,windows_path)
|
58
|
+
end
|
59
|
+
|
60
|
+
def name
|
61
|
+
ole_obj.GetFileName
|
62
|
+
end
|
63
|
+
|
64
|
+
def close
|
65
|
+
ole_obj.Close rescue nil
|
66
|
+
end
|
67
|
+
|
68
|
+
|
69
|
+
def jso
|
70
|
+
@jso ||= Jso.new(self,ole_obj.GetJSObject)
|
71
|
+
end
|
72
|
+
|
73
|
+
def field_names
|
74
|
+
jso.field_names
|
75
|
+
end
|
76
|
+
|
77
|
+
def fill_form(results)
|
78
|
+
jso.fill_form(results)
|
79
|
+
end
|
80
|
+
|
81
|
+
protected
|
82
|
+
def merge_pdoc(doc)
|
83
|
+
begin
|
84
|
+
merged = ole_obj.InsertPages(page_count - 1, doc.ole_obj, 0, doc.page_count, true)
|
85
|
+
return merged
|
86
|
+
rescue
|
87
|
+
return false
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acrobat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dominic Sisneros
|
@@ -186,7 +186,10 @@ dependencies:
|
|
186
186
|
- - "~>"
|
187
187
|
- !ruby/object:Gem::Version
|
188
188
|
version: '3.16'
|
189
|
-
description:
|
189
|
+
description: |-
|
190
|
+
<div class="paragraph">
|
191
|
+
<p>The acrobat gem is a library that uses WIN32OLE to automate pdf functions. Adobe Reader or Adobe Acrobat must be installed and then you can fill forms and merge documents</p>
|
192
|
+
</div>
|
190
193
|
email:
|
191
194
|
- dsisnero@gmail.com
|
192
195
|
executables:
|
@@ -207,6 +210,8 @@ files:
|
|
207
210
|
- bin/acrobat
|
208
211
|
- lib/acrobat.rb
|
209
212
|
- lib/acrobat/app.rb
|
213
|
+
- lib/acrobat/jso.rb
|
214
|
+
- lib/acrobat/pdoc.rb
|
210
215
|
- test/acrobat_test.rb
|
211
216
|
- test/test_helper.rb
|
212
217
|
homepage: https://github.com/dsisnero/acrobat
|
@@ -235,5 +240,6 @@ rubyforge_project:
|
|
235
240
|
rubygems_version: 2.6.10
|
236
241
|
signing_key:
|
237
242
|
specification_version: 4
|
238
|
-
summary:
|
243
|
+
summary: <div class="paragraph"> <p>The acrobat gem is a library that uses WIN32OLE
|
244
|
+
to automate pdf functions
|
239
245
|
test_files: []
|
metadata.gz.sig
CHANGED
Binary file
|