hexapdf 0.9.0 → 0.9.1

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 (191) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -0
  3. data/CONTRIBUTERS +2 -1
  4. data/LICENSE +1 -1
  5. data/Rakefile +0 -1
  6. data/VERSION +1 -1
  7. data/examples/019-column_box.rb +57 -0
  8. data/lib/hexapdf.rb +4 -1
  9. data/lib/hexapdf/cli.rb +4 -1
  10. data/lib/hexapdf/cli/batch.rb +4 -1
  11. data/lib/hexapdf/cli/command.rb +4 -1
  12. data/lib/hexapdf/cli/files.rb +4 -1
  13. data/lib/hexapdf/cli/images.rb +4 -1
  14. data/lib/hexapdf/cli/info.rb +4 -1
  15. data/lib/hexapdf/cli/inspect.rb +4 -1
  16. data/lib/hexapdf/cli/merge.rb +4 -1
  17. data/lib/hexapdf/cli/modify.rb +4 -1
  18. data/lib/hexapdf/cli/optimize.rb +4 -1
  19. data/lib/hexapdf/cli/split.rb +5 -2
  20. data/lib/hexapdf/composer.rb +4 -1
  21. data/lib/hexapdf/configuration.rb +4 -1
  22. data/lib/hexapdf/content.rb +4 -1
  23. data/lib/hexapdf/content/canvas.rb +4 -1
  24. data/lib/hexapdf/content/color_space.rb +4 -1
  25. data/lib/hexapdf/content/graphic_object.rb +4 -1
  26. data/lib/hexapdf/content/graphic_object/arc.rb +4 -1
  27. data/lib/hexapdf/content/graphic_object/endpoint_arc.rb +4 -1
  28. data/lib/hexapdf/content/graphic_object/geom2d.rb +4 -1
  29. data/lib/hexapdf/content/graphic_object/solid_arc.rb +4 -1
  30. data/lib/hexapdf/content/graphics_state.rb +4 -1
  31. data/lib/hexapdf/content/operator.rb +4 -1
  32. data/lib/hexapdf/content/parser.rb +4 -1
  33. data/lib/hexapdf/content/processor.rb +4 -1
  34. data/lib/hexapdf/content/transformation_matrix.rb +4 -1
  35. data/lib/hexapdf/data_dir.rb +4 -1
  36. data/lib/hexapdf/dictionary.rb +4 -1
  37. data/lib/hexapdf/dictionary_fields.rb +4 -1
  38. data/lib/hexapdf/document.rb +4 -1
  39. data/lib/hexapdf/document/files.rb +4 -1
  40. data/lib/hexapdf/document/fonts.rb +4 -1
  41. data/lib/hexapdf/document/images.rb +4 -1
  42. data/lib/hexapdf/document/pages.rb +4 -1
  43. data/lib/hexapdf/encryption.rb +4 -1
  44. data/lib/hexapdf/encryption/aes.rb +4 -1
  45. data/lib/hexapdf/encryption/arc4.rb +4 -1
  46. data/lib/hexapdf/encryption/fast_aes.rb +4 -1
  47. data/lib/hexapdf/encryption/fast_arc4.rb +4 -1
  48. data/lib/hexapdf/encryption/identity.rb +4 -1
  49. data/lib/hexapdf/encryption/ruby_aes.rb +4 -1
  50. data/lib/hexapdf/encryption/ruby_arc4.rb +4 -1
  51. data/lib/hexapdf/encryption/security_handler.rb +4 -1
  52. data/lib/hexapdf/encryption/standard_security_handler.rb +4 -1
  53. data/lib/hexapdf/error.rb +4 -1
  54. data/lib/hexapdf/filter.rb +4 -1
  55. data/lib/hexapdf/filter/ascii85_decode.rb +4 -1
  56. data/lib/hexapdf/filter/ascii_hex_decode.rb +4 -1
  57. data/lib/hexapdf/filter/dct_decode.rb +4 -1
  58. data/lib/hexapdf/filter/encryption.rb +4 -1
  59. data/lib/hexapdf/filter/flate_decode.rb +4 -1
  60. data/lib/hexapdf/filter/jpx_decode.rb +4 -1
  61. data/lib/hexapdf/filter/lzw_decode.rb +4 -1
  62. data/lib/hexapdf/filter/predictor.rb +4 -1
  63. data/lib/hexapdf/filter/run_length_decode.rb +4 -1
  64. data/lib/hexapdf/font/cmap.rb +4 -1
  65. data/lib/hexapdf/font/cmap/parser.rb +4 -1
  66. data/lib/hexapdf/font/cmap/writer.rb +5 -2
  67. data/lib/hexapdf/font/encoding.rb +4 -1
  68. data/lib/hexapdf/font/encoding/base.rb +4 -1
  69. data/lib/hexapdf/font/encoding/difference_encoding.rb +4 -1
  70. data/lib/hexapdf/font/encoding/glyph_list.rb +4 -1
  71. data/lib/hexapdf/font/encoding/mac_expert_encoding.rb +4 -1
  72. data/lib/hexapdf/font/encoding/mac_roman_encoding.rb +4 -1
  73. data/lib/hexapdf/font/encoding/standard_encoding.rb +4 -1
  74. data/lib/hexapdf/font/encoding/symbol_encoding.rb +4 -1
  75. data/lib/hexapdf/font/encoding/win_ansi_encoding.rb +4 -1
  76. data/lib/hexapdf/font/encoding/zapf_dingbats_encoding.rb +4 -1
  77. data/lib/hexapdf/font/invalid_glyph.rb +4 -1
  78. data/lib/hexapdf/font/true_type.rb +4 -1
  79. data/lib/hexapdf/font/true_type/builder.rb +4 -1
  80. data/lib/hexapdf/font/true_type/font.rb +4 -1
  81. data/lib/hexapdf/font/true_type/optimizer.rb +4 -1
  82. data/lib/hexapdf/font/true_type/subsetter.rb +4 -1
  83. data/lib/hexapdf/font/true_type/table.rb +4 -1
  84. data/lib/hexapdf/font/true_type/table/cmap.rb +4 -1
  85. data/lib/hexapdf/font/true_type/table/cmap_subtable.rb +4 -1
  86. data/lib/hexapdf/font/true_type/table/directory.rb +4 -1
  87. data/lib/hexapdf/font/true_type/table/glyf.rb +4 -1
  88. data/lib/hexapdf/font/true_type/table/head.rb +4 -1
  89. data/lib/hexapdf/font/true_type/table/hhea.rb +4 -1
  90. data/lib/hexapdf/font/true_type/table/hmtx.rb +4 -1
  91. data/lib/hexapdf/font/true_type/table/kern.rb +4 -1
  92. data/lib/hexapdf/font/true_type/table/loca.rb +4 -1
  93. data/lib/hexapdf/font/true_type/table/maxp.rb +4 -1
  94. data/lib/hexapdf/font/true_type/table/name.rb +4 -1
  95. data/lib/hexapdf/font/true_type/table/os2.rb +4 -1
  96. data/lib/hexapdf/font/true_type/table/post.rb +4 -1
  97. data/lib/hexapdf/font/true_type_wrapper.rb +4 -1
  98. data/lib/hexapdf/font/type1.rb +4 -1
  99. data/lib/hexapdf/font/type1/afm_parser.rb +4 -1
  100. data/lib/hexapdf/font/type1/character_metrics.rb +4 -1
  101. data/lib/hexapdf/font/type1/font.rb +4 -1
  102. data/lib/hexapdf/font/type1/font_metrics.rb +4 -1
  103. data/lib/hexapdf/font/type1/pfb_parser.rb +4 -1
  104. data/lib/hexapdf/font/type1_wrapper.rb +4 -1
  105. data/lib/hexapdf/font_loader.rb +4 -1
  106. data/lib/hexapdf/font_loader/from_configuration.rb +4 -1
  107. data/lib/hexapdf/font_loader/from_file.rb +4 -1
  108. data/lib/hexapdf/font_loader/standard14.rb +4 -1
  109. data/lib/hexapdf/image_loader.rb +4 -1
  110. data/lib/hexapdf/image_loader/jpeg.rb +4 -1
  111. data/lib/hexapdf/image_loader/pdf.rb +4 -1
  112. data/lib/hexapdf/image_loader/png.rb +4 -1
  113. data/lib/hexapdf/importer.rb +4 -1
  114. data/lib/hexapdf/layout.rb +4 -1
  115. data/lib/hexapdf/layout/box.rb +4 -1
  116. data/lib/hexapdf/layout/column_box.rb +161 -0
  117. data/lib/hexapdf/layout/frame.rb +4 -1
  118. data/lib/hexapdf/layout/image_box.rb +4 -1
  119. data/lib/hexapdf/layout/inline_box.rb +4 -1
  120. data/lib/hexapdf/layout/line.rb +4 -1
  121. data/lib/hexapdf/layout/numeric_refinements.rb +4 -1
  122. data/lib/hexapdf/layout/style.rb +4 -1
  123. data/lib/hexapdf/layout/text_box.rb +4 -1
  124. data/lib/hexapdf/layout/text_fragment.rb +4 -1
  125. data/lib/hexapdf/layout/text_layouter.rb +4 -1
  126. data/lib/hexapdf/layout/text_shaper.rb +4 -1
  127. data/lib/hexapdf/layout/width_from_polygon.rb +4 -1
  128. data/lib/hexapdf/name_tree_node.rb +4 -1
  129. data/lib/hexapdf/number_tree_node.rb +4 -1
  130. data/lib/hexapdf/object.rb +4 -1
  131. data/lib/hexapdf/parser.rb +4 -1
  132. data/lib/hexapdf/rectangle.rb +4 -1
  133. data/lib/hexapdf/reference.rb +4 -1
  134. data/lib/hexapdf/revision.rb +4 -1
  135. data/lib/hexapdf/revisions.rb +4 -1
  136. data/lib/hexapdf/serializer.rb +9 -2
  137. data/lib/hexapdf/stream.rb +4 -1
  138. data/lib/hexapdf/task.rb +4 -1
  139. data/lib/hexapdf/task/dereference.rb +4 -1
  140. data/lib/hexapdf/task/optimize.rb +4 -1
  141. data/lib/hexapdf/tokenizer.rb +4 -1
  142. data/lib/hexapdf/type.rb +4 -1
  143. data/lib/hexapdf/type/action.rb +4 -1
  144. data/lib/hexapdf/type/actions.rb +4 -1
  145. data/lib/hexapdf/type/actions/go_to.rb +4 -1
  146. data/lib/hexapdf/type/actions/go_to_r.rb +4 -1
  147. data/lib/hexapdf/type/actions/launch.rb +4 -1
  148. data/lib/hexapdf/type/actions/uri.rb +4 -1
  149. data/lib/hexapdf/type/annotation.rb +4 -1
  150. data/lib/hexapdf/type/annotations.rb +4 -1
  151. data/lib/hexapdf/type/annotations/link.rb +4 -1
  152. data/lib/hexapdf/type/annotations/markup_annotation.rb +4 -1
  153. data/lib/hexapdf/type/annotations/text.rb +4 -1
  154. data/lib/hexapdf/type/catalog.rb +4 -1
  155. data/lib/hexapdf/type/cid_font.rb +4 -1
  156. data/lib/hexapdf/type/embedded_file.rb +4 -1
  157. data/lib/hexapdf/type/file_specification.rb +4 -1
  158. data/lib/hexapdf/type/font.rb +4 -1
  159. data/lib/hexapdf/type/font_descriptor.rb +4 -1
  160. data/lib/hexapdf/type/font_simple.rb +4 -1
  161. data/lib/hexapdf/type/font_true_type.rb +4 -1
  162. data/lib/hexapdf/type/font_type0.rb +4 -1
  163. data/lib/hexapdf/type/font_type1.rb +4 -1
  164. data/lib/hexapdf/type/font_type3.rb +4 -1
  165. data/lib/hexapdf/type/form.rb +4 -1
  166. data/lib/hexapdf/type/graphics_state_parameter.rb +4 -1
  167. data/lib/hexapdf/type/image.rb +4 -1
  168. data/lib/hexapdf/type/info.rb +4 -1
  169. data/lib/hexapdf/type/names.rb +4 -1
  170. data/lib/hexapdf/type/object_stream.rb +4 -1
  171. data/lib/hexapdf/type/page.rb +4 -1
  172. data/lib/hexapdf/type/page_tree_node.rb +4 -1
  173. data/lib/hexapdf/type/resources.rb +4 -1
  174. data/lib/hexapdf/type/trailer.rb +4 -1
  175. data/lib/hexapdf/type/viewer_preferences.rb +4 -1
  176. data/lib/hexapdf/type/xref_stream.rb +4 -1
  177. data/lib/hexapdf/utils/bit_field.rb +4 -1
  178. data/lib/hexapdf/utils/bit_stream.rb +4 -1
  179. data/lib/hexapdf/utils/graphics_helpers.rb +4 -1
  180. data/lib/hexapdf/utils/lru_cache.rb +4 -1
  181. data/lib/hexapdf/utils/math_helpers.rb +4 -1
  182. data/lib/hexapdf/utils/object_hash.rb +4 -1
  183. data/lib/hexapdf/utils/pdf_doc_encoding.rb +4 -1
  184. data/lib/hexapdf/utils/sorted_tree_node.rb +4 -1
  185. data/lib/hexapdf/version.rb +5 -2
  186. data/lib/hexapdf/writer.rb +4 -1
  187. data/lib/hexapdf/xref_section.rb +4 -1
  188. data/test/hexapdf/font/cmap/test_writer.rb +9 -1
  189. data/test/hexapdf/test_serializer.rb +6 -0
  190. data/test/hexapdf/test_writer.rb +2 -2
  191. metadata +4 -2
