acrobat 0.2.0 → 0.3.0

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: c0dbaa90ebab7df2e5eeb70d4bfff5a75448134d3efa100a45fe172080b85df8
4
- data.tar.gz: f9b04d87101a45da0fdc675ea98a54c2eb73abd723e10844078d7d0474799947
3
+ metadata.gz: aaad7882d94357e1ef66a4c97145b069b0d807706439e46a34caf9beb5c9233d
4
+ data.tar.gz: 0c307460f2af09f599949579d9ede54124f1a0dab4435cbbe8f6dc61a8e0633c
5
5
  SHA512:
6
- metadata.gz: b306b051e57f3a9224d3cdb9b7f57df2b07d99533eac4d9dcf4d6bf59836d78a93dcafac356e8ea15ab76c9fe7fb847e67ff245d76239337e85b4224675571b7
7
- data.tar.gz: 9811e4ca8066d17b88b3e010a162ade3b10cae13e3c322e3c9db7705702e9d7b5c324b5e6d45146c9531620d586ed2506e0a723d589a47e447e679c22731d40c
6
+ metadata.gz: 5fcc79f0eaa847050e9a82c68ed6617db4d2aff3b981262db1b924c3e12846b640d4cd58c48bc40c27237af5f64e84f9e2313962063e5756dcd152c372e7ee17
7
+ data.tar.gz: 76b5a080702086907a970d73ce6d6d400e43e22bda378498fb1880225045508bfc07f5669bbc37fa895cab2a8b733677968e63ba8e17c69f31923e92f30c4d2d
@@ -0,0 +1,2 @@
1
+ require:
2
+ - rubocop-minitest
@@ -0,0 +1,4 @@
1
+ Lint/Debugger: # don't leave binding.pry
2
+ Enabled: true
3
+ Exclude: []
4
+
data/.rubocop.yml ADDED
@@ -0,0 +1,23 @@
1
+ inherit_mode:
2
+ merge:
3
+ - Exclude
4
+
5
+ require:
6
+ - standard
7
+ - standard-custom
8
+ - standard-performance
9
+ - rubocop-performance
10
+
11
+ inherit_gem:
12
+ standard: config/base.yml
13
+ standard-performance: config/base.yml
14
+ standard-custom: config/base.yml
15
+
16
+ inherit_from:
17
+ - .rubocop/minitest.yml
18
+ - .rubocop/strict.yml
19
+
20
+ AllCops:
21
+ NewCops: disable
22
+ SuggestExtensions: false
23
+ TargetRubyVersion: 3.4
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2024 dsisnero
3
+ Copyright (c) 2024 Dominic Sisneros
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/exe/acrobat ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "acrobat"
@@ -0,0 +1,6 @@
1
+ source "https://rubygems.org" do
2
+ gem "standard", "~> 1.28"
3
+
4
+ gem "rubocop-minitest"
5
+
6
+ end
data/lib/acrobat/app.rb CHANGED
@@ -1,5 +1,8 @@
1
+ # rbs_inline: enable
2
+
1
3
  require "win32ole"
2
4
  require_relative "pdoc"
5
+ require_relative "avdoc"
3
6
  require_relative "jso"
4
7
 
5
8
  module Acrobat
@@ -27,22 +30,28 @@ module ACRO; end
27
30
  module Acrobat
28
31
  class App
29
32
  # [WIN32_OLE] ole_obj
30
- attr_reader :ole_obj
31
-
32
- # the wrapped [PDoc] PDoc object
33
- attr_reader :pdoc
33
+ attr_reader :ole_obj # :WIN32OLE
34
34
 
35
- # Initialize the
36
- # @return [App] return an instance of App
37
- def initialize
35
+ def initialize # : Void
38
36
  @ole_obj = WIN32OLE.new("AcroExch.App")
37
+ unless @ole_obj
38
+ @ole_obj = WIN32OLE.connect("AcroExch.App")
39
+ end
39
40
  load_constants(@ole_obj)
40
41
  @docs = []
41
42
  end
42
43
 
