gotenberg-ruby 1.0.6 → 1.0.8
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 +34 -9
- data/lib/gotenberg/chromium/{files.rb → tools.rb} +7 -31
- data/lib/gotenberg/chromium.rb +5 -3
- data/lib/gotenberg/files.rb +29 -0
- data/lib/gotenberg/libreoffice/{files.rb → tools.rb} +4 -12
- data/lib/gotenberg/libreoffice.rb +3 -2
- data/lib/gotenberg/pdf_engines/{files.rb → tools.rb} +9 -17
- data/lib/gotenberg/pdf_engines.rb +3 -2
- data/lib/gotenberg/version.rb +1 -1
- data/lib/gotenberg-ruby.rb +1 -0
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bf64c508e70367b7dadec2eee14b54218989131a240da2d927b5ba15ad6c4af6
|
4
|
+
data.tar.gz: a703924073bf1e819413e1e12e8b7e4e3176f9ad54ae28c47c5913cf6c9fd723
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1ab5c3057c04f1db12300e8de19878df41f9d9fd1414d68fd79ce6daba0fe106ce547a600fa64650ac98fc6e0e1d5100231c7ed11474072f3f439b0b5d7b01b2
|
7
|
+
data.tar.gz: e02a364aa9f05af5d624a5fe9926b8b12ef7d7f774dc4ae236a3833c3de3be9fb3d324d8e8f035bedb11446fbbe8fcec519a99cfcda69e09624ac2c81d34accc
|
data/README.md
CHANGED
@@ -25,6 +25,7 @@ gem "gotenberg-ruby"
|
|
25
25
|
* [LibreOffice](#libreOffice)
|
26
26
|
* [PDF Engines](#pdf-engines)
|
27
27
|
* [Webhook](#webhook)
|
28
|
+
* [Exiftools](#exiftools)
|
28
29
|
|
29
30
|
### Run Gotenberg
|
30
31
|
|
@@ -163,7 +164,7 @@ in the HTML DOM are on the root level.
|
|
163
164
|
```ruby
|
164
165
|
document = Gotenberg::Chromium.call(ENV['GOTENBERG_URL']) do |doc|
|
165
166
|
doc.html index_html
|
166
|
-
doc.assets
|
167
|
+
doc.assets '/path/to/my.css', '/path/to/my.js', ['<binary string>', 'my.png']
|
167
168
|
end
|
168
169
|
```
|
169
170
|
|
@@ -207,7 +208,15 @@ You may convert markdown files with:
|
|
207
208
|
|
208
209
|
```ruby
|
209
210
|
document = Gotenberg::Chromium.call(ENV['GOTENBERG_URL']) do |doc|
|
210
|
-
doc.markdown wrapper_html,
|
211
|
+
doc.markdown wrapper_html, '/path/to/file.md'
|
212
|
+
end
|
213
|
+
```
|
214
|
+
|
215
|
+
Or with raw input:
|
216
|
+
|
217
|
+
```ruby
|
218
|
+
document = Gotenberg::Chromium.call(ENV['GOTENBERG_URL']) do |doc|
|
219
|
+
doc.markdown wrapper_html, ['<binary data>', 'file.md']
|
211
220
|
end
|
212
221
|
```
|
213
222
|
|
@@ -233,8 +242,8 @@ requirement is that their paths in the HTML DOM are on the root level.
|
|
233
242
|
|
234
243
|
```ruby
|
235
244
|
document = Gotenberg::Chromium.call(ENV['GOTENBERG_URL']) do |doc|
|
236
|
-
doc.markdown wrapper_html,
|
237
|
-
doc.assets
|
245
|
+
doc.markdown wrapper_html, '/path/to/file.md'
|
246
|
+
doc.assets '/path/to/my.css', '/path/to/my.js', '/path/to/my2.md', ['<binary data>', 'file_2.md']
|
238
247
|
end
|
239
248
|
```
|
240
249
|
|
@@ -483,7 +492,7 @@ If you send many documents, Gotenberg will return a ZIP archive with the PDFs:
|
|
483
492
|
|
484
493
|
```ruby
|
485
494
|
document = Gotenberg::Libreoffice.call(ENV['GOTENBERG_URL']) do |doc|
|
486
|
-
doc.convert '/path/to/my.docx', '/path/to/my.xlsx'
|
495
|
+
doc.convert '/path/to/my.docx', '/path/to/my.xlsx', ['<binary data>', 'some.odt']
|
487
496
|
end
|
488
497
|
|
489
498
|
# will return binary data with zip archive content
|
@@ -497,7 +506,7 @@ You may also merge them into one unique PDF:
|
|
497
506
|
```ruby
|
498
507
|
document = Gotenberg::Libreoffice.call(ENV['GOTENBERG_URL']) do |doc|
|
499
508
|
doc.merge
|
500
|
-
doc.convert '/path/to/my.docx', '/path/to/my.xlsx'
|
509
|
+
doc.convert '/path/to/my.docx', '/path/to/my.xlsx', ['<binary data>', 'some.odt']
|
501
510
|
end
|
502
511
|
```
|
503
512
|
|
@@ -564,7 +573,7 @@ Merging PDFs is as simple as:
|
|
564
573
|
|
565
574
|
```ruby
|
566
575
|
document = Gotenberg::PdfEngines.call(ENV['GOTENBERG_URL']) do |doc|
|
567
|
-
doc.merge '/path/to/my.pdf', '/path/to/my2.pdf'
|
576
|
+
doc.merge '/path/to/my.pdf', '/path/to/my2.pdf', ['<binary data>', 'some.pdf']
|
568
577
|
end
|
569
578
|
```
|
570
579
|
|
@@ -587,7 +596,7 @@ You may convert a PDF to a specific PDF format with:
|
|
587
596
|
|
588
597
|
```ruby
|
589
598
|
document = Gotenberg::PdfEngines.call(ENV['GOTENBERG_URL']) do |doc|
|
590
|
-
doc.convert '
|
599
|
+
doc.convert '/path/to/my.pdf', format: 'PDF/A-1a'
|
591
600
|
end
|
592
601
|
```
|
593
602
|
|
@@ -595,7 +604,7 @@ If you send many PDFs, Gotenberg will return a ZIP archive with the PDFs:
|
|
595
604
|
|
596
605
|
```ruby
|
597
606
|
document = Gotenberg::PdfEngines.call(ENV['GOTENBERG_URL']) do |doc|
|
598
|
-
doc.convert '
|
607
|
+
doc.convert '/path/to/my.pdf', '/path/to/my2.pdf', '/path/to/my3.pdf', ['<binary data>', 'some.pdf'], format: 'PDF/A-1a'
|
599
608
|
end
|
600
609
|
|
601
610
|
# will return binary data with zip archive content
|
@@ -640,3 +649,19 @@ document = Gotenberg::Chromium.call(ENV['GOTENBERG_URL']) do |doc|
|
|
640
649
|
doc.webhook 'https://my.webhook.url', 'https://my.webhook.error.url'
|
641
650
|
end
|
642
651
|
```
|
652
|
+
|
653
|
+
### Exiftools
|
654
|
+
|
655
|
+
Gem also proxify (expert mode) access to mini_exiftools througth *Gotenberg::Exiftools* class.
|
656
|
+
You can change PDF metadata manually:
|
657
|
+
|
658
|
+
```ruby
|
659
|
+
binary = Gotenberg::Exiftools.modify(pdf_binary, { title: 'Document 1' })
|
660
|
+
|
661
|
+
# save PDF file
|
662
|
+
File.open('filename.pdf', 'wb') do |file|
|
663
|
+
file << binary
|
664
|
+
end
|
665
|
+
```
|
666
|
+
|
667
|
+
⚠️ Class is just wrapper around *MiniExiftool* class, so you need handle exceptions manually/carefully in begin/rescue block.
|
@@ -1,10 +1,8 @@
|
|
1
|
-
require 'faraday'
|
2
|
-
require 'faraday/multipart'
|
3
1
|
require 'gotenberg/compiler'
|
4
2
|
|
5
3
|
module Gotenberg
|
6
4
|
class Chromium
|
7
|
-
module
|
5
|
+
module Tools
|
8
6
|
# Adds a header to each page.
|
9
7
|
# Note: it automatically sets the filename to "header.html", as required by Gotenberg.
|
10
8
|
def header header
|
@@ -35,7 +33,7 @@ module Gotenberg
|
|
35
33
|
|
36
34
|
files << multipart_file(compiler.body, 'index.html', 'text/html')
|
37
35
|
|
38
|
-
|
36
|
+
assets *compiler.assets
|
39
37
|
|
40
38
|
@endpoint = '/forms/chromium/convert/html'
|
41
39
|
|
@@ -45,44 +43,22 @@ module Gotenberg
|
|
45
43
|
# Converts one or more markdown files to PDF.
|
46
44
|
# Note: it automatically sets the index filename to "index.html", as required by Gotenberg.
|
47
45
|
# See https://gotenberg.dev/docs/modules/chromium#markdown.
|
48
|
-
def markdown index,
|
46
|
+
def markdown index, markdown
|
49
47
|
files << multipart_file(index, 'index.html', 'text/html')
|
48
|
+
files << multipart_file(*load_file_from_source(markdown), 'text/markdown')
|
50
49
|
|
51
|
-
markdowns.each do |f|
|
52
|
-
files << multipart_file(IO.binread(f), File.basename(f), 'text/markdown')
|
53
|
-
end
|
54
|
-
|
55
50
|
@endpoint = '/forms/chromium/convert/markdown'
|
56
51
|
|
57
52
|
self
|
58
53
|
end
|
59
54
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
files << multipart_file(io, filename)
|
64
|
-
end
|
65
|
-
|
66
|
-
self
|
67
|
-
end
|
68
|
-
|
69
|
-
def assets sources
|
70
|
-
sources.each do |f|
|
71
|
-
files << multipart_file(IO.binread(f), File.basename(f))
|
55
|
+
def assets *sources
|
56
|
+
sources.each do |source|
|
57
|
+
files << multipart_file(*load_file_from_source(source))
|
72
58
|
end
|
73
59
|
|
74
60
|
self
|
75
61
|
end
|
76
|
-
|
77
|
-
private
|
78
|
-
|
79
|
-
def files
|
80
|
-
@files ||= []
|
81
|
-
end
|
82
|
-
|
83
|
-
def multipart_file body, filename, content_type = 'application/octet-stream'
|
84
|
-
Faraday::Multipart::FilePart.new(StringIO.new(body), content_type, filename)
|
85
|
-
end
|
86
62
|
end
|
87
63
|
end
|
88
64
|
end
|
data/lib/gotenberg/chromium.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
require 'gotenberg/chromium/properties'
|
2
|
-
require 'gotenberg/chromium/
|
2
|
+
require 'gotenberg/chromium/tools'
|
3
3
|
require 'gotenberg/headers'
|
4
4
|
require 'gotenberg/metadata'
|
5
|
+
require 'gotenberg/files'
|
5
6
|
require 'gotenberg/client'
|
6
7
|
require 'gotenberg/exiftools'
|
7
8
|
require 'gotenberg/extractors'
|
@@ -10,7 +11,7 @@ require 'gotenberg/backtrace'
|
|
10
11
|
|
11
12
|
module Gotenberg
|
12
13
|
class Chromium
|
13
|
-
include Properties, Files, Headers, Metadata, Extractors
|
14
|
+
include Properties, Files, Headers, Metadata, Tools, Extractors
|
14
15
|
|
15
16
|
attr_accessor :base_path
|
16
17
|
attr_reader :endpoint, :response, :exception
|
@@ -32,6 +33,8 @@ module Gotenberg
|
|
32
33
|
transform
|
33
34
|
modify_metadata if modify_metadata?
|
34
35
|
|
36
|
+
puts files.inspect
|
37
|
+
|
35
38
|
self
|
36
39
|
end
|
37
40
|
|
@@ -43,7 +46,6 @@ module Gotenberg
|
|
43
46
|
response || raise(exception)
|
44
47
|
end
|
45
48
|
|
46
|
-
|
47
49
|
private
|
48
50
|
|
49
51
|
def modify_metadata?
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'faraday'
|
2
|
+
require 'faraday/multipart'
|
3
|
+
|
4
|
+
module Gotenberg
|
5
|
+
module Files
|
6
|
+
|
7
|
+
private
|
8
|
+
|
9
|
+
def files
|
10
|
+
@files ||= []
|
11
|
+
end
|
12
|
+
|
13
|
+
def load_file_from_source source
|
14
|
+
io, filename =
|
15
|
+
case source
|
16
|
+
when String
|
17
|
+
[IO.binread(source), File.basename(source)]
|
18
|
+
when Array
|
19
|
+
source
|
20
|
+
end
|
21
|
+
|
22
|
+
[io, filename]
|
23
|
+
end
|
24
|
+
|
25
|
+
def multipart_file body, filename, content_type = 'application/octet-stream'
|
26
|
+
Faraday::Multipart::FilePart.new(StringIO.new(body), content_type, filename)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -1,10 +1,8 @@
|
|
1
|
-
require 'faraday'
|
2
|
-
require 'faraday/multipart'
|
3
1
|
require 'gotenberg/utilities/index'
|
4
2
|
|
5
3
|
module Gotenberg
|
6
4
|
class Libreoffice
|
7
|
-
module
|
5
|
+
module Tools
|
8
6
|
|
9
7
|
# Converts the given document(s) to PDF(s).
|
10
8
|
# Gotenberg will return either a unique PDF if you request a merge or a ZIP archive with the PDFs.
|
@@ -12,7 +10,9 @@ module Gotenberg
|
|
12
10
|
# See https://gotenberg.dev/docs/modules/libreoffice#route.
|
13
11
|
def convert *sources
|
14
12
|
sources.each.with_index(1) do |source, index|
|
15
|
-
|
13
|
+
io, filename = load_file_from_source(source)
|
14
|
+
|
15
|
+
files << multipart_file(io, merge_prefix(index) + filename)
|
16
16
|
end
|
17
17
|
|
18
18
|
@endpoint = '/forms/libreoffice/convert'
|
@@ -22,10 +22,6 @@ module Gotenberg
|
|
22
22
|
|
23
23
|
private
|
24
24
|
|
25
|
-
def files
|
26
|
-
@files ||= []
|
27
|
-
end
|
28
|
-
|
29
25
|
def zip_mode?
|
30
26
|
properties['merge'] != true && files.size > 1
|
31
27
|
end
|
@@ -33,10 +29,6 @@ module Gotenberg
|
|
33
29
|
def merge_prefix number
|
34
30
|
properties['merge'] ? Gotenberg::Utilities::Index::to_alpha(number) + '_' : ''
|
35
31
|
end
|
36
|
-
|
37
|
-
def multipart_file body, filename, content_type = 'application/octet-stream'
|
38
|
-
Faraday::Multipart::FilePart.new(StringIO.new(body), content_type, filename)
|
39
|
-
end
|
40
32
|
end
|
41
33
|
end
|
42
34
|
end
|
@@ -1,14 +1,15 @@
|
|
1
1
|
require 'gotenberg/libreoffice/properties'
|
2
|
-
require 'gotenberg/libreoffice/
|
2
|
+
require 'gotenberg/libreoffice/tools'
|
3
3
|
require 'gotenberg/headers'
|
4
4
|
require 'gotenberg/metadata'
|
5
|
+
require 'gotenberg/files'
|
5
6
|
require 'gotenberg/client'
|
6
7
|
require 'gotenberg/exiftools'
|
7
8
|
require 'gotenberg/exceptions'
|
8
9
|
|
9
10
|
module Gotenberg
|
10
11
|
class Libreoffice
|
11
|
-
include Properties, Files, Headers, Metadata
|
12
|
+
include Properties, Files, Headers, Metadata, Tools
|
12
13
|
|
13
14
|
attr_accessor :base_path
|
14
15
|
attr_reader :endpoint, :response, :exception
|
@@ -1,17 +1,17 @@
|
|
1
|
-
require 'faraday'
|
2
|
-
require 'faraday/multipart'
|
3
1
|
require 'gotenberg/utilities/index'
|
4
2
|
|
5
3
|
module Gotenberg
|
6
4
|
class PdfEngines
|
7
|
-
module
|
5
|
+
module Tools
|
8
6
|
|
9
7
|
# Merges PDFs into a unique PDF.
|
10
8
|
# Note: the merging order is determined by the order of the arguments.
|
11
9
|
# See https://gotenberg.dev/docs/modules/pdf-engines#merge.
|
12
10
|
def merge *sources
|
13
11
|
sources.each.with_index(1) do |source, index|
|
14
|
-
|
12
|
+
io, filename = load_file_from_source(source)
|
13
|
+
|
14
|
+
files << multipart_file(io, merge_prefix(index) + filename)
|
15
15
|
end
|
16
16
|
|
17
17
|
@endpoint = '/forms/pdfengines/merge'
|
@@ -23,13 +23,13 @@ module Gotenberg
|
|
23
23
|
# Gotenberg will return the PDF or a ZIP archive with the PDFs.
|
24
24
|
# https://gotenberg.dev/docs/modules/pdf-engines#convert.
|
25
25
|
# https://gotenberg.dev/docs/modules/pdf-engines#engines.
|
26
|
-
def convert
|
27
|
-
|
28
|
-
|
29
|
-
sources.each.with_index(1) do |source, index|
|
30
|
-
files << multipart_file(IO.binread(source), File.basename(source))
|
26
|
+
def convert *sources, format: 'PDF/A-1a'
|
27
|
+
sources.each do |source|
|
28
|
+
files << multipart_file(*load_file_from_source(source))
|
31
29
|
end
|
32
30
|
|
31
|
+
properties['pdfFormat'] = format
|
32
|
+
|
33
33
|
@endpoint = '/forms/pdfengines/convert'
|
34
34
|
@pdf_engines_convert = true
|
35
35
|
|
@@ -38,10 +38,6 @@ module Gotenberg
|
|
38
38
|
|
39
39
|
private
|
40
40
|
|
41
|
-
def files
|
42
|
-
@files ||= []
|
43
|
-
end
|
44
|
-
|
45
41
|
def zip_mode?
|
46
42
|
@pdf_engines_convert && files.size > 1
|
47
43
|
end
|
@@ -49,10 +45,6 @@ module Gotenberg
|
|
49
45
|
def merge_prefix number
|
50
46
|
Gotenberg::Utilities::Index::to_alpha(number) + '_'
|
51
47
|
end
|
52
|
-
|
53
|
-
def multipart_file body, filename, content_type = 'application/octet-stream'
|
54
|
-
Faraday::Multipart::FilePart.new(StringIO.new(body), content_type, filename)
|
55
|
-
end
|
56
48
|
end
|
57
49
|
end
|
58
50
|
end
|
@@ -1,14 +1,15 @@
|
|
1
1
|
require 'gotenberg/pdf_engines/properties'
|
2
|
-
require 'gotenberg/pdf_engines/
|
2
|
+
require 'gotenberg/pdf_engines/tools'
|
3
3
|
require 'gotenberg/headers'
|
4
4
|
require 'gotenberg/metadata'
|
5
|
+
require 'gotenberg/files'
|
5
6
|
require 'gotenberg/client'
|
6
7
|
require 'gotenberg/exiftools'
|
7
8
|
require 'gotenberg/exceptions'
|
8
9
|
|
9
10
|
module Gotenberg
|
10
11
|
class PdfEngines
|
11
|
-
include Properties, Files, Headers, Metadata
|
12
|
+
include Properties, Files, Headers, Metadata, Tools
|
12
13
|
|
13
14
|
attr_accessor :base_path
|
14
15
|
attr_reader :endpoint, :response, :exception
|
data/lib/gotenberg/version.rb
CHANGED
data/lib/gotenberg-ruby.rb
CHANGED
@@ -5,6 +5,7 @@ module Gotenberg
|
|
5
5
|
autoload :Chromium, 'gotenberg/chromium'
|
6
6
|
autoload :Libreoffice, 'gotenberg/libreoffice'
|
7
7
|
autoload :PdfEngines, 'gotenberg/pdf_engines'
|
8
|
+
autoload :Exiftools, 'gotenberg/exiftools'
|
8
9
|
autoload :Configuration, 'gotenberg/configuration'
|
9
10
|
|
10
11
|
def self.configuration
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gotenberg-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- sanzstez
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-10-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -90,23 +90,24 @@ files:
|
|
90
90
|
- lib/gotenberg/analyzers/resource.rb
|
91
91
|
- lib/gotenberg/backtrace.rb
|
92
92
|
- lib/gotenberg/chromium.rb
|
93
|
-
- lib/gotenberg/chromium/files.rb
|
94
93
|
- lib/gotenberg/chromium/properties.rb
|
94
|
+
- lib/gotenberg/chromium/tools.rb
|
95
95
|
- lib/gotenberg/client.rb
|
96
96
|
- lib/gotenberg/compiler.rb
|
97
97
|
- lib/gotenberg/configuration.rb
|
98
98
|
- lib/gotenberg/exceptions.rb
|
99
99
|
- lib/gotenberg/exiftools.rb
|
100
100
|
- lib/gotenberg/extractors.rb
|
101
|
+
- lib/gotenberg/files.rb
|
101
102
|
- lib/gotenberg/headers.rb
|
102
103
|
- lib/gotenberg/helpers/action_view.rb
|
103
104
|
- lib/gotenberg/libreoffice.rb
|
104
|
-
- lib/gotenberg/libreoffice/files.rb
|
105
105
|
- lib/gotenberg/libreoffice/properties.rb
|
106
|
+
- lib/gotenberg/libreoffice/tools.rb
|
106
107
|
- lib/gotenberg/metadata.rb
|
107
108
|
- lib/gotenberg/pdf_engines.rb
|
108
|
-
- lib/gotenberg/pdf_engines/files.rb
|
109
109
|
- lib/gotenberg/pdf_engines/properties.rb
|
110
|
+
- lib/gotenberg/pdf_engines/tools.rb
|
110
111
|
- lib/gotenberg/railtie.rb
|
111
112
|
- lib/gotenberg/utilities/index.rb
|
112
113
|
- lib/gotenberg/utilities/inline_resource.rb
|