@@ -4,7 +4,7 @@
4
4
  # This file is part of HexaPDF.
5
5
  #
6
6
  # HexaPDF - A Versatile PDF Creation and Manipulation Library For Ruby
7
- # Copyright (C) 2014-2018 Thomas Leitner
7
+ # Copyright (C) 2014-2019 Thomas Leitner
8
8
  #
9
9
  # HexaPDF is free software: you can redistribute it and/or modify it
10
10
  # under the terms of the GNU Affero General Public License version 3 as
@@ -29,6 +29,9 @@
29
29
  # In accordance with Section 7(b) of the GNU Affero General Public
30
30
  # License, a covered work must retain the producer line in every PDF that
31
31
  # is created or manipulated using HexaPDF.
32
+ #
33
+ # If the GNU Affero General Public License doesn't fit your need,
34
+ # commercial licenses are available at <https://gettalong.at/hexapdf/>.
32
35
  #++
33
36
 
34
37
  require 'hexapdf/utils/object_hash'
@@ -42,14 +42,22 @@ describe HexaPDF::Font::CMap::Writer do
42
42
  describe "create_to_unicode_cmap" do
43
43
  it "creates a correct CMap file" do
44
44
  assert_equal(@cmap_data, HexaPDF::Font::CMap.create_to_unicode_cmap(@mapping))
