docverter-server 1.0.1-java

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.
Files changed (58) hide show
  1. data/.buildpacks +2 -0
  2. data/.gitignore +6 -0
  3. data/.vendor_urls +3 -0
  4. data/Gemfile +3 -0
  5. data/Gemfile.lock +55 -0
  6. data/LICENSE +67 -0
  7. data/Procfile +1 -0
  8. data/README.md +32 -0
  9. data/Rakefile +23 -0
  10. data/config.ru +3 -0
  11. data/doc/api.md +1664 -0
  12. data/doc/examples/html_to_encrypted_pdf/convert.sh +16 -0
  13. data/doc/examples/html_to_encrypted_pdf/imfeldoublepica.ttf +0 -0
  14. data/doc/examples/html_to_encrypted_pdf/input.html +27 -0
  15. data/doc/examples/html_to_encrypted_pdf/marcellus.ttf +0 -0
  16. data/doc/examples/html_to_encrypted_pdf/stylesheet.css +22 -0
  17. data/doc/examples/html_to_pdf/convert.sh +16 -0
  18. data/doc/examples/html_to_pdf/imfeldoublepica.ttf +0 -0
  19. data/doc/examples/html_to_pdf/input.html +27 -0
  20. data/doc/examples/html_to_pdf/marcellus.ttf +0 -0
  21. data/doc/examples/html_to_pdf/stylesheet.css +22 -0
  22. data/doc/examples/markdown_to_epub/chapter1.md +11 -0
  23. data/doc/examples/markdown_to_epub/chapter2.md +10 -0
  24. data/doc/examples/markdown_to_epub/convert.sh +20 -0
  25. data/doc/examples/markdown_to_epub/document-open.png +0 -0
  26. data/doc/examples/markdown_to_epub/markdown_to_epub.epub +241 -0
  27. data/doc/examples/markdown_to_epub/markdown_to_epub.epub.html +251 -0
  28. data/doc/examples/markdown_to_epub/metadata.xml +2 -0
  29. data/doc/examples/markdown_to_epub/stylesheet.css +216 -0
  30. data/doc/examples/markdown_to_epub/title.txt +2 -0
  31. data/doc/examples/markdown_to_mobi/chapter1.md +11 -0
  32. data/doc/examples/markdown_to_mobi/chapter2.md +10 -0
  33. data/doc/examples/markdown_to_mobi/convert.sh +20 -0
  34. data/doc/examples/markdown_to_mobi/document-open.png +0 -0
  35. data/doc/examples/markdown_to_mobi/metadata.xml +2 -0
  36. data/doc/examples/markdown_to_mobi/stylesheet.css +216 -0
  37. data/doc/examples/markdown_to_mobi/title.txt +2 -0
  38. data/doc/examples/markdown_to_pdf/chapter1.md +11 -0
  39. data/doc/examples/markdown_to_pdf/chapter2.md +10 -0
  40. data/doc/examples/markdown_to_pdf/convert.sh +18 -0
  41. data/doc/examples/markdown_to_pdf/imfeldoublepica.ttf +0 -0
  42. data/doc/examples/markdown_to_pdf/manifest.yml +8 -0
  43. data/doc/examples/markdown_to_pdf/marcellus.ttf +0 -0
  44. data/doc/examples/markdown_to_pdf/stylesheet.css +22 -0
  45. data/docverter.gemspec +28 -0
  46. data/lib/docverter-server/app.rb +50 -0
  47. data/lib/docverter-server/conversion.rb +38 -0
  48. data/lib/docverter-server/conversion_types.rb +59 -0
  49. data/lib/docverter-server/jars/bcprov-ext-jdk15-1.43.jar +0 -0
  50. data/lib/docverter-server/jars/htmlcleaner-2.2.jar +0 -0
  51. data/lib/docverter-server/manifest.rb +107 -0
  52. data/lib/docverter-server/runner/base.rb +36 -0
  53. data/lib/docverter-server/runner/calibre.rb +10 -0
  54. data/lib/docverter-server/runner/pandoc.rb +18 -0
  55. data/lib/docverter-server/runner/pdf.rb +91 -0
  56. data/lib/docverter-server/version.rb +3 -0
  57. data/lib/docverter-server.rb +11 -0
  58. metadata +230 -0
