libis-format 1.0.1 → 2.0.0

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 (222) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +3 -1
  3. data/.travis.yml +43 -25
  4. data/README.md +2 -2
  5. data/base/Dockerfile +35 -0
  6. data/base/Dockerfile.alpine +20 -0
  7. data/base/Dockerfile.rvm +56 -0
  8. data/base/rework_path +20 -0
  9. data/bin/libis_format +8 -0
  10. data/docker_cfg.yml +1 -0
  11. data/lib/libis/format.rb +5 -1
  12. data/lib/libis/format/cli/convert.rb +310 -0
  13. data/lib/libis/format/cli/format.rb +77 -0
  14. data/lib/libis/format/cli/prompt_helper.rb +87 -0
  15. data/lib/libis/format/cli/sub_command.rb +22 -0
  16. data/lib/libis/format/command_line.rb +25 -0
  17. data/lib/libis/format/config.rb +14 -10
  18. data/lib/libis/format/converter/audio_converter.rb +3 -37
  19. data/lib/libis/format/converter/base.rb +21 -8
  20. data/lib/libis/format/converter/chain.rb +3 -3
  21. data/lib/libis/format/converter/image_assembler.rb +82 -0
  22. data/lib/libis/format/converter/image_converter.rb +36 -134
  23. data/lib/libis/format/converter/image_splitter.rb +80 -0
  24. data/lib/libis/format/converter/image_watermarker.rb +261 -0
  25. data/lib/libis/format/converter/jp2_converter.rb +2 -2
  26. data/lib/libis/format/converter/office_converter.rb +2 -2
  27. data/lib/libis/format/converter/pdf_assembler.rb +66 -0
  28. data/lib/libis/format/converter/pdf_converter.rb +33 -89
  29. data/lib/libis/format/converter/pdf_optimizer.rb +70 -0
  30. data/lib/libis/format/converter/pdf_splitter.rb +65 -0
  31. data/lib/libis/format/converter/pdf_watermarker.rb +110 -0
  32. data/lib/libis/format/converter/spreadsheet_converter.rb +2 -2
  33. data/lib/libis/format/converter/video_converter.rb +1 -1
  34. data/lib/libis/format/identifier.rb +7 -7
  35. data/lib/libis/format/info.rb +27 -0
  36. data/lib/libis/format/library.rb +147 -0
  37. data/lib/libis/format/tool/droid.rb +2 -2
  38. data/lib/libis/format/tool/extension_identification.rb +4 -4
  39. data/lib/libis/format/tool/ffmpeg.rb +1 -1
  40. data/lib/libis/format/tool/fido.rb +1 -1
  41. data/lib/libis/format/tool/fop_pdf.rb +1 -1
  42. data/lib/libis/format/tool/identification_tool.rb +6 -6
  43. data/lib/libis/format/tool/office_to_pdf.rb +1 -1
  44. data/lib/libis/format/tool/pdf_copy.rb +1 -1
  45. data/lib/libis/format/tool/pdf_merge.rb +1 -1
  46. data/lib/libis/format/tool/pdf_split.rb +1 -1
  47. data/lib/libis/format/tool/pdf_to_pdfa.rb +1 -2
  48. data/lib/libis/format/tool/pdfa_validator.rb +3 -4
  49. data/lib/libis/format/tool/spreadsheet_to_ods.rb +2 -1
  50. data/lib/libis/format/version.rb +1 -1
  51. data/lib/libis/format/yaml_loader.rb +71 -0
  52. data/libis-format.gemspec +4 -4
  53. data/tools/fop/build/fop.jar +0 -0
  54. data/tools/fop/conf/fop.xconf +466 -0
  55. data/tools/fop/fop +258 -0
  56. data/tools/fop/fop.bat +75 -0
  57. data/tools/fop/fop.cmd +31 -0
  58. data/tools/fop/fop.js +341 -0
  59. data/tools/fop/lib/README.txt +243 -0
  60. data/tools/fop/lib/avalon-framework-api-4.3.1.jar +0 -0
  61. data/tools/fop/lib/avalon-framework-impl-4.3.1.jar +0 -0
  62. data/tools/fop/lib/avalon-framework.LICENSE.txt +175 -0
  63. data/tools/fop/lib/avalon-framework.NOTICE.TXT +11 -0
  64. data/tools/fop/lib/batik-all-1.10.jar +0 -0
  65. data/tools/fop/lib/batik.LICENSE.txt +201 -0
  66. data/tools/fop/lib/batik.NOTICE.txt +18 -0
  67. data/tools/fop/lib/commons-io-1.3.1.jar +0 -0
  68. data/tools/fop/lib/commons-io.LICENSE.txt +203 -0
  69. data/tools/fop/lib/commons-io.NOTICE.txt +6 -0
  70. data/tools/fop/lib/commons-logging-1.0.4.jar +0 -0
  71. data/tools/fop/lib/commons-logging.LICENSE.txt +202 -0
  72. data/tools/fop/lib/commons-logging.NOTICE.txt +3 -0
  73. data/tools/fop/lib/fontbox-2.0.7.jar +0 -0
  74. data/tools/fop/lib/serializer-2.7.2.jar +0 -0
  75. data/tools/fop/lib/serializer.LICENSE.txt +201 -0
  76. data/tools/fop/lib/serializer.NOTICE.txt +15 -0
  77. data/tools/fop/lib/xalan-2.7.2.jar +0 -0
  78. data/tools/fop/lib/xalan.BCEL.LICENSE.txt +52 -0
  79. data/tools/fop/lib/xalan.LICENSE.txt +202 -0
  80. data/tools/fop/lib/xalan.NOTICE.txt +44 -0
  81. data/tools/fop/lib/xalan.regexp.LICENSE.txt +52 -0
  82. data/tools/fop/lib/xalan.runtime.LICENSE.txt +20 -0
  83. data/tools/fop/lib/xerces.LICENSE.txt +56 -0
  84. data/tools/fop/lib/xercesImpl-2.9.1.jar +0 -0
  85. data/tools/fop/lib/xercesImpl.LICENSE.txt +201 -0
  86. data/tools/fop/lib/xercesImpl.NOTICE.txt +14 -0
  87. data/tools/fop/lib/xml-apis-1.3.04.jar +0 -0
  88. data/tools/fop/lib/xml-apis-ext-1.3.04.jar +0 -0
  89. data/tools/fop/lib/xml-apis-ext.LICENSE.dom-documentation.txt +73 -0
  90. data/tools/fop/lib/xml-apis-ext.LICENSE.dom-software.txt +61 -0
  91. data/tools/fop/lib/xml-apis-ext.LICENSE.sac.html +75 -0
  92. data/tools/fop/lib/xml-apis-ext.LICENSE.txt +202 -0
  93. data/tools/fop/lib/xml-apis-ext.NOTICE.txt +16 -0
  94. data/tools/fop/lib/xml-apis-ext.README.dom.txt +56 -0
  95. data/tools/fop/lib/xml-apis.LICENSE-SAX.html +17 -0
  96. data/tools/fop/lib/xml-apis.LICENSE.DOM-documentation.html +74 -0
  97. data/tools/fop/lib/xml-apis.LICENSE.DOM-software.html +66 -0
  98. data/tools/fop/lib/xml-apis.LICENSE.txt +201 -0
  99. data/tools/fop/lib/xml-apis.NOTICE.txt +13 -0
  100. data/tools/fop/lib/xmlgraphics-commons-2.3.jar +0 -0
  101. data/tools/fop/lib/xmlgraphics-commons.LICENSE.txt +202 -0
  102. data/tools/fop/lib/xmlgraphics-commons.NOTICE.txt +5 -0
  103. data/tools/pdfbox/pdfbox-app-2.0.13.jar +0 -0
  104. data/tools/pdfbox/{pdfbox-app-1.8.10.jar → preflight-app-2.0.13.jar} +0 -0
  105. metadata +78 -252
  106. data/lib/libis/format/type_database.rb +0 -201
  107. data/spec/converter_audio_spec.rb +0 -66
  108. data/spec/converter_fop_spec.rb +0 -37
  109. data/spec/converter_image_spec.rb +0 -166
  110. data/spec/converter_office_spec.rb +0 -84
  111. data/spec/converter_pdf_spec.rb +0 -30
  112. data/spec/converter_repository_spec.rb +0 -97
  113. data/spec/converter_spreadsheet_spec.rb +0 -39
  114. data/spec/converter_video_spec.rb +0 -97
  115. data/spec/converter_xsl_spec.rb +0 -56
  116. data/spec/data/Cevennes2.bmp +0 -0
  117. data/spec/data/Cevennes2.jp2 +0 -0
  118. data/spec/data/Cevennes2.ppm +0 -22492
  119. data/spec/data/NikonRaw-CameraRaw.TIF +0 -0
  120. data/spec/data/NikonRaw-CaptureOne.tif +0 -0
  121. data/spec/data/audio/carlin_disappointed.aac +0 -0
  122. data/spec/data/audio/carlin_disappointed.ac3 +0 -0
  123. data/spec/data/audio/carlin_disappointed.aiff +0 -0
  124. data/spec/data/audio/carlin_disappointed.au +0 -0
  125. data/spec/data/audio/carlin_disappointed.flac +0 -0
  126. data/spec/data/audio/carlin_disappointed.m4a +0 -0
  127. data/spec/data/audio/carlin_disappointed.mka +0 -0
  128. data/spec/data/audio/carlin_disappointed.mp3 +0 -0
  129. data/spec/data/audio/carlin_disappointed.ogg +0 -0
  130. data/spec/data/audio/carlin_disappointed.ra +0 -0
  131. data/spec/data/audio/carlin_disappointed.voc +0 -0
  132. data/spec/data/audio/carlin_disappointed.wav +0 -0
  133. data/spec/data/audio/carlin_disappointed.wma +0 -0
  134. data/spec/data/audio/greensleeves.aac +0 -0
  135. data/spec/data/audio/greensleeves.ac3 +0 -0
  136. data/spec/data/audio/greensleeves.aiff +0 -0
  137. data/spec/data/audio/greensleeves.au +0 -0
  138. data/spec/data/audio/greensleeves.flac +0 -0
  139. data/spec/data/audio/greensleeves.m4a +0 -0
  140. data/spec/data/audio/greensleeves.mka +0 -0
  141. data/spec/data/audio/greensleeves.mp3 +0 -0
  142. data/spec/data/audio/greensleeves.ogg +0 -0
  143. data/spec/data/audio/greensleeves.ra +0 -0
  144. data/spec/data/audio/greensleeves.voc +0 -0
  145. data/spec/data/audio/greensleeves.wav +0 -0
  146. data/spec/data/audio/greensleeves.wma +0 -0
  147. data/spec/data/audio/king_nonviolence.aac +0 -0
  148. data/spec/data/audio/king_nonviolence.ac3 +0 -0
  149. data/spec/data/audio/king_nonviolence.aiff +0 -0
  150. data/spec/data/audio/king_nonviolence.au +0 -0
  151. data/spec/data/audio/king_nonviolence.flac +0 -0
  152. data/spec/data/audio/king_nonviolence.m4a +0 -0
  153. data/spec/data/audio/king_nonviolence.mka +0 -0
  154. data/spec/data/audio/king_nonviolence.mp3 +0 -0
  155. data/spec/data/audio/king_nonviolence.ogg +0 -0
  156. data/spec/data/audio/king_nonviolence.ra +0 -0
  157. data/spec/data/audio/king_nonviolence.voc +0 -0
  158. data/spec/data/audio/king_nonviolence.wav +0 -0
  159. data/spec/data/audio/king_nonviolence.wma +0 -0
  160. data/spec/data/audio/top_gun_secret.aac +0 -0
  161. data/spec/data/audio/top_gun_secret.ac3 +0 -0
  162. data/spec/data/audio/top_gun_secret.aiff +0 -0
  163. data/spec/data/audio/top_gun_secret.au +0 -0
  164. data/spec/data/audio/top_gun_secret.flac +0 -0
  165. data/spec/data/audio/top_gun_secret.m4a +0 -0
  166. data/spec/data/audio/top_gun_secret.mka +0 -0
  167. data/spec/data/audio/top_gun_secret.mp3 +0 -0
  168. data/spec/data/audio/top_gun_secret.ogg +0 -0
  169. data/spec/data/audio/top_gun_secret.ra +0 -0
  170. data/spec/data/audio/top_gun_secret.voc +0 -0
  171. data/spec/data/audio/top_gun_secret.wav +0 -0
  172. data/spec/data/audio/top_gun_secret.wma +0 -0
  173. data/spec/data/multipage.tif +0 -0
  174. data/spec/data/multipage.tif.jp2 +0 -0
  175. data/spec/data/test-ead.xml +0 -392
  176. data/spec/data/test-jpg.tif +0 -0
  177. data/spec/data/test-lzw.tif +0 -0
  178. data/spec/data/test-options.jpg +0 -0
  179. data/spec/data/test-options.png +0 -0
  180. data/spec/data/test.bmp +0 -0
  181. data/spec/data/test.doc +0 -0
  182. data/spec/data/test.docx +0 -0
  183. data/spec/data/test.gif +0 -0
  184. data/spec/data/test.jpg +0 -0
  185. data/spec/data/test.ods +0 -0
  186. data/spec/data/test.odt +0 -0
  187. data/spec/data/test.pdf +0 -0
  188. data/spec/data/test.pdf.tif +0 -0
  189. data/spec/data/test.png +0 -0
  190. data/spec/data/test.ps +0 -8631
  191. data/spec/data/test.psd +0 -0
  192. data/spec/data/test.rtf +0 -1455
  193. data/spec/data/test.tif +0 -0
  194. data/spec/data/test.txt +0 -12
  195. data/spec/data/test.xcf +0 -0
  196. data/spec/data/test.xls +0 -0
  197. data/spec/data/test.xlsx +0 -0
  198. data/spec/data/test.xml +0 -4
  199. data/spec/data/test_pdfa.pdf +0 -0
  200. data/spec/data/video/SampleVideo_1080x720_2mb.flv +0 -0
  201. data/spec/data/video/SampleVideo_1080x720_2mb.mkv +0 -0
  202. data/spec/data/video/SampleVideo_1080x720_2mb.mp4 +0 -0
  203. data/spec/data/video/SampleVideo_176x144_2mb.3gp +0 -0
  204. data/spec/data/video/SampleVideo_320x240_2mb.3gp +0 -0
  205. data/spec/data/video/SampleVideo_360x240_2mb.flv +0 -0
  206. data/spec/data/video/SampleVideo_360x240_2mb.mkv +0 -0
  207. data/spec/data/video/SampleVideo_360x240_2mb.mp4 +0 -0
  208. data/spec/data/video/copyright.png +0 -0
  209. data/spec/data/xml/134476_ead.XML +0 -1
  210. data/spec/data/xml/134476_ead.pdf +0 -0
  211. data/spec/data/xml/134476_fo.XML +0 -383
  212. data/spec/data/xml/134476_raw.XML +0 -141
  213. data/spec/data/xml/ead2fo_pdf.xsl +0 -1453
  214. data/spec/data/xml/header_nolink_pdf.xsl +0 -120
  215. data/spec/data/xml/lookupLists.xsl +0 -488
  216. data/spec/data/xml/scope_eadToHTML.xsl +0 -2376
  217. data/spec/data/xml/scope_xmlToEAD_dom.xsl +0 -952
  218. data/spec/identifier_spec.rb +0 -161
  219. data/spec/spec_helper.rb +0 -58
  220. data/spec/test_types.yml +0 -12
  221. data/spec/type_database_spec.rb +0 -140
  222. data/tools/pdfbox/preflight-app-1.8.10.jar +0 -0
