pludoni_pdfutils 0.1.1 → 0.2.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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 561f53e393a627ae11963fa8254bb39b8445d574dd38b05a558c3088b87ab7d5
|
4
|
+
data.tar.gz: baa9dedf3eb2f0c76630c1f598ad8acc99b6eeba5c6ce5a6b6370f793f6263e9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 06e78bd0c4608b45415f79f132be1ac7b4adbd70dba1c2df0069fa2216582c1e71ecbf156b891692e0b49b43c071f3b32a2c18209bac52d626379311e88711fa
|
7
|
+
data.tar.gz: 6f69bf3240182880b623f31cb7621809df0e48d41c241db917b76b03c8e547bd8d4e3457778131d77066e758670220c90f611f541323695ca38e2694c8db5991
|
data/README.md
CHANGED
@@ -21,6 +21,8 @@ Or install it yourself as:
|
|
21
21
|
|
22
22
|
requires ghostscript installed.
|
23
23
|
|
24
|
+
Conversion of document formats (docx etc.) requires soffice installed
|
25
|
+
|
24
26
|
## Usage
|
25
27
|
|
26
28
|
All method take either ActiveStorage::Blob or File/Tempfile as argument and return a Tempfile/File
|
@@ -41,7 +43,10 @@ Pludoni::Pdfutils.convert_all_to_pdf_and_join_max_size(blobs, max_files: 3, max_
|
|
41
43
|
Individual classes:
|
42
44
|
|
43
45
|
```ruby
|
44
|
-
|
46
|
+
# jpg
|
47
|
+
tempfile = Pludoni::Pdfutils::ConvertImageToPdf.new(image_file).run
|
48
|
+
# docx etc.
|
49
|
+
tempfile = Pludoni::Pdfutils::ConvertDocumentToPdf.new(image_file).run
|
45
50
|
|
46
51
|
|
47
52
|
tempfile = Pludoni::Pdfutils::Joiner.new(job_application.uploads.map(&:blob)).run
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'open3'
|
2
|
+
|
3
|
+
module Pludoni::Pdfutils
|
4
|
+
class ConvertDocumentToPdf
|
5
|
+
def initialize(blob)
|
6
|
+
@blob = FileWrapper.make(blob)
|
7
|
+
end
|
8
|
+
|
9
|
+
def run(&block)
|
10
|
+
@blob.open do |source|
|
11
|
+
# convert image to pdf
|
12
|
+
tf = Tempfile.new(['convert', '.pdf'])
|
13
|
+
tf.binmode
|
14
|
+
|
15
|
+
command = ['soffice']
|
16
|
+
command << '--headless'
|
17
|
+
command << '--convert-to'
|
18
|
+
command << 'pdf'
|
19
|
+
command << '--outdir'
|
20
|
+
command << File.dirname(source.path)
|
21
|
+
command << source.path
|
22
|
+
stdout, stderr, status = Open3.capture3(*command)
|
23
|
+
unless status.success?
|
24
|
+
raise ConversionFailedError, "PDF conversion failed: Command: #{cli}\nStdout: #{stdout}\nStderr: #{stderr}"
|
25
|
+
end
|
26
|
+
pdf_path = source.path.sub(/\.[a-z0-9]+$/i, '.pdf')
|
27
|
+
unless File.exist?(pdf_path)
|
28
|
+
raise ConversionFailedError, "PDF conversion failed: Command: #{cli}\nStdout: #{stdout}\nStderr: #{stderr}"
|
29
|
+
end
|
30
|
+
|
31
|
+
FileUtils.move(pdf_path, tf.path)
|
32
|
+
|
33
|
+
tf.open
|
34
|
+
|
35
|
+
FileWrapper.make(tf)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/lib/pludoni/pdfutils.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
require "pludoni/pdfutils/version"
|
2
1
|
require 'mimemagic'
|
3
2
|
|
4
3
|
module Pludoni
|
@@ -47,10 +46,17 @@ module Pludoni
|
|
47
46
|
|
48
47
|
def convert_to_pdf(blob, &block)
|
49
48
|
blob = FileWrapper.make(blob)
|
50
|
-
|
51
|
-
|
49
|
+
case blob.content_type.to_s
|
50
|
+
when /image/
|
52
51
|
block.call("converting #{blob.filename.to_s} to pdf") if block_given?
|
53
|
-
|
52
|
+
ConvertImageToPdf.new(blob).run(&block)
|
53
|
+
when "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
54
|
+
"application/msword",
|
55
|
+
"application/vnd.ms-powerpoint",
|
56
|
+
"application/vnd.oasis.opendocument.text",
|
57
|
+
"application/vnd.openxmlformats-officedocument.presentationml.presentation"
|
58
|
+
block.call("converting #{blob.filename.to_s} to pdf") if block_given?
|
59
|
+
ConvertDocumentToPdf.new(blob).run(&block)
|
54
60
|
else
|
55
61
|
blob
|
56
62
|
end
|
data/pludoni_pdfutils.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pludoni_pdfutils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stefan Wienert
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-10-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activestorage
|
@@ -99,7 +99,8 @@ files:
|
|
99
99
|
- lib/pludoni/pdfutils.rb
|
100
100
|
- lib/pludoni/pdfutils/active_storage_wrapper.rb
|
101
101
|
- lib/pludoni/pdfutils/compressor.rb
|
102
|
-
- lib/pludoni/pdfutils/
|
102
|
+
- lib/pludoni/pdfutils/convert_document_to_pdf.rb
|
103
|
+
- lib/pludoni/pdfutils/convert_image_to_pdf.rb
|
103
104
|
- lib/pludoni/pdfutils/file_wrapper.rb
|
104
105
|
- lib/pludoni/pdfutils/joiner.rb
|
105
106
|
- lib/pludoni/pdfutils/local_file_wrapper.rb
|