44
+ def self.close(path)
45
+ name = File.basename(path)
46
+ run do |app|
47
+ av = app.avdocs.find{|a| a.pdoc_name == name}
48
+ av&.close
49
+ end
50
+ end
51
+
52
+
53
+
43
54
  # Runs the adobe app and quits at the end
44
- # @yield app [App]
45
- #
46
55
  # @example
47
56
  # Acrobat::App.run do |app|
48
57
  # doc = app.open('doc.pdf')
@@ -50,19 +59,18 @@ module Acrobat
50
59
  # doc.save_as('filled.pdf')
51
60
  # end
52
61
  #
53
- # @return nil
62
+ # @rbs return Void
54
63
  def self.run
55
64
  the_app = new
56
65
  yield the_app
57
66
  ensure
58
67
  the_app&.quit
59
68
  GC.start
60
- nil
61
69
  end
62
70
 
63
- def self.replace_pages(src, replacement, output_name:, **opts)
71
+ def self.replace_pages(pdf_file, replacement, output_name:, **opts)
64
72
  run do |app|
65
- app.open(src) do |doc|
73
+ app.open(pdf_file) do |doc|
66
74
  doc.replace_pages(replacement, **opts)
67
75
  doc.save_as(output_name)
68
76
  end
@@ -73,30 +81,51 @@ module Acrobat
73
81
  # @example
74
82
  # Acrobat::App.fill_form(myform.pdf, output_name: 'filled.pdf
75
83
  # , update_hash: { name: 'dom', filled_date: 1/20/2013
76
- # @param doc [String] the String path of a fillable pdf file
77
- # @param output_name [String] the name of the saved filled pdf file
78
- # @param update_hash [Hash] the hash with updates
79
- def self.fill_form(form, output_name:, update_hash:)
84
+ # @rbs pdf_form: String -- the String path of a fillable pdf file
85
+ # @rbs output_name: String -- the name of the saved filled pdf file
86
+ # @rbs update_hash: Hash -- the hash with updates
87
+ def self.fill_form(pdf_form, output_name:, update_hash:)
80
88
  run do |app|
81
- doc = app.open(form)
89
+ doc = app.open(pdf_form)
82
90
  doc.fill_form(update_hash)
83
91
  doc.save_as(output_name)
84
92
  end
85
93
  end
86
94
 
95
+ # @rbs return Array[AvDoc]
96
+ # @rbs &: (AvDoc) -> Void
97
+ def avdocs
98
+ count = ole_obj.GetNumAVDocs
99
+ return [] if count == 0
100
+ return to_enum(:avdocs) unless block_given?
101
+ av_array = []
102
+ count.times do |i|
103
+ ole = ole_obj.GetAVDoc(i)
104
+ raise "Wrong index for GetNumAVDocs #{i -1}" unless ole
105
+ av = AvDoc.new(ole)
106
+ if block_given?
107
+ yield av
108
+ else
109
+ av_array << av
110
+ end
111
+ end
112
+ av_array unless block_given?
113
+ end
114
+
115
+
87
116
  # show the Adobe Acrobat application
88
- def show
117
+ def show # : Void
89
118
  ole_obj.Show
90
119
  end
91
120
 
92
121
  # hide the Adobe Acrobat application
93
- def hide
122
+ def hide # : Void
94
123
  ole_obj.Hide
95
124
  end
96
125
 
97
126
  # Finds the pdfs in a dir
98
- # @param dir [String] the directory to find pdfs in
99
- # @return [Array] of pdf files
127
+ # @rbs dir: String -- the directory to find pdfs in
128
+ # @rbs return Array[Pathname] -- of pdf files
100
129
  def find_pdfs_in_dir(dir)
101
130
  Pathname.glob(dir + "/*.pdf")
102
131
  end
@@ -113,10 +142,10 @@ module Acrobat
113
142
  end
114
143
 
115
144
  # merges the pdfs in directory
116
- # @param dir [String] the path of the directory
117
- # @param name [String,Nil] the name of the returned pdf file
145
+ # @rbs dir: String -- the path of the directory
146
+ # @rbs name: String | Nil -- the name of the returned pdf file
118
147
  # if the name is nil, the name is "merged.pdf"