@@ -1,201 +0,0 @@
1
- # coding: utf-8
2
-
3
- require 'singleton'
4
- require 'yaml'
5
-
6
- require 'backports/rails/hash'
7
- require 'libis/tools/logger'
8
- require 'libis/tools/extend/string'
9
-
10
- require_relative 'config'
11
-
12
- module Libis
13
- module Format
14
-
15
- class TypeDatabase
16
- include Singleton
17
- include ::Libis::Tools::Logger
18
-
19
- def self.typeinfo(t)
20
- self.instance.types[t.to_sym] || {}
21
- end
22
-
23
- def self.enrich(info, map_keys = {})
24
- return {} unless info.is_a? Hash
25
- mapper = Hash.new {|hash,key| hash[key] = key}
26
- mapper.merge! map_keys
27
- unless (puid = info[mapper[:PUID]]).blank?
28
- info[mapper[:TYPE]] ||= puid_infos(puid).first[:TYPE] rescue nil
29
- end
30
- unless (mime = info[mapper[:MIME]]).blank?
31
- info[mapper[:TYPE]] ||= mime_infos(mime).first[:TYPE] rescue nil
32
- end
33
- unless (type_name = info[mapper[:TYPE]]).nil?
34
- mapper.keys.each do |key|
35
- info[mapper[key]] = get(type_name, key) || info[mapper[key]]
36
- end
37
- info[mapper[:GROUP]] = self.type_group(type_name)
38
- end
39
- info
40
- end
41
-
42
- def self.normalize(info, map_keys = {})
43
- return {} unless info.is_a? Hash
44
- mapper = Hash.new {|hash,key| hash[key] = key}
45
- mapper.merge! map_keys
46
- unless (puid = info[mapper[:PUID]]).blank?
47
- info[mapper[:TYPE]] ||= self.puid_infos(puid).first[:TYPE] rescue nil
48
- end
49
- unless (mime = info[mapper[:MIME]]).blank?
50
- info[mapper[:TYPE]] ||= self.mime_infos(mime).first[:TYPE] rescue nil
51
- end
52
- unless (type_name = info[mapper[:TYPE]]).nil?
53
- info[mapper[:MIME]] = self.type_mimetypes(type_name).first if self.type_mimetypes(type_name).first
54
- info[mapper[:GROUP]] = self.type_group(type_name)
55
- end
56
- info
57
- end
58
-
59
- def self.get(type_name, key)
60
- case key
61
- when :MIME
62
- type_mimetypes(type_name).first
63
- when :PUID
64
- type_puids(type_name).first
65
- when :EXTENSION
66
- type_extentions(type_name).first
67
- else
68
- self.typeinfo(type_name)[key]
69
- end
70
- end
71
-
72
- def self.type_group(t)
73
- typeinfo(t)[:GROUP]
74
- end
75
-
76
- def self.type_mimetypes(t)
77
- typeinfo(t)[:MIME] || []
78
- end
79
-
80
- def self.type_puids(t)
81
- typeinfo(t)[:PUID] || []
82
- end
83
-
84
- def self.type_extentions(t)
85
- typeinfo(t)[:EXTENSIONS] || []
86
- end
87
-
88
- def self.group_types(group)
89
- self.instance.types.select do |_, v|
90
- v[:GROUP] == group.to_sym
91
- end.keys
92
- end
93
-
94
- def self.puid_infos(puid)
95
- self.instance.types.select do |_, v|
96
- v[:PUID].include? puid rescue false
97
- end.values
98
- end
99
-
100
- def self.puid_types(puid)
101
- self.instance.types.select do |_, v|
102
- v[:PUID].include? puid rescue false
103
- end.keys
104
- end
105
-
106
- def self.puid_groups(puid)
107
- puid_types(puid).map do |t|
108
- type_group t
109
- end
110
- end
111
-
112
- def self.mime_infos(mime)
113
- self.instance.types.select do |_, v|
114
- v[:MIME].include? mime rescue false
115
- end.values
116
- end
117
-
118
- def self.mime_types(mime)
119
- self.instance.types.select do |_, v|
120
- v[:MIME].include? mime rescue false
121
- end.keys
122
- end
123
-
124
- def self.mime_groups(mime)
125
- mime_types(mime).map do |t|
126
- type_group t
127
- end
128
- end
129
-
130
- def self.ext_infos(ext)
131
- ext = ext.gsub /^\./, ''
132
- self.instance.types.select do |_, v|
133
- v[:EXTENSIONS].include?(ext) rescue false
134
- end.values
135
- end
136
-
137
- def self.ext_types(ext)
138
- ext = ext.gsub /^\./, ''
139
- self.instance.types.select do |_, v|
140
- v[:EXTENSIONS].include?(ext) rescue false
141
- end.keys
142
- end
143
-
144
- def self.puid_typeinfo(puid)
145
- self.instance.types.each do |_, v|
146
- return v if v[:PUID] and v[:PUID].include?(puid)
147
- end
148
- nil
149
- end
150
-
151
- def self.known_mime?(mime)
152
- self.instance.types.each do |_, v|
153
- return true if v[:MIME].include? mime
154
- end
155
- false
156
- end
157
-
158
- attr_reader :types
159
-
160
- def load_types(file_or_hash = {}, append = true)
161
- hash = file_or_hash.is_a?(Hash) ? file_or_hash : YAML::load_file(file_or_hash)
162
- # noinspection RubyResolve
163
- hash.each do |group, type_info|
164
- type_info.each do |type_name, info|
165
- type_key = type_name.to_sym
166
- info.symbolize_keys!
167
- info[:TYPE] = type_key
168
- info[:GROUP] = group.to_sym
169
- info[:MIME] = info[:MIME].strip.split(/[\s,]+/).map { |v| v.strip } rescue []
170
- info[:EXTENSIONS] = info[:EXTENSIONS].strip.split(/[\s,]+/).map { |v| v.strip } rescue []
171
- info[:PUID] = info[:PUID].strip.split(/[\s,]+/).map { |v| v.strip } if info[:PUID]
172
- if @types.has_key?(type_key)
173
- warn 'Type %s already defined; merging with info from %s.', type_name.to_s, file_or_hash
174
- info.merge!(@types[type_key]) do |_,v_new,v_old|
175
- case v_old
176
- when Array
177
- append ? v_old + v_new : v_new + v_old
178
- when Hash
179
- append ? v_new.merge(v_old) : v_old.merge(v_new)
180
- else
181
- append ? v_old : v_new
182
- end
183
- end
184
- end
185
- @types[type_key] = info
186
- end
187
- end
188
- end
189
-
190
- protected
191
-
192
- def initialize
193
- @types = Hash.new
194
- type_database = Libis::Format::Config[:type_database]
195
- load_types(type_database)
196
- end
197
-
198
- end
199
-
200
- end
201
- end
@@ -1,66 +0,0 @@
1
- # encoding: utf-8
2
- require 'spec_helper'
3
-
4
- require 'libis/format/converter/audio_converter'
5
-
6
- describe 'Converters' do
7
-
8
- let(:repository) {Libis::Format::Converter::Repository}
9
- let(:file_dir) {File.dirname(__FILE__)}
10
-
11
- before(:all) {
12
- Libis::Tools::Config.logger.level = 'off'
13
- }
14
-
15
- context 'Audio Converter' do
16
-
17
- let(:converter) {Libis::Format::Converter::AudioConverter.new}
18
- extensions = %w'aac aiff au flac m4a mka mp3 ra voc wav wma'
19
- confidence = {
20
- aac: 0.86,
21
- aiff: 0.99,
22
- au: 0.99,
23
- flac: 0.99,
24
- m4a: 0.93,
25
- mka: 0.94,
26
- mp3: 0.95,
27
- ra: 0.92,
28
- voc: 0.99,
29
- wav: 0.99,
30
- wma: 0.9
31
- }
32
- targets = %w'mp3 flac wav'
33
- sources = %w'carlin_disappointed greensleeves king_nonviolence top_gun_secret'
34
- quality = {
35
- carlin_disappointed: 1.0,
36
- greensleeves: 0.95,
37
- king_nonviolence: 1.0,
38
- top_gun_secret: 0.95
39
- }
40
-
41
- let(:data_dir) {File.join(file_dir, 'data', 'audio')}
42
-
43
- context 'converts' do
44
- sources.each do |source|
45
- extensions.each do |ext|
46
- next unless (File.exists?(File.join(File.dirname(__FILE__), 'data', 'audio', "#{source}.#{ext}")))
47
- (targets - [ext]).each do |tgt|
48
- it "#{source} #{ext} to #{tgt}" do
49
- src_file = File.join(data_dir, "#{source}.#{ext}")
50
- ref_file = File.join(data_dir, "#{source}.#{tgt}")
51
- tgt_file = File.join('', 'tmp', "test.#{source}.#{ext}.#{tgt}")
52
- FileUtils.remove tgt_file, force: true
53
- FileUtils.mkdir_p File.dirname(tgt_file)
54
- result = converter.convert(src_file, tgt_file, tgt.upcase.to_sym)
55
- expect(result).to eq tgt_file
56
- expect(result).to sound_like ref_file, confidence[ext.to_sym] * quality[source.to_sym], 11025, 1
57
- FileUtils.remove tgt_file, force: true
58
- end
59
- end
60
- end
61
- end
62
- end
63
-
64
- end
65
-
66
- end
@@ -1,37 +0,0 @@
1
- # encoding: utf-8
2
- require 'spec_helper'
3
-
4
- require 'fileutils'
5
- require 'rspec/matchers'
6
-
7
- require 'libis/format/converter/fop_pdf_converter'
8
-
9
- describe 'Converters' do
10
-
11
- let(:repository) {Libis::Format::Converter::Repository}
12
- let(:file_dir) {File.dirname(__FILE__)}
13
-
14
- before(:all) {
15
- Libis::Tools::Config.logger.level = 'error'
16
- }
17
-
18
- context 'Apache FOP-PDF Converter' do
19
-
20
- let(:converter) {Libis::Format::Converter::FopPdfConverter.new}
21
- let(:data_dir) {File.join(file_dir, 'data', 'xml')}
22
-
23
- it 'converts XML-FO to PDF' do
24
- if File.exist?(Libis::Format::Config[:fop_jar])
25
- src_file = File.join data_dir, '134476_fo.XML'
26
- tgt_file = File.join '', 'tmp', '134476_ead.pdf'
27
- cmp_file = File.join data_dir, '134476_ead.pdf'
28
- FileUtils.remove tgt_file, force: true
29
- FileUtils.mkdir_p File.dirname(tgt_file)
30
- result = converter.convert src_file, tgt_file, :PDF
31
- expect(result).to eq tgt_file
32
- end
33
- end
34
-
35
- end
36
-
37
- end
@@ -1,166 +0,0 @@
1
- # encoding: utf-8
2
- require 'spec_helper'
3
-
4
- require 'libis/format/converter/image_converter'
5
- require 'libis/format/converter/jp2_converter'
6
-
7
- describe 'Converters' do
8
-
9
- let(:repository) {Libis::Format::Converter::Repository}
10
- let(:file_dir) {File.dirname(__FILE__)}
11
-
12
- before(:all) {
13
- Libis::Tools::Config.logger.level = 'off'
14
- }
15
-
16
- context 'Image Converter' do
17
-
18
- let(:converter) {Libis::Format::Converter::ImageConverter.new}
19
- let(:diff_file) {File.join('', 'tmp', 'diff.jpg')}
20
-
21
- it 'converts TIFF to JPEG' do
22
- src_file = File.join(file_dir, 'data', 'test.tif')
23
- ref_file = File.join(file_dir, 'data', 'test.jpg')
24
- tgt_file = File.join('', 'tmp', 'test.jpg')
25
- FileUtils.mkdir_p File.dirname(tgt_file)
26
- converter.delete_date
27
- result = converter.convert(src_file, tgt_file, :JPG)
28
- expect(result).to eq tgt_file
29
- compare = MiniMagick::Tool::Compare.new
30
- compare << ref_file << tgt_file
31
- compare.metric << 'MAE'
32
- compare.fuzz << '1%'
33
- compare << diff_file
34
- compare.call {|_, _, status| expect(status).to be 0}
35
- FileUtils.rm tgt_file, force: true
36
- FileUtils.rm diff_file, force: true
37
- end
38
-
39
- it 'converts TIFF to PNG' do
40
- src_file = File.join(file_dir, 'data', 'test.tif')
41
- ref_file = File.join(file_dir, 'data', 'test.png')
42
- tgt_file = File.join('', 'tmp', 'test.png')
43
- FileUtils.mkdir_p File.dirname(tgt_file)
44
- converter.delete_date
45
- converter.page(0)
46
- result = converter.convert(src_file, tgt_file, :PNG)
47
- expect(result).to eq tgt_file
48
- compare = MiniMagick::Tool::Compare.new
49
- compare << ref_file << tgt_file
50
- compare.metric << 'MAE'
51
- compare << diff_file
52
- compare.call {|_, _, status| expect(status).to be 0}
53
- FileUtils.rm tgt_file, force: true
54
- FileUtils.rm diff_file, force: true
55
- end
56
-
57
- it 'converts PDF to TIFF' do
58
- src_file = File.join(file_dir, 'data', 'test.pdf')
59
- ref_file = File.join(file_dir, 'data', 'test.pdf.tif')
60
- tgt_file = File.join('', 'tmp', 'test.pdf.tif')
61
- FileUtils.mkdir_p File.dirname(tgt_file)
62
- converter.delete_date
63
- result = converter.convert(src_file, tgt_file, :TIFF)
64
- expect(result).to eq tgt_file
65
- compare = MiniMagick::Tool::Compare.new
66
- compare << ref_file << tgt_file
67
- compare.metric << 'AE'
68
- compare.fuzz << '100%'
69
- compare << diff_file
70
- compare.call {|_, _, status| expect(status).to be 0}
71
- FileUtils.rm tgt_file, force: true
72
- FileUtils.rm diff_file, force: true
73
- end
74
-
75
- it 'converts TIFF to PNG with many options' do
76
- src_file = File.join(file_dir, 'data', 'test.tif')
77
- ref_file = File.join(file_dir, 'data', 'test-options.png')
78
- tgt_file = File.join('', 'tmp', 'test-options.png')
79
- FileUtils.mkdir_p File.dirname(tgt_file)
80
- converter.watermark(text: 'RSPEC', size: 5, opacity: 0.1, rotation: 15, gap: 0.5, composition: 'modulate')
81
- converter.delete_date
82
- result = converter.convert(src_file, tgt_file, :PNG, options: {scale: '150%'})
83
- expect(result).to eq tgt_file
84
- compare = MiniMagick::Tool::Compare.new
85
- compare << ref_file << tgt_file
86
- compare.metric << 'AE'
87
- compare.fuzz << '100%'
88
- compare << diff_file
89
- compare.call do |_stdin, _stdout, status|
90
- expect(status).to be 0
91
- end
92
- FileUtils.rm tgt_file, force: true
93
- FileUtils.rm diff_file, force: true
94
- end
95
-
96
- it 'converts only first page of multipage TIFF to JP2' do
97
- src_file = File.join(file_dir, 'data', 'multipage.tif')
98
- ref_file = File.join(file_dir, 'data', 'multipage.tif.jp2')
99
- tgt_file = File.join('', 'tmp', 'test.jp2')
100
- FileUtils.mkdir_p File.dirname(tgt_file)
101
- converter.delete_date
102
- converter.quiet(true)
103
- converter.page(0)
104
- result = converter.convert(src_file, tgt_file, :JP2)
105
- expect(result).to eq tgt_file
106
- expect(File.exist?(tgt_file)).to be_truthy
107
- compare = MiniMagick::Tool::Compare.new
108
- compare << ref_file << tgt_file
109
- compare.metric << 'MAE'
110
- compare.fuzz << '10%'
111
- compare << diff_file
112
- compare.call {|_, _, status| expect(status).to be 0}
113
- FileUtils.rm tgt_file, force: true
114
- FileUtils.rm diff_file, force: true
115
- end
116
-
117
- it 'converts TIFF to JP2' do
118
- src_file = File.join(file_dir, 'data', 'test.tif')
119
- tgt_file = File.join('', 'tmp', 'test.jp2')
120
- FileUtils.mkdir_p File.dirname(tgt_file)
121
- converter.delete_date
122
- result = converter.convert(src_file, tgt_file, :JP2)
123
- expect(result).to eq tgt_file
124
- expect(File.exist?(tgt_file)).to be_truthy
125
- FileUtils.rm tgt_file, force: true
126
- end
127
-
128
-
129
- end
130
-
131
- context 'JP2 Converter', if: File.exists?(Libis::Format::Config[:j2kdriver]) do
132
-
133
- let(:converter) {Libis::Format::Converter::Jp2Converter.new}
134
- let(:diff_file) {File.join('', 'tmp', 'diff.jpg')}
135
-
136
- it 'converts TIFF to JP2' do
137
- src_file = File.join(file_dir, 'data', 'test.tif')
138
- tgt_file = File.join('', 'tmp', 'test.jp2')
139
- FileUtils.mkdir_p File.dirname(tgt_file)
140
- result = converter.convert(src_file, tgt_file, :JP2)
141
- expect(result).to eq tgt_file
142
- expect(File.exist?(tgt_file)).to be_truthy
143
- FileUtils.rm tgt_file, force: true
144
- end
145
-
146
- it 'converts only first page of multipage TIFF to JP2' do
147
- src_file = File.join(file_dir, 'data', 'multipage.tif')
148
- ref_file = File.join(file_dir, 'data', 'multipage.tif.jp2')
149
- tgt_file = File.join('', 'tmp', 'test.jp2')
150
- FileUtils.mkdir_p File.dirname(tgt_file)
151
- result = converter.convert(src_file, tgt_file, :JP2)
152
- expect(result).to eq tgt_file
153
- expect(File.exist?(tgt_file)).to be_truthy
154
- compare = MiniMagick::Tool::Compare.new
155
- compare << ref_file << tgt_file
156
- compare.metric << 'MAE'
157
- compare.fuzz << '10%'
158
- compare << diff_file
159
- compare.call {|_, _, status| expect(status).to be 0}
160
- FileUtils.rm tgt_file, force: true
161
- FileUtils.rm diff_file, force: true
162
- end
163
-
164
- end
165
-
166
- end