acrobat 0.0.8 → 0.2.0
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/.standard.yml +3 -0
- data/CHANGELOG.md +5 -0
- data/CODE_OF_CONDUCT.md +132 -0
- data/Guardfile +28 -30
- data/{LICENSE.adoc → LICENSE.txt} +21 -22
- data/README.md +107 -0
- data/Rakefile +10 -48
- data/examples/6030.17.antenna.pdf +0 -0
- data/examples/6030.17.cm300.tx.pdf +0 -0
- data/examples/form_field.rb +21 -0
- data/examples/merge.rb +11 -0
- data/lib/acrobat/app.rb +42 -57
- data/lib/acrobat/jso.rb +18 -25
- data/lib/acrobat/pdoc.rb +49 -42
- data/lib/acrobat/version.rb +5 -0
- data/lib/acrobat.rb +14 -17
- data/samples_other/background.js +40 -0
- data/samples_other/find_word.vb +440 -0
- data/samples_other/form.vb +393 -0
- data/vba/overlay.vba +40 -0
- metadata +34 -217
- checksums.yaml.gz.sig +0 -0
- data/.autotest +0 -25
- data/.gitignore +0 -32
- data/History.adoc +0 -6
- data/Manifest.txt +0 -15
- data/README.adoc +0 -117
- data/bin/acrobat +0 -3
- data/test/acrobat_test.rb +0 -36
- data/test/test_helper.rb +0 -13
- data.tar.gz.sig +0 -1
- metadata.gz.sig +0 -2
data/lib/acrobat/jso.rb
CHANGED
@@ -1,17 +1,15 @@
|
|
1
1
|
module Acrobat
|
2
|
-
|
3
|
-
class Jso
|
4
|
-
|
2
|
+
class Jso
|
5
3
|
attr_reader :doc, :ole_obj
|
6
4
|
|
7
|
-
def initialize(doc,ole)
|
5
|
+
def initialize(doc, ole)
|
8
6
|
@doc = doc
|
9
7
|
@ole_obj = ole
|
10
8
|
end
|
11
9
|
|
12
10
|
def find_field(name_or_number)
|
13
11
|
case name_or_number
|
14
|
-
when String,Symbol
|
12
|
+
when String, Symbol
|
15
13
|
ole_get_field(name_or_number.to_s)
|
16
14
|
when Number
|
17
15
|
ole_get_field(name_or_number)
|
@@ -33,7 +31,7 @@ module Acrobat
|
|
33
31
|
def field_names
|
34
32
|
result = []
|
35
33
|
count = field_count
|
36
|
-
0.upto(count-1) do |i|
|
34
|
+
0.upto(count - 1) do |i|
|
37
35
|
result << ole_obj.getNthFieldName(i)
|
38
36
|
end
|
39
37
|
result
|
@@ -45,37 +43,34 @@ module Acrobat
|
|
45
43
|
def import_fdf(path)
|
46
44
|
end
|
47
45
|
|
48
|
-
|
49
46
|
def fields_hash
|
50
47
|
result = {}
|
51
|
-
field_names.each_with_object(
|
48
|
+
field_names.each_with_object(result) do |name, h|
|
52
49
|
h[name] = get_field(name)
|
53
50
|
end
|
54
51
|
end
|
55
52
|
|
56
53
|
|
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));
|
54
|
+
# // Enumerate through all of the fields in the document.
|
55
|
+
# for (var i = 0; i < this.numFields; i++)
|
56
|
+
# console.println("Field[" + i + "] = " + this.getNthFieldName(i));
|
60
57
|
|
61
|
-
def set_field(name,value)
|
62
|
-
begin
|
58
|
+
def set_field(name, value)
|
63
59
|
field = find_field(name)
|
64
60
|
field.Value = value.to_s if field
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
end
|
61
|
+
rescue
|
62
|
+
require "pry"
|
63
|
+
binding.pry
|
64
|
+
nil
|
70
65
|
end
|
71
66
|
|
72
67
|
def get_field(name)
|
73
68
|
field = find_field(name)
|
74
|
-
field
|
69
|
+
field&.Value
|
75
70
|
end
|
76
71
|
|
77
72
|
def field_count
|
78
|
-
ole_obj.numFields
|
73
|
+
ole_obj.numFields.to_int
|
79
74
|
end
|
80
75
|
|
81
76
|
def clear_form
|
@@ -84,11 +79,9 @@ module Acrobat
|
|
84
79
|
|
85
80
|
def fill_form(hash)
|
86
81
|
clear_form
|
87
|
-
hash.each do |k,v|
|
88
|
-
set_field(k,v)
|
82
|
+
hash.each do |k, v|
|
83
|
+
set_field(k, v)
|
89
84
|
end
|
90
85
|
end
|
91
|
-
|
92
|
-
end
|
93
|
-
|
86
|
+
end
|
94
87
|
end
|
data/lib/acrobat/pdoc.rb
CHANGED
@@ -1,17 +1,15 @@
|
|
1
1
|
module Acrobat
|
2
|
-
|
3
2
|
class PDoc
|
4
|
-
|
5
3
|
attr_reader :app, :ole_obj, :path
|
6
4
|
|
7
|
-
def initialize(app,ole,path=nil)
|
5
|
+
def initialize(app, ole, path = nil)
|
8
6
|
@app = app
|
9
7
|
@ole_obj = ole
|
10
8
|
@path = path
|
11
9
|
end
|
12
10
|
|
13
11
|
def show(name = nil)
|
14
|
-
name
|
12
|
+
name ||= ole_obj.GetFileName
|
15
13
|
ole_obj.OpenAVDoc(name)
|
16
14
|
end
|
17
15
|
|
@@ -21,7 +19,7 @@ module Acrobat
|
|
21
19
|
end
|
22
20
|
|
23
21
|
def last_page
|
24
|
-
page_count
|
22
|
+
page_count(-1)
|
25
23
|
end
|
26
24
|
|
27
25
|
# merges the doc to the
|
@@ -30,9 +28,9 @@ module Acrobat
|
|
30
28
|
# @overload merge(doc)
|
31
29
|
# @param doc [PDoc] an open PDoc to merge
|
32
30
|
# @return [Boolean] whether the doc was merged correctly
|
33
|
-
def merge(doc
|
31
|
+
def merge(doc)
|
34
32
|
src = open_pdoc(doc)
|
35
|
-
merge_pdoc(src
|
33
|
+
merge_pdoc(src)
|
36
34
|
end
|
37
35
|
|
38
36
|
# opens and/or returns PDoc
|
@@ -42,25 +40,34 @@ module Acrobat
|
|
42
40
|
# @param doc [PDoc] an already open PDoc file
|
43
41
|
# @return doc [PDOC] the opened PDoc
|
44
42
|
def open_pdoc(doc)
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
def fill_and_save(results,name: nil, dir: nil)
|
43
|
+
case doc
|
44
|
+
when PDoc
|
45
|
+
doc
|
46
|
+
when String, Pathname
|
47
|
+
docpath = Pathname(doc)
|
48
|
+
raise "File not found" unless docpath.file?
|
49
|
+
app.open(docpath)
|
50
|
+
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def fill_and_save(results, name: nil, dir: nil)
|
58
55
|
fill_form(results)
|
59
56
|
is_saved = save_as(name: name, dir: dir)
|
60
57
|
puts "saved file: %s" % [dir + name] if is_saved
|
61
58
|
true
|
62
59
|
end
|
63
60
|
|
61
|
+
def insert_pages(src:, insert_after: nil, src_page_start: nil, src_page_end: nil)
|
62
|
+
insert_hash = {"nPage" => insert_after - 1}
|
63
|
+
insert_hash["nStart"] = src_page_start + 1 if src_page_start
|
64
|
+
insert_hash["nEnd"] = src_page_end + 1 if src_page_end
|
65
|
+
ole_obj.InsertPages(**insert_hash)
|
66
|
+
end
|
67
|
+
|
68
|
+
def prepend_pages(src_path:, src_page_start: 1, src_page_end: nil)
|
69
|
+
insert_pages(insert_after: 0, src_path: src_path, src_page_start: src_page_start, src_page_end: src_page_end)
|
70
|
+
end
|
64
71
|
|
65
72
|
# returns [Pathname] of d
|
66
73
|
# @param dir [String, Nil] the String path
|
@@ -69,12 +76,12 @@ module Acrobat
|
|
69
76
|
Pathname(dir || Pathname.getw)
|
70
77
|
end
|
71
78
|
|
72
|
-
def save_as(name,dir:nil)
|
73
|
-
name
|
79
|
+
def save_as(name, dir: nil)
|
80
|
+
name ||= path.basename
|
74
81
|
dir = Pathname(dir || Pathname.getwd)
|
75
82
|
dir.mkpath
|
76
|
-
windows_path = FileSystemObject.windows_path(dir + name
|
77
|
-
ole_obj.save(ACRO::PDSaveFull | ACRO::PDSaveCopy,windows_path)
|
83
|
+
windows_path = FileSystemObject.windows_path(dir + name)
|
84
|
+
ole_obj.save(ACRO::PDSaveFull | ACRO::PDSaveCopy, windows_path)
|
78
85
|
end
|
79
86
|
|
80
87
|
def name
|
@@ -82,19 +89,21 @@ module Acrobat
|
|
82
89
|
end
|
83
90
|
|
84
91
|
def close
|
85
|
-
ole_obj.Close
|
92
|
+
ole_obj.Close
|
93
|
+
rescue
|
94
|
+
nil
|
86
95
|
end
|
87
96
|
|
88
|
-
def replace_pages(doc, start: 0, replace_start: 0, num_of_pages: 1,merge_annotations: true)
|
97
|
+
def replace_pages(doc, start: 0, replace_start: 0, num_of_pages: 1, merge_annotations: true)
|
89
98
|
src = open_pdoc(doc)
|
90
99
|
|
91
|
-
ole_obj.ReplacePages(start,src.ole_obj,replace_start,num_of_pages,merge_annotations)
|
100
|
+
ole_obj.ReplacePages(start, src.ole_obj, replace_start, num_of_pages, merge_annotations)
|
92
101
|
end
|
93
102
|
|
94
103
|
# return the instance of JSO object
|
95
104
|
# @return [Jso] a WIN32OLE wrapped Jso object 'javascript object'
|
96
105
|
def jso
|
97
|
-
@jso ||= Jso.new(self,ole_obj.GetJSObject)
|
106
|
+
@jso ||= Jso.new(self, ole_obj.GetJSObject)
|
98
107
|
end
|
99
108
|
|
100
109
|
# return the field_names of the pdf form
|
@@ -107,21 +116,19 @@ module Acrobat
|
|
107
116
|
end
|
108
117
|
|
109
118
|
protected
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
end
|
121
|
-
rescue
|
122
|
-
return false
|
119
|
+
|
120
|
+
def merge_pdoc(doc, **options)
|
121
|
+
if options
|
122
|
+
start = options[:start]
|
123
|
+
start_page
|
124
|
+
options[:pages]
|
125
|
+
ole_obj.InsertPages(start, doc.ole_obj, 0, doc.page_count, true)
|
126
|
+
else
|
127
|
+
ole_obj.InsertPages(page_count - 1, doc.ole_obj, 0, doc.page_count, true)
|
128
|
+
|
123
129
|
end
|
130
|
+
rescue
|
131
|
+
false
|
124
132
|
end
|
125
133
|
end
|
126
|
-
|
127
134
|
end
|
data/lib/acrobat.rb
CHANGED
@@ -1,32 +1,30 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "win32ole"
|
2
|
+
require "acrobat/app"
|
3
3
|
|
4
4
|
|
5
5
|
module Acrobat
|
6
|
-
VERSION = "0.0
|
6
|
+
VERSION = "0.1.0"
|
7
7
|
end
|
8
8
|
|
9
9
|
|
10
|
-
if $0 ==
|
11
|
-
require
|
10
|
+
if $0 == __FILE__
|
11
|
+
require "pry"
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
antenna_form = data + 'faa.6030.17.antenna.pdf'
|
13
|
+
Acrobat::App.run do |app|
|
14
|
+
data = Pathname(__dir__).parent + "data"
|
15
|
+
antenna_form = data + "faa.6030.17.antenna.pdf"
|
17
16
|
|
18
17
|
|
19
18
|
doc1 = app.open(antenna_form)
|
20
19
|
doc1.show
|
21
20
|
|
22
|
-
fields = {
|
23
|
-
|
24
|
-
|
25
|
-
}
|
21
|
+
fields = {"city" => "OGD", "state" => "Utah",
|
22
|
+
"lid" => "OGD",
|
23
|
+
"fac" => "RTR"}
|
26
24
|
doc1.fill_form(fields)
|
27
25
|
|
28
26
|
|
29
|
-
doc1.save_as(name:
|
27
|
+
doc1.save_as(name: "ogd.rtr.pdf", dir: "tmp")
|
30
28
|
binding.pry
|
31
29
|
jso = doc1.jso
|
32
30
|
jso.show_console
|
@@ -36,13 +34,12 @@ if $0 == __FILE__
|
|
36
34
|
|
37
35
|
|
38
36
|
|
39
|
-
doc2 = app.open(data +
|
37
|
+
doc2 = app.open(data + "faa.6030.17.cm300.uhf.tx.pdf")
|
40
38
|
doc2.show
|
41
39
|
doc2.fill_form(fields)
|
42
40
|
|
43
41
|
doc1.merge(doc2)
|
44
|
-
doc1.save_as(name:
|
45
|
-
|
42
|
+
doc1.save_as(name: "ogd.merged_antenna_tx.pdf", dir: "tmp")
|
46
43
|
end
|
47
44
|
|
48
45
|
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
Private Function ApplyBackgroundToPDF(BasePDF As String, BackgroundPDF As String)
|
2
|
+
Dim pdDoc As Acrobat.CAcroPDDoc
|
3
|
+
Dim pdTemplate As Acrobat.CAcroPDDoc
|
4
|
+
Dim template As Variant
|
5
|
+
Dim lngPage As Long
|
6
|
+
|
7
|
+
'Open base document
|
8
|
+
Set pdDoc = CreateObject("AcroExch.PDDoc")
|
9
|
+
pdDoc.Open BasePDF
|
10
|
+
DoEvents
|
11
|
+
|
12
|
+
'Open background document
|
13
|
+
Set pdTemplate = CreateObject("AcroExch.PDDoc")
|
14
|
+
pdTemplate.Open BackgroundPDF
|
15
|
+
DoEvents
|
16
|
+
|
17
|
+
'Add background document to base document
|
18
|
+
pdDoc.InsertPages pdDoc.GetNumPages - 1, pdTemplate, 0, 1, 0
|
19
|
+
|
20
|
+
'Create a template from the inserted background document
|
21
|
+
Set template = pdDoc.GetJSObject.CreateTemplate("background", pdDoc.GetNumPages - 1)
|
22
|
+
|
23
|
+
'Place the template as a background to all pages
|
24
|
+
For lngPage = 0 To pdDoc.GetNumPages - 2
|
25
|
+
template.Spawn lngPage, True, True
|
26
|
+
Next
|
27
|
+
|
28
|
+
'Delete last page (used for template creation purposes only)
|
29
|
+
pdDoc.DeletePages pdDoc.GetNumPages - 1, pdDoc.GetNumPages - 1
|
30
|
+
|
31
|
+
'Save
|
32
|
+
pdDoc.Save 1, BasePDF
|
33
|
+
|
34
|
+
'Close & Destroy Objects
|
35
|
+
pdDoc.Close
|
36
|
+
Set pdDoc = Nothing
|
37
|
+
|
38
|
+
pdTemplate.Close
|
39
|
+
Set pdTemplate = Nothing
|
40
|
+
End Function
|