119
- # @param output_dir [String,Nil] the name of the output dir
148
+ # @rbs output_dir: String | Nil -- the name of the output dir
120
149
  # if the output_dir is nil, the output dir is the dir param
121
150
  # return [Boolean] if the merge was successful or not
122
151
  def merge_pdfs_in_dir(dir, name: nil, output_dir: nil)
@@ -127,7 +156,7 @@ module Acrobat
127
156
 
128
157
  # quit the Adobe App.
129
158
  # closes the open adobe documents and quits the program
130
- # @return nil
159
+ # @rbs return nil
131
160
  def quit
132
161
  begin
133
162
  docs.each { |d| d.close }
@@ -141,21 +170,17 @@ module Acrobat
141
170
  attr_reader :docs
142
171
 
143
172
  # open the file.
144
- # @param file [String #to_path]
145
- # @return [PDoc] the open file as a Pdoc instance
173
+ # @rbs file: String | Pathname -- #to_path
174
+ # @rbs &: (PDoc) -> Nil
175
+ # @rbs return PDoc -- the open file as a Pdoc instance
146
176
  def open(file)
147
- filepath = Pathname(file).expand_path
148
- raise FileNotFound.new(filepath) unless filepath.file?
149
- pdoc = WIN32OLE.new("AcroExch.PDDoc")
150
- is_opened = pdoc.open FileSystemObject.windows_path(filepath)
151
- doc = PDoc.new(self, pdoc, filepath) if is_opened
152
- docs << doc if is_opened
177
+ doc = PDoc.from_path(file)
178
+ docs << doc
153
179
  return doc unless block_given?
154
180
  begin
155
181
  yield doc
156
182
  ensure
157
183
  doc.close
158
- nil
159
184
  end
160
185
  end
161
186
 
@@ -0,0 +1,22 @@
1
+ module Acrobat
2
+ class AvDoc
3
+ attr_reader :ole_obj #: WIN32OLE
4
+
5
+ attr_reader :pdoc_name #: String
6
+
7
+ def initialize( ole)
8
+ @ole_obj = ole
9
+ @pdoc_name = ole.GetPDDoc.GetFileName
10
+ end
11
+
12
+ # Close the AvDoc
13
+ # @rbs save: Boolean -- if true asks to save if false closes without saving
14
+ def close(save = false)
15
+ ole_save = save ? 0 : 1
16
+ @ole_obj.Close(ole_save)
17
+ @ole_obj = nil
18
+ true
19
+ end
20
+
21
+ end
22
+ end
data/lib/acrobat/pdoc.rb CHANGED
@@ -1,9 +1,19 @@
1
1
  module Acrobat
2
2
  class PDoc
3
- attr_reader :app, :ole_obj, :path
3
+ attr_reader :ole_obj
4
+
5
+ attr_reader :path #: Path | Nil
4
6
 
5
- def initialize(app, ole, path = nil)
6
- @app = app
7
+ def self.from_path(path)
8
+ filepath = Pathname(path).expand_path
9
+ raise FileNotFound.new(filepath) unless filepath.file?
10
+ pdoc = WIN32OLE.new("AcroExch.PDDoc")
11
+ result = pdoc.open FileSystemObject.windows_path(filepath)
12
+ raise "Error opening Acrobat::Pdoc from #{filepath}" if result == 0
13
+ new(pdoc, path)
14
+ end
15
+
16
+ def initialize(ole, path = nil)
7
17
  @ole_obj = ole
8
18
  @path = path
9
19
  end
@@ -13,41 +23,32 @@ module Acrobat
13
23
  ole_obj.OpenAVDoc(name)
14
24
  end
15
25
 
16
- # @return [Fixnum] the number of pages in the pdf
26
+ # @rbs return Fixnum -- the number of pages in the pdf
17
27
  def page_count
18
28
  ole_obj.GetNumPages()
19
29
  end
20
30
 
21
- def last_page
22
- page_count(-1)
31
+ def last_page # : Fixnum
32
+ page_count - 1
23
33
  end
24
34
 
25
35
  # merges the doc to the