45
+ end
45
46
 
46
- # Test last item is a range
47
+ it "works if the last item is a range" do
47
48
  @mapping.pop
48
49
  @cmap_data.sub!(/2 beginbfchar/, '1 beginbfchar')
49
50
  @cmap_data.sub!(/<3A51><d840dc3e>\n/, '')
50
51
  assert_equal(@cmap_data, HexaPDF::Font::CMap.create_to_unicode_cmap(@mapping))
51
52
  end
52
53
 
54
+ it "works with only ranges" do
55
+ @mapping.delete_at(-1)
56
+ @mapping.delete_at(0x5f)
57
+ @cmap_data.sub!(/\n2 beginbfchar.*endbfchar/m, '')
58
+ assert_equal(@cmap_data, HexaPDF::Font::CMap.create_to_unicode_cmap(@mapping))
59
+ end
60
+
53
61
  it "returns an empty CMap if the mapping is empty" do
54
62
  assert_equal(@cmap_data.sub(/\d+ beginbfchar.*endbfrange/m, ''),
55
63
  HexaPDF::Font::CMap.create_to_unicode_cmap([]))
@@ -140,6 +140,12 @@ describe HexaPDF::Serializer do
140
140
  assert_serialized("<</Name 2 0 R>>", HexaPDF::Object.new(Name: @stream))
141
141
  end
142
142
 
143
+ it "handles self-referencing streams" do
144
+ @stream.value[:Self] = @stream
145
+ assert_serialized("<</Key(value)/Length 0/Self 2 0 R>>stream\n\nendstream",
146
+ @stream)
147
+ end
148
+
143
149
  it "serializes stream more efficiently when an IO is provided" do
144
150
  @stream.stream = HexaPDF::StreamData.new(proc { "some" }, length: 6)
145
151
  io = StringIO.new(''.b)
@@ -40,7 +40,7 @@ describe HexaPDF::Writer do
40
40
  219
41
41
  %%EOF
42
42
  3 0 obj
43
- <</Producer(HexaPDF version 0.9.0)>>
43
+ <</Producer(HexaPDF version 0.9.1)>>
44
44
  endobj
45
45
  xref
46
46
  3 1
@@ -72,7 +72,7 @@ describe HexaPDF::Writer do
72
72
  141
73
73
  %%EOF
74
74
  6 0 obj
75
- <</Producer(HexaPDF version 0.9.0)>>
75
+ <</Producer(HexaPDF version 0.9.1)>>
76
76
  endobj
77
77
  2 0 obj
78
78
  <</Length 10>>stream
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hexapdf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Leitner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-12-31 00:00:00.000000000 Z
11
+ date: 2019-03-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cmdparse
@@ -206,6 +206,7 @@ files:
206
206
  - examples/016-frame_automatic_box_placement.rb
207
207
  - examples/017-frame_text_flow.rb
208
208
  - examples/018-composer.rb
209
+ - examples/019-column_box.rb
209
210
  - examples/emoji-smile.png
210
211
  - examples/emoji-wink.png
211
212
  - examples/machupicchu.jpg
@@ -317,6 +318,7 @@ files:
317
318
  - lib/hexapdf/importer.rb
318
319
  - lib/hexapdf/layout.rb
319
320
  - lib/hexapdf/layout/box.rb
321
+ - lib/hexapdf/layout/column_box.rb
320
322
  - lib/hexapdf/layout/frame.rb
321
323
  - lib/hexapdf/layout/image_box.rb
322
324
  - lib/hexapdf/layout/inline_box.rb