@@ -0,0 +1,91 @@
1
+ include Java
2
+
3
+ require 'flying_saucer'
4
+ require File.expand_path('../../jars/htmlcleaner-2.2.jar', __FILE__)
5
+ require File.expand_path('../../jars/bcprov-ext-jdk15-1.43.jar', __FILE__)
6
+
7
+ java_import org.xhtmlrenderer.pdf.ITextRenderer
8
+ java_import org.xhtmlrenderer.pdf.ITextUserAgent
9
+ java_import org.htmlcleaner.HtmlCleaner
10
+ java_import org.htmlcleaner.DomSerializer
11
+ java_import com.lowagie.text.pdf.PdfReader
12
+ java_import com.lowagie.text.pdf.PdfStamper
13
+ java_import com.lowagie.text.pdf.PdfEncryption
14
+
15
+ class DocverterServer::Runner::PDF < DocverterServer::Runner::Base
16
+
17
+ def create_java_dom(html)
18
+ cleaner = HtmlCleaner.new
19
+ props = cleaner.get_properties
20
+ props.setTranslateSpecialEntities(true)
21
+ props.setAdvancedXmlEscape(true)
22
+ props.setRecognizeUnicodeChars(true)
23
+ node = cleaner.clean(html)
24
+ DomSerializer.new(props, true).createDOM(node)
25
+ end
26
+
27
+ def build_renderer(dom)
28
+ renderer = ITextRenderer.new
29
+ agent = UserAgent.new(renderer.output_device)
30
+ agent.shared_context = renderer.shared_context
31
+ renderer.shared_context.user_agent_callback = agent
32
+ renderer.set_document(dom, path_to_url(directory))
33
+ renderer.layout
34
+ renderer
35
+ end
36
+
37
+ def path_to_url(path)
38
+ java.io.File.new(path).to_uri.to_url.to_string
39
+ end
40
+
41
+ def run
42
+ with_manifest do |manifest|
43
+
44
+ io = StringIO.new
45
+ dom = create_java_dom(File.open(input_filename).read)
46
+
47
+ renderer = build_renderer(dom)
48
+ renderer.create_pdf(io.to_outputstream)
49
+
50
+ if manifest['pdf_username'] && manifest['pdf_password']
51
+ io = encrypt_pdf(io, manifest)
52
+ end
53
+
54
+ @output = generate_output_filename('pdf')
55
+ File.open(@output, "w+") do |f|
56
+ f.write(io.string)
57
+ end
58
+ end
59
+ @output
60
+ end
61
+
62
+ def encrypt_pdf(io, manifest)
63
+ temp = Tempfile.new('temp')
64
+ temp.write io.string
65
+ temp.flush
66
+ temp.rewind
67
+ out = StringIO.new
68
+ reader = PdfReader.new(temp.to_inputstream)
69
+ stamper = PdfStamper.new(reader, out.to_outputstream)
70
+ stamper.setEncryption(PdfEncryption::STANDARD_ENCRYPTION_40, manifest['pdf_username'], manifest['pdf_password'], 1)
71
+ stamper.close
72
+ out
73
+ end
74
+
75
+ class UserAgent < org.xhtmlrenderer.pdf.ITextUserAgent
76
+
77
+ def initialize(output_device)
78
+ super
79
+ end
80
+
81
+ def resolveURI(uri)
82
+ if uri =~ /^\//
83
+ super(uri[1..uri.length])
84
+ else
85
+ super(uri)
86
+ end
87
+ end
88
+ alias :resolve_uri :resolveURI
89
+ end
90
+
91
+ end
@@ -0,0 +1,3 @@
1
+ module DocverterServer
2
+ VERSION = '1.0.1'
3
+ end
@@ -0,0 +1,11 @@
1
+ module DocverterServer; end
2
+
3
+ require 'docverter-server/version'
4
+ require 'docverter-server/conversion_types'
5
+ require 'docverter-server/manifest'
6
+ require 'docverter-server/runner/base'
7
+ require 'docverter-server/runner/pandoc'
8
+ require 'docverter-server/runner/calibre'
9
+ require 'docverter-server/runner/pdf'
10
+ require 'docverter-server/conversion'
11
+ require 'docverter-server/app'
metadata ADDED
@@ -0,0 +1,230 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: docverter-server
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 1.0.1
6
+ platform: java
7
+ authors:
8
+ - Pete Keen
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-12-15 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: mime-types
16
+ version_requirements: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ! '>='
19
+ - !ruby/object:Gem::Version
20
+ version: !binary |-
21
+ MA==
22
+ none: false
23
+ requirement: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ! '>='
26
+ - !ruby/object:Gem::Version
27
+ version: !binary |-
28
+ MA==
29
+ none: false
30
+ prerelease: false
31
+ type: :runtime
32
+ - !ruby/object:Gem::Dependency
33
+ name: sinatra
34
+ version_requirements: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: !binary |-
39
+ MA==
40
+ none: false
41
+ requirement: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: !binary |-
46
+ MA==
47
+ none: false
48
+ prerelease: false
49
+ type: :runtime
50
+ - !ruby/object:Gem::Dependency
51
+ name: rake
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ! '>='
55
+ - !ruby/object:Gem::Version
56
+ version: !binary |-
57
+ MA==
58
+ none: false
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ! '>='
62
+ - !ruby/object:Gem::Version
63
+ version: !binary |-
64
+ MA==
65
+ none: false
66
+ prerelease: false
67
+ type: :runtime
68
+ - !ruby/object:Gem::Dependency
69
+ name: mizuno
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ! '>='
73
+ - !ruby/object:Gem::Version
74
+ version: !binary |-
75
+ MA==
76
+ none: false
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ! '>='
80
+ - !ruby/object:Gem::Version
81
+ version: !binary |-
82
+ MA==
83
+ none: false
84
+ prerelease: false
85
+ type: :runtime
86
+ - !ruby/object:Gem::Dependency
87
+ name: flying_saucer
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - ! '>='
91
+ - !ruby/object:Gem::Version
92
+ version: !binary |-
93
+ MA==
94
+ none: false
95
+ requirement: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ! '>='
98
+ - !ruby/object:Gem::Version
99
+ version: !binary |-
100
+ MA==
101
+ none: false
102
+ prerelease: false
103
+ type: :runtime
104
+ - !ruby/object:Gem::Dependency
105
+ name: mocha
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: !binary |-
111
+ MA==
112
+ none: false
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: !binary |-
118
+ MA==
119
+ none: false
120
+ prerelease: false
121
+ type: :development
122
+ - !ruby/object:Gem::Dependency
123
+ name: shoulda
124
+ version_requirements: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - ! '>='
127
+ - !ruby/object:Gem::Version
128
+ version: !binary |-
129
+ MA==
130
+ none: false
131
+ requirement: !ruby/object:Gem::Requirement
132
+ requirements:
133
+ - - ! '>='
134
+ - !ruby/object:Gem::Version
135
+ version: !binary |-
136
+ MA==
137
+ none: false
138
+ prerelease: false
139
+ type: :development
140
+ description: Document conversion service with a REST API
141
+ email:
142
+ - pete@docverter.com
143
+ executables: []
144
+ extensions: []
145
+ extra_rdoc_files: []
146
+ files:
147
+ - .buildpacks
148
+ - .gitignore
149
+ - .vendor_urls
150
+ - Gemfile
151
+ - Gemfile.lock
152
+ - LICENSE
153
+ - Procfile
154
+ - README.md
155
+ - Rakefile
156
+ - config.ru
157
+ - doc/api.md
158
+ - doc/examples/html_to_encrypted_pdf/convert.sh
159
+ - doc/examples/html_to_encrypted_pdf/imfeldoublepica.ttf
160
+ - doc/examples/html_to_encrypted_pdf/input.html
161
+ - doc/examples/html_to_encrypted_pdf/marcellus.ttf
162
+ - doc/examples/html_to_encrypted_pdf/stylesheet.css
163
+ - doc/examples/html_to_pdf/convert.sh
164
+ - doc/examples/html_to_pdf/imfeldoublepica.ttf
165
+ - doc/examples/html_to_pdf/input.html
166
+ - doc/examples/html_to_pdf/marcellus.ttf
167
+ - doc/examples/html_to_pdf/stylesheet.css
168
+ - doc/examples/markdown_to_epub/chapter1.md
169
+ - doc/examples/markdown_to_epub/chapter2.md
170
+ - doc/examples/markdown_to_epub/convert.sh
171
+ - doc/examples/markdown_to_epub/document-open.png
172
+ - doc/examples/markdown_to_epub/markdown_to_epub.epub
173
+ - doc/examples/markdown_to_epub/markdown_to_epub.epub.html
174
+ - doc/examples/markdown_to_epub/metadata.xml
175
+ - doc/examples/markdown_to_epub/stylesheet.css
176
+ - doc/examples/markdown_to_epub/title.txt
177
+ - doc/examples/markdown_to_mobi/chapter1.md
178
+ - doc/examples/markdown_to_mobi/chapter2.md
179
+ - doc/examples/markdown_to_mobi/convert.sh
180
+ - doc/examples/markdown_to_mobi/document-open.png
181
+ - doc/examples/markdown_to_mobi/metadata.xml
182
+ - doc/examples/markdown_to_mobi/stylesheet.css
183
+ - doc/examples/markdown_to_mobi/title.txt
184
+ - doc/examples/markdown_to_pdf/chapter1.md
185
+ - doc/examples/markdown_to_pdf/chapter2.md
186
+ - doc/examples/markdown_to_pdf/convert.sh
187
+ - doc/examples/markdown_to_pdf/imfeldoublepica.ttf
188
+ - doc/examples/markdown_to_pdf/manifest.yml
189
+ - doc/examples/markdown_to_pdf/marcellus.ttf
190
+ - doc/examples/markdown_to_pdf/stylesheet.css
191
+ - docverter.gemspec
192
+ - lib/docverter-server.rb
193
+ - lib/docverter-server/app.rb
194
+ - lib/docverter-server/conversion.rb
195
+ - lib/docverter-server/conversion_types.rb
196
+ - lib/docverter-server/jars/bcprov-ext-jdk15-1.43.jar
197
+ - lib/docverter-server/jars/htmlcleaner-2.2.jar
198
+ - lib/docverter-server/manifest.rb
199
+ - lib/docverter-server/runner/base.rb
200
+ - lib/docverter-server/runner/calibre.rb
201
+ - lib/docverter-server/runner/pandoc.rb
202
+ - lib/docverter-server/runner/pdf.rb
203
+ - lib/docverter-server/version.rb
204
+ homepage: http://www.docverter.com
205
+ licenses: []
206
+ post_install_message:
207
+ rdoc_options: []
208
+ require_paths:
209
+ - lib
210
+ required_ruby_version: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - ! '>='
213
+ - !ruby/object:Gem::Version
214
+ version: !binary |-
215
+ MA==
216
+ none: false
217
+ required_rubygems_version: !ruby/object:Gem::Requirement
218
+ requirements:
219
+ - - ! '>='
220
+ - !ruby/object:Gem::Version
221
+ version: !binary |-
222
+ MA==
223
+ none: false
224
+ requirements: []
225
+ rubyforge_project:
226
+ rubygems_version: 1.8.24
227
+ signing_key:
228
+ specification_version: 3
229
+ summary: Document conversion service with a REST API
230
+ test_files: []