26
- # @overload merge(doc)
27
- # @param doc [String] the String path of a pdf file
28
- # @overload merge(doc)
29
- # @param doc [PDoc] an open PDoc to merge
30
- # @return [Boolean] whether the doc was merged correctly
36
+ # @rbs doc: PDoc|String|Pathname -- an open PDoc to merge or filename
37
+ # @rbs return Boolean -- whether the doc was merged correctly
31
38
  def merge(doc)
32
- src = open_pdoc(doc)
33
- merge_pdoc(src)
39
+ src = open_ole_pdoc(doc)
40
+ ole_insert_pages(src, self_start_page: last_page, merge_doc_page_start: 0,
41
+ number_pages: src.page_count, bookmarks: true)
34
42
  end
35
43
 
36
44
  # opens and/or returns PDoc
37
- # @overload open(doc)
38
- # @param doc [String] the String path of a pdf file
39
- # @overload open(PDoc] and open PDoc file
40
- # @param doc [PDoc] an already open PDoc file
41
- # @return doc [PDOC] the opened PDoc
42
- def open_pdoc(doc)
45
+ # @rbs doc: String|Pathname|Pdoc -- the String path of a pdf file
46
+ def open_ole_pdoc(doc) # : Pdoc
43
47
  case doc
44
48
  when PDoc
45
49
  doc
46
50
  when String, Pathname
47
- docpath = Pathname(doc)
48
- raise "File not found" unless docpath.file?
49
- app.open(docpath)
50
-
51
+ self.class.from_path(doc)
51
52
  end
52
53
  end
53
54
 
@@ -58,20 +59,13 @@ module Acrobat
58
59
  true
59
60
  end
60
61
 
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
62
  def prepend_pages(src_path:, src_page_start: 1, src_page_end: nil)
69
63
  insert_pages(insert_after: 0, src_path: src_path, src_page_start: src_page_start, src_page_end: src_page_end)
70
64
  end
71
65
 
72
66
  # returns [Pathname] of d
73
- # @param dir [String, Nil] the String path
74
- # @return dir [Pathname] Pathname of dir or of working directory
67
+ # @rbs dir: [String, Nil] the String path
68
+ # @rbs return dir [Pathname] Pathname of dir or of working directory
75
69
  def default_dir(dir)
76
70
  Pathname(dir || Pathname.getw)
77
71
  end
@@ -88,20 +82,21 @@ module Acrobat
88
82
  ole_obj.GetFileName
89
83
  end
90
84
 
91
- def close
92
- ole_obj.Close
85
+ def close # : Bool -- true if closes successfully
86
+ result = ole_obj.Close
87
+ result == -1
93
88
  rescue
94
- nil
89
+ false
95
90
  end
96
91
 
97
92
  def replace_pages(doc, start: 0, replace_start: 0, num_of_pages: 1, merge_annotations: true)
98
- src = open_pdoc(doc)
93
+ src = open_ole_pdoc(doc)
99
94
 
100
95
  ole_obj.ReplacePages(start, src.ole_obj, replace_start, num_of_pages, merge_annotations)
101
96
  end
102
97
 
103
98
  # return the instance of JSO object
104
- # @return [Jso] a WIN32OLE wrapped Jso object 'javascript object'
99
+ # @rbs return [Jso] a WIN32OLE wrapped Jso object 'javascript object'
105
100
  def jso
106
101
  @jso ||= Jso.new(self, ole_obj.GetJSObject)
107
102
  end
@@ -117,6 +112,32 @@ module Acrobat
117
112
 
118
113
  protected
119
114
 
115
+ def ole_insert_pages(merge_doc, self_start_page: 0, merge_doc_page_start: 0,
116
+ number_pages: nil, bookmarks: true)
117
+ bookmarks_ole = bookmarks ? 1 : 0
118
+ result = ole_obj.InsertPages(self_start_page, merge_doc.ole_obj, merge_doc_page_start, number_pages, bookmarks_ole)
119
+ if result == 0
120
+ raise "ole.InsertPages unable to insert merge doc #{merge_doc.name} into #{name}"
121
+ end
122
+ true
123
+ end
124
+
125
+ def ole_replace_pages(merge_doc, self_start_page: nil, merge_doc_page_start: nil,
126
+ number_pages: nil, bookmarks: true)
127
+ self_start_page_ole = self_start_page ? self_start_page - 1 : page_count - 1
128
+ page_start_ole = merge_doc_page_start ? merge_doc_page_start - 1 : merge_doc.GetNumPages - 1
129
+ number_pages_ole = number_pages || merge_doc
130
+ bookmarks_ole = bookmarks ? 1 : 0
131
+ result = ole_obj.ReplacePages(self_start_page_ole, merge_doc.ole, page_start_ole, number_pages_ole, bookmarks_ole)
132
+ end
133
+
134
+ def insert_pages(src:, insert_after: nil, src_page_start: nil, src_page_end: nil)
135
+ insert_hash = {"nPage" => insert_after - 1}
136
+ insert_hash["nStart"] = src_page_start + 1 if src_page_start
137
+ insert_hash["nEnd"] = src_page_end + 1 if src_page_end
138
+ ole_obj.InsertPages(**insert_hash)
139
+ end
140
+
120
141
  def merge_pdoc(doc, **options)
121
142
  if options
122
143
  start = options[:start]
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Acrobat
4
- VERSION = "0.2.0"
4
+ VERSION = "0.3.0"
5
5
  end
data/lib/acrobat.rb CHANGED
@@ -1,45 +1,9 @@
1
- require "win32ole"
2
- require "acrobat/app"
3
-
4
-
5
- module Acrobat
6
- VERSION = "0.1.0"
7
- end
8
-
9
-
10
- if $0 == __FILE__
11
- require "pry"
12
-
13
- Acrobat::App.run do |app|
14
- data = Pathname(__dir__).parent + "data"
15
- antenna_form = data + "faa.6030.17.antenna.pdf"
16
-
17
-
18
- doc1 = app.open(antenna_form)
19
- doc1.show
20
-
21
- fields = {"city" => "OGD", "state" => "Utah",
22
- "lid" => "OGD",
23
- "fac" => "RTR"}
24
- doc1.fill_form(fields)
25
-
26
-
27
- doc1.save_as(name: "ogd.rtr.pdf", dir: "tmp")
28
- binding.pry
29
- jso = doc1.jso
30
- jso.show_console
31
- puts "field count: #{jso.field_count}"
32
- puts "field names: \n#{jso.field_names}"
33
- binding.pry
34
-
35
-
36
-
37
- doc2 = app.open(data + "faa.6030.17.cm300.uhf.tx.pdf")
38
- doc2.show
39
- doc2.fill_form(fields)
40
-
41
- doc1.merge(doc2)
42
- doc1.save_as(name: "ogd.merged_antenna_tx.pdf", dir: "tmp")
43
- end
44
-
45
- end
1
+ # frozen_string_literal: true; -*- rbs_inline: enabled -*-
2
+
3
+ require_relative "acrobat/version"
4
+ require_relative "acrobat/app"
5
+
6
+ module Acrobat
7
+ class Error < StandardError; end
8
+ # Your code goes here...
9
+ end
@@ -0,0 +1,19 @@
1
+ # Download sources
2
+ sources:
3
+ - type: git
4
+ name: ruby/gem_rbs_collection
5
+ remote: https://github.com/ruby/gem_rbs_collection.git
6
+ revision: main
7
+ repo_dir: gems
8
+
9
+ # You can specify local directories as sources also.
10
+ # - type: local
11
+ # path: path/to/your/local/repository
12
+
13
+ # A directory to install the downloaded RBSs
14
+ path: .gem_rbs_collection
15
+
16
+ # gems:
17
+ # # If you want to avoid installing rbs files for gems, you can specify them here.
18
+ # - name: GEM_NAME
19
+ # ignore: true
@@ -0,0 +1,94 @@
1
+ # Generated from lib/acrobat/app.rb with RBS::Inline
2
+
3
+ module Acrobat
4
+ class FileNotFound < StandardError
5
+ def initialize: (untyped path) -> untyped
6
+ end
7
+ end
8
+
9
+ module FileSystemObject
10
+ def self.instance: () -> untyped
11
+
12
+ def self.windows_path: (untyped path) -> untyped
13
+ end
14
+
15
+ module ACRO
16
+ end
17
+
18
+ module Acrobat
19
+ class App
20
+ # [WIN32_OLE] ole_obj
21
+ attr_reader ole_obj: untyped
22
+
23
+ def initialize: () -> untyped
24
+
25
+ def self.close: (untyped path) -> untyped
26
+
27
+ # Runs the adobe app and quits at the end
28
+ # @example
29
+ # Acrobat::App.run do |app|
30
+ # doc = app.open('doc.pdf')
31
+ # doc.fill_form( city: 'City', state: 'ST')
32
+ # doc.save_as('filled.pdf')
33
+ # end
34
+ #
35
+ # @rbs return Void
36
+ def self.run: () -> Void
37
+
38
+ def self.replace_pages: (untyped pdf_file, untyped replacement, output_name: untyped, **untyped opts) -> untyped
39
+
40
+ # Fills the form with updates in a hash
41
+ # @example
42
+ # Acrobat::App.fill_form(myform.pdf, output_name: 'filled.pdf
43
+ # , update_hash: { name: 'dom', filled_date: 1/20/2013
44
+ # @rbs pdf_form: String -- the String path of a fillable pdf file
45
+ # @rbs output_name: String -- the name of the saved filled pdf file
46
+ # @rbs update_hash: Hash -- the hash with updates
47
+ def self.fill_form: (String pdf_form, output_name: String, update_hash: Hash) -> untyped
48
+
49
+ # @rbs return Array[AvDoc]
50
+ # @rbs &: (AvDoc) -> Void
51
+ def avdocs: () { (AvDoc) -> Void } -> Array[AvDoc]
52
+
53
+ # show the Adobe Acrobat application
54
+ def show: () -> untyped
55
+
56
+ # hide the Adobe Acrobat application
57
+ def hide: () -> untyped
58
+
59
+ # Finds the pdfs in a dir
60
+ # @rbs dir: String -- the directory to find pdfs in
61
+ # @rbs return Array[Pathname] -- of pdf files
62
+ def find_pdfs_in_dir: (String dir) -> Array[Pathname]
63
+
64
+ def merge_pdfs: (*untyped pdfs) -> untyped
65
+
66
+ # merges the pdfs in directory
67
+ # @rbs dir: String -- the path of the directory
68
+ # @rbs name: String | Nil -- the name of the returned pdf file
69
+ # if the name is nil, the name is "merged.pdf"
70
+ # @rbs output_dir: String | Nil -- the name of the output dir
71
+ # if the output_dir is nil, the output dir is the dir param
72
+ # return [Boolean] if the merge was successful or not
73
+ def merge_pdfs_in_dir: (String dir, ?name: String | Nil, ?output_dir: String | Nil) -> untyped
74
+
75
+ # quit the Adobe App.
76
+ # closes the open adobe documents and quits the program
77
+ # @rbs return nil
78
+ def quit: () -> nil
79
+
80
+ attr_reader docs: untyped
81
+
82
+ # open the file.
83
+ # @rbs file: String | Pathname -- #to_path
84
+ # @rbs &: (PDoc) -> Nil
85
+ # @rbs return PDoc -- the open file as a Pdoc instance
86
+ def open: (String | Pathname file) { (PDoc) -> Nil } -> PDoc
87
+
88
+ def form: () -> untyped
89
+
90
+ private
91
+
92
+ def load_constants: (untyped ole_obj) -> untyped
93
+ end
94
+ end
@@ -0,0 +1,15 @@
1
+ # Generated from lib/acrobat/avdoc.rb with RBS::Inline
2
+
3
+ module Acrobat
4
+ class AvDoc
5
+ attr_reader ole_obj: WIN32OLE
6
+
7
+ attr_reader pdoc_name: String
8
+
9
+ def initialize: (untyped ole) -> untyped
10
+
11
+ # Close the AvDoc
12
+ # @rbs save: Boolean -- if true asks to save if false closes without saving
13
+ def close: (?Boolean save) -> untyped
14
+ end
15
+ end
@@ -0,0 +1,37 @@
1
+ # Generated from lib/acrobat/jso.rb with RBS::Inline
2
+
3
+ module Acrobat
4
+ class Jso
5
+ attr_reader doc: untyped
6
+
7
+ attr_reader ole_obj: untyped
8
+
9
+ def initialize: (untyped doc, untyped ole) -> untyped
10
+
11
+ def find_field: (untyped name_or_number) -> untyped
12
+
13
+ def ole_get_field: (untyped field) -> untyped
14
+
15
+ def console: () -> untyped
16
+
17
+ def show_console: () -> untyped
18
+
19
+ def field_names: () -> untyped
20
+
21
+ def export_as_fdf: (untyped name) -> untyped
22
+
23
+ def import_fdf: (untyped path) -> untyped
24
+
25
+ def fields_hash: () -> untyped
26
+
27
+ def set_field: (untyped name, untyped value) -> untyped
28
+
29
+ def get_field: (untyped name) -> untyped
30
+
31
+ def field_count: () -> untyped
32
+
33
+ def clear_form: () -> untyped
34
+
35
+ def fill_form: (untyped hash) -> untyped
36
+ end
37
+ end
@@ -0,0 +1,63 @@
1
+ # Generated from lib/acrobat/pdoc.rb with RBS::Inline
2
+
3
+ module Acrobat
4
+ class PDoc
5
+ attr_reader ole_obj: untyped
6
+
7
+ attr_reader path: Path | Nil
8
+
9
+ def self.from_path: (untyped path) -> untyped
10
+
11
+ def initialize: (untyped ole, ?untyped path) -> untyped
12
+
13
+ def show: (?untyped name) -> untyped
14
+
15
+ # @rbs return Fixnum -- the number of pages in the pdf
16
+ def page_count: () -> Fixnum
17
+
18
+ def last_page: () -> untyped
19
+
20
+ # merges the doc to the
21
+ # @rbs doc: PDoc|String|Pathname -- an open PDoc to merge or filename
22
+ # @rbs return Boolean -- whether the doc was merged correctly
23
+ def merge: (PDoc | String | Pathname doc) -> Boolean
24
+
25
+ # opens and/or returns PDoc
26
+ # @rbs doc: String|Pathname|Pdoc -- the String path of a pdf file
27
+ def open_ole_pdoc: (String | Pathname | Pdoc doc) -> untyped
28
+
29
+ def fill_and_save: (untyped results, ?name: untyped, ?dir: untyped) -> untyped
30
+
31
+ def prepend_pages: (src_path: untyped, ?src_page_start: untyped, ?src_page_end: untyped) -> untyped
32
+
33
+ # returns [Pathname] of d
34
+ # @rbs dir: [String, Nil] the String path
35
+ # @rbs return dir [Pathname] Pathname of dir or of working directory
36
+ def default_dir: ([ String, Nil ] dir) -> dir[Pathname]
37
+
38
+ def save_as: (untyped name, ?dir: untyped) -> untyped
39
+
40
+ def name: () -> untyped
41
+
42
+ def close: () -> untyped
43
+
44
+ def replace_pages: (untyped doc, ?start: untyped, ?replace_start: untyped, ?num_of_pages: untyped, ?merge_annotations: untyped) -> untyped
45
+
46
+ # return the instance of JSO object
47
+ # @rbs return [Jso] a WIN32OLE wrapped Jso object 'javascript object'
48
+ def jso: () -> [ Jso ]
49
+
50
+ # return the field_names of the pdf form
51
+ def field_names: () -> untyped
52
+
53
+ def fill_form: (untyped results) -> untyped
54
+
55
+ def ole_insert_pages: (untyped merge_doc, ?self_start_page: untyped, ?merge_doc_page_start: untyped, ?number_pages: untyped, ?bookmarks: untyped) -> untyped
56
+
57
+ def ole_replace_pages: (untyped merge_doc, ?self_start_page: untyped, ?merge_doc_page_start: untyped, ?number_pages: untyped, ?bookmarks: untyped) -> untyped
58
+
59
+ def insert_pages: (src: untyped, ?insert_after: untyped, ?src_page_start: untyped, ?src_page_end: untyped) -> untyped
60
+
61
+ def merge_pdoc: (untyped doc, **untyped options) -> untyped
62
+ end
63
+ end
@@ -0,0 +1,5 @@
1
+ # Generated from lib/acrobat/version.rb with RBS::Inline
2
+
3
+ module Acrobat
4
+ VERSION: ::String
5
+ end
@@ -0,0 +1,6 @@
1
+ # Generated from lib/acrobat.rb with RBS::Inline
2
+
3
+ module Acrobat
4
+ class Error < StandardError
5
+ end
6
+ end
@@ -0,0 +1,3 @@
1
+ module FileSystemObject
2
+ self.@instance: untyped
3
+ end
@@ -0,0 +1,5 @@
1
+ module Acrobat
2
+ class Jso
3
+ @console: untyped
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ module Acrobat
2
+ class PDoc
3
+ @jso: untyped
4
+ end
5
+ end
metadata CHANGED
@@ -1,22 +1,39 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acrobat
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - dsisnero
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2024-08-13 00:00:00.000000000 Z
12
- dependencies: []
10
+ date: 2025-01-01 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: win32ole
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '0'
13
26
  description: Merge PDFs fill in forms, from ruby
14
27
  email:
15
28
  - dsisnero@gmail.com
16
- executables: []
29
+ executables:
30
+ - acrobat
17
31
  extensions: []
18
32
  extra_rdoc_files: []
19
33
  files:
34
+ - ".rubocop.yml"
35
+ - ".rubocop/minitest.yml"
36
+ - ".rubocop/strict.yml"
20
37
  - ".standard.yml"
21
38
  - CHANGELOG.md
22
39
  - CODE_OF_CONDUCT.md
@@ -28,14 +45,27 @@ files:
28
45
  - examples/6030.17.cm300.tx.pdf
29
46
  - examples/form_field.rb
30
47
  - examples/merge.rb
48
+ - exe/acrobat
49
+ - gemfiles/rubocop.gemfile
31
50
  - lib/acrobat.rb
32
51
  - lib/acrobat/app.rb
52
+ - lib/acrobat/avdoc.rb
33
53
  - lib/acrobat/jso.rb
34
54
  - lib/acrobat/pdoc.rb
35
55
  - lib/acrobat/version.rb
56
+ - rbs_collection.yaml
36
57
  - samples_other/background.js
37
58
  - samples_other/find_word.vb
38
59
  - samples_other/form.vb
60
+ - sig/generated/acrobat.rbs
61
+ - sig/generated/acrobat/app.rbs
62
+ - sig/generated/acrobat/avdoc.rbs
63
+ - sig/generated/acrobat/jso.rbs
64
+ - sig/generated/acrobat/pdoc.rbs
65
+ - sig/generated/acrobat/version.rbs
66
+ - sig/prototype/lib/acrobat/app.rbs
67
+ - sig/prototype/lib/acrobat/jso.rbs
68
+ - sig/prototype/lib/acrobat/pdoc.rbs
39
69
  - vba/overlay.vba
40
70
  homepage: https://github.com/dsisnero/acrobat
41
71
  licenses:
@@ -44,7 +74,6 @@ metadata:
44
74
  homepage_uri: https://github.com/dsisnero/acrobat
45
75
  source_code_uri: https://github.com/dsisnero/acrobat
46
76
  changelog_uri: https://github.com/dsisnero/acrobat/CHANGELOG.md
47
- post_install_message:
48
77
  rdoc_options: []
49
78
  require_paths:
50
79
  - lib
@@ -59,8 +88,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
59
88
  - !ruby/object:Gem::Version
60
89
  version: '0'
61
90
  requirements: []
62
- rubygems_version: 3.5.17
63
- signing_key:
91
+ rubygems_version: 3.6.2
64
92
  specification_version: 4
65
93
  summary: Automate Adobe Acrobat from Ruby
66
94
  test_files: []