docverter-server 1.0.1-java

Sign up to get free protection for your applications and to get access to all the features.
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: []