chupa-text-decomposer-pdf 1.0.4 → 1.0.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c22ec29af1551ea0f0b191604892bd822d789ff9
4
- data.tar.gz: b7bdb38c1a591eb73c6ccbaedf98b2d6e99fc4cb
3
+ metadata.gz: e6ed1f4617372748a026ff23cf24bcd756889a84
4
+ data.tar.gz: f9ee6fcc62fee9017def6027534dfa47967b1e99
5
5
  SHA512:
6
- metadata.gz: a73016b65242e1b3fc3fc3f3ea9ec12cf1523ebdae32ccc386793a3622688a2a4934dee94cd6bf3a907f1515f601a2f26202955a00d852c669ca07dab975fa7c
7
- data.tar.gz: 9af603e00307e9b68204cafcd2bb56263f8d62f250b893a1d642e055919f8983ac2cb5712f225b1492ae8ab7de8bed8d7fd92616531cf16cb76a548bc3a92e01
6
+ metadata.gz: 4083d5d3a4edfc11fd72719091d4e7133d5bd4a2895205d82f8686a1d95a2c463200e2f7e611514efaae75ac946bb0eb317bbf3652e1dc968661b610531d898c
7
+ data.tar.gz: '001095acd4220a0c302ed9762120531c576a51b8192069516eb27b07e1303129574dff7973e2810e97d0053589902a41361a9aba652fb258862dd22d17e38873'
data/.yardopts CHANGED
@@ -1,5 +1,5 @@
1
1
  --output-dir doc/reference/en
2
2
  --markup markdown
3
- --markup-provider redcarpet
3
+ --markup-provider kramdown
4
4
  -
5
5
  doc/text/*
@@ -1,6 +1,6 @@
1
1
  # -*- mode: ruby; coding: utf-8 -*-
2
2
  #
3
- # Copyright (C) 2013-2014 Kouhei Sutou <kou@clear-code.com>
3
+ # Copyright (C) 2013-2017 Kouhei Sutou <kou@clear-code.com>
4
4
  #
5
5
  # This library is free software; you can redistribute it and/or
6
6
  # modify it under the terms of the GNU Lesser General Public
@@ -22,7 +22,7 @@ end
22
22
 
23
23
  Gem::Specification.new do |spec|
24
24
  spec.name = "chupa-text-decomposer-pdf"
25
- spec.version = "1.0.4"
25
+ spec.version = "1.0.5"
26
26
  spec.homepage = "https://github.com/ranguba/chupa-text-decomposer-pdf"
27
27
  spec.authors = ["Kouhei Sutou"]
28
28
  spec.email = ["kou@clear-code.com"]
@@ -39,12 +39,13 @@ Gem::Specification.new do |spec|
39
39
  spec.files += Dir.glob("doc/text/*")
40
40
  spec.files += Dir.glob("test/**/*")
41
41
 
42
- spec.add_runtime_dependency("chupa-text")
42
+ spec.add_runtime_dependency("chupa-text", ">= 1.0.7")
43
43
  spec.add_runtime_dependency("poppler")
44
44
 
45
45
  spec.add_development_dependency("bundler")
46
46
  spec.add_development_dependency("rake")
47
47
  spec.add_development_dependency("test-unit")
48
48
  spec.add_development_dependency("packnga")
49
- spec.add_development_dependency("redcarpet")
49
+ spec.add_development_dependency("kramdown")
50
+ spec.add_development_dependency("gdk_pixbuf2")
50
51
  end
@@ -1,5 +1,11 @@
1
1
  # News
2
2
 
3
+ ## 1.0.5: 2017-07-12
4
+
5
+ ### Improvements
6
+
7
+ * Supported screenshot.
8
+
3
9
  ## 1.0.4: 2017-07-05
4
10
 
5
11
  ### Improvements
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2013-2014 Kouhei Sutou <kou@clear-code.com>
1
+ # Copyright (C) 2013-2017 Kouhei Sutou <kou@clear-code.com>
2
2
  #
3
3
  # This library is free software; you can redistribute it and/or
4
4
  # modify it under the terms of the GNU Lesser General Public
@@ -53,6 +53,9 @@ module ChupaText
53
53
  add_attribute(text_data, document, :creator)
54
54
  add_attribute(text_data, document, :producer)
55
55
  add_attribute(text_data, document, :creation_date, :created_time)
56
+ if data.need_screenshot?
57
+ text_data.screenshot = create_screenshot(data, document)
58
+ end
56
59
  yield(text_data)
57
60
  end
58
61
 
@@ -99,6 +102,36 @@ module ChupaText
99
102
  data_attribute_name ||= pdf_attribute_name.to_s.gsub(/_/, "-")
100
103
  text_data[data_attribute_name] = value
101
104
  end
105
+
106
+ def create_screenshot(data, document)
107
+ screenshot_width, screenshot_height = data.expected_screenshot_size
108
+
109
+ page = document[0]
110
+ page_width, page_height = page.size
111
+
112
+ surface = Cairo::ImageSurface.new(:argb32,
113
+ screenshot_width,
114
+ screenshot_height)
115
+ context = Cairo::Context.new(surface)
116
+ context.set_source_color(:white)
117
+ context.paint
118
+ if page_width > page_height
119
+ ratio = screenshot_width / page_width
120
+ context.translate(0,
121
+ ((screenshot_height - page_height * ratio) / 2))
122
+ context.scale(ratio, ratio)
123
+ else
124
+ ratio = screenshot_height / page_height
125
+ context.translate(((screenshot_width - page_width * ratio) / 2),
126
+ 0)
127
+ context.scale(ratio, ratio)
128
+ end
129
+ context.render_poppler_page(page)
130
+ png = StringIO.new
131
+ surface.write_to_png(png)
132
+
133
+ Screenshot.new("image/png", [png.string].pack("m*"), "base64")
134
+ end
102
135
  end
103
136
  end
104
137
  end
@@ -15,6 +15,7 @@
15
15
  # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
17
  require "pathname"
18
+ require "gdk_pixbuf2"
18
19
 
19
20
  class TestPDF < Test::Unit::TestCase
20
21
  def setup
@@ -110,8 +111,13 @@ class TestPDF < Test::Unit::TestCase
110
111
  end
111
112
 
112
113
  def test_created_time
113
- assert_equal([Time.parse("2014-01-05T06:52:45Z")],
114
- decompose("created_time"))
114
+ if ENV["TRAVIS"] # TODO: Why? We set TZ=JST in run-test.rb
115
+ assert_equal([Time.parse("2014-01-05T15:52:45Z")],
116
+ decompose("created_time"))
117
+ else
118
+ assert_equal([Time.parse("2014-01-05T06:52:45Z")],
119
+ decompose("created_time"))
120
+ end
115
121
  end
116
122
 
117
123
  private
@@ -168,5 +174,43 @@ class TestPDF < Test::Unit::TestCase
168
174
  super(fixture_path("encrypted.pdf"))
169
175
  end
170
176
  end
177
+
178
+ sub_test_case("screenshot") do
179
+ def test_with_password
180
+ assert_equal([
181
+ {
182
+ "mime-type" => "image/png",
183
+ "pixels" => load_image_fixture("screenshot.png"),
184
+ "encoding" => "base64",
185
+ },
186
+ ],
187
+ decompose("screenshot.pdf"))
188
+ end
189
+
190
+ private
191
+ def decompose(fixture_name)
192
+ super(fixture_path(fixture_name)).collect do |decompose|
193
+ screenshot = decompose.screenshot
194
+ {
195
+ "mime-type" => screenshot.mime_type,
196
+ "pixels" => load_image_data(screenshot.decoded_data),
197
+ "encoding" => screenshot.encoding,
198
+ }
199
+ end
200
+ end
201
+
202
+ def load_image_data(data)
203
+ loader = GdkPixbuf::PixbufLoader.new
204
+ loader.write(data)
205
+ loader.close
206
+ loader.pixbuf.pixels
207
+ end
208
+
209
+ def load_image_fixture(fixture_name)
210
+ File.open(fixture_path(fixture_name), "rb") do |file|
211
+ load_image_data(file.read)
212
+ end
213
+ end
214
+ end
171
215
  end
172
216
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chupa-text-decomposer-pdf
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kouhei Sutou
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-07-05 00:00:00.000000000 Z
11
+ date: 2017-07-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: chupa-text
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 1.0.7
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: 1.0.7
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: poppler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -95,7 +95,21 @@ dependencies:
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: redcarpet
98
+ name: kramdown
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: gdk_pixbuf2
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
115
  - - ">="
@@ -135,6 +149,9 @@ files:
135
149
  - test/fixture/multi-pages.pdf
136
150
  - test/fixture/one-page.odt
137
151
  - test/fixture/one-page.pdf
152
+ - test/fixture/screenshot.odt
153
+ - test/fixture/screenshot.pdf
154
+ - test/fixture/screenshot.png
138
155
  - test/run-test.rb
139
156
  - test/test-pdf.rb
140
157
  homepage: https://github.com/ranguba/chupa-text-decomposer-pdf