hexapdf 0.20.3 → 0.21.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +42 -1
  3. data/README.md +5 -3
  4. data/Rakefile +10 -1
  5. data/examples/018-composer.rb +10 -10
  6. data/examples/020-column_box.rb +57 -0
  7. data/lib/hexapdf/cli/batch.rb +4 -6
  8. data/lib/hexapdf/cli/info.rb +5 -1
  9. data/lib/hexapdf/cli/inspect.rb +59 -0
  10. data/lib/hexapdf/cli/split.rb +1 -1
  11. data/lib/hexapdf/composer.rb +147 -53
  12. data/lib/hexapdf/configuration.rb +7 -3
  13. data/lib/hexapdf/content/canvas.rb +1 -1
  14. data/lib/hexapdf/content/color_space.rb +1 -1
  15. data/lib/hexapdf/content/operator.rb +7 -7
  16. data/lib/hexapdf/content/parser.rb +3 -3
  17. data/lib/hexapdf/content/processor.rb +9 -9
  18. data/lib/hexapdf/document/signatures.rb +5 -4
  19. data/lib/hexapdf/document.rb +7 -0
  20. data/lib/hexapdf/encryption/aes.rb +9 -5
  21. data/lib/hexapdf/font/true_type/font.rb +7 -7
  22. data/lib/hexapdf/font/true_type/optimizer.rb +1 -1
  23. data/lib/hexapdf/font/true_type/subsetter.rb +1 -1
  24. data/lib/hexapdf/font/true_type/table/cmap_subtable.rb +3 -3
  25. data/lib/hexapdf/font/true_type_wrapper.rb +9 -14
  26. data/lib/hexapdf/font/type1/font.rb +10 -12
  27. data/lib/hexapdf/font/type1_wrapper.rb +15 -17
  28. data/lib/hexapdf/layout/box.rb +12 -9
  29. data/lib/hexapdf/layout/column_box.rb +168 -0
  30. data/lib/hexapdf/layout/image_box.rb +1 -1
  31. data/lib/hexapdf/layout/style.rb +28 -8
  32. data/lib/hexapdf/layout/text_fragment.rb +10 -9
  33. data/lib/hexapdf/parser.rb +5 -0
  34. data/lib/hexapdf/tokenizer.rb +3 -3
  35. data/lib/hexapdf/type/acro_form/appearance_generator.rb +6 -4
  36. data/lib/hexapdf/type/acro_form/choice_field.rb +2 -2
  37. data/lib/hexapdf/type/acro_form/field.rb +2 -2
  38. data/lib/hexapdf/type/font_type0.rb +1 -1
  39. data/lib/hexapdf/type/font_type3.rb +1 -1
  40. data/lib/hexapdf/type/resources.rb +4 -4
  41. data/lib/hexapdf/type/signature/adbe_pkcs7_detached.rb +1 -1
  42. data/lib/hexapdf/type/signature.rb +1 -1
  43. data/lib/hexapdf/type/trailer.rb +3 -3
  44. data/lib/hexapdf/version.rb +1 -1
  45. data/lib/hexapdf/xref_section.rb +1 -1
  46. data/test/hexapdf/common_tokenizer_tests.rb +5 -5
  47. data/test/hexapdf/content/test_graphics_state.rb +1 -0
  48. data/test/hexapdf/content/test_operator.rb +2 -2
  49. data/test/hexapdf/content/test_processor.rb +1 -1
  50. data/test/hexapdf/encryption/test_aes.rb +8 -0
  51. data/test/hexapdf/encryption/test_standard_security_handler.rb +23 -29
  52. data/test/hexapdf/filter/test_predictor.rb +16 -20
  53. data/test/hexapdf/font/test_type1_wrapper.rb +5 -1
  54. data/test/hexapdf/font/true_type/table/common.rb +1 -1
  55. data/test/hexapdf/font/true_type/table/test_cmap.rb +1 -1
  56. data/test/hexapdf/font/true_type/table/test_cmap_subtable.rb +1 -1
  57. data/test/hexapdf/image_loader/test_pdf.rb +6 -8
  58. data/test/hexapdf/image_loader/test_png.rb +2 -2
  59. data/test/hexapdf/layout/test_box.rb +11 -1
  60. data/test/hexapdf/layout/test_style.rb +23 -0
  61. data/test/hexapdf/layout/test_text_fragment.rb +21 -21
  62. data/test/hexapdf/test_composer.rb +115 -52
  63. data/test/hexapdf/test_dictionary.rb +2 -2
  64. data/test/hexapdf/test_document.rb +11 -9
  65. data/test/hexapdf/test_object.rb +1 -1
  66. data/test/hexapdf/test_parser.rb +13 -7
  67. data/test/hexapdf/test_serializer.rb +20 -22
  68. data/test/hexapdf/test_stream.rb +7 -9
  69. data/test/hexapdf/test_writer.rb +2 -2
  70. data/test/hexapdf/type/acro_form/test_appearance_generator.rb +1 -2
  71. data/test/hexapdf/type/acro_form/test_choice_field.rb +1 -1
  72. data/test/hexapdf/type/signature/common.rb +1 -1
  73. data/test/hexapdf/type/test_font_type0.rb +1 -1
  74. data/test/hexapdf/type/test_font_type1.rb +7 -7
  75. data/test/hexapdf/type/test_image.rb +13 -17
  76. metadata +4 -2
@@ -165,26 +165,22 @@ describe HexaPDF::Type::Image do
165
165
  end
166
166
 
167
167
  it "writes JPEG images to a file with .jpg extension" do
168
- begin
169
- file = Tempfile.new(['hexapdf-image-write-test', '.jpg'])
170
- image = @doc.images.add(@jpg)
171
- image.write(file.path)
172
- assert_equal(File.binread(@jpg), File.binread(file.path))
173
- ensure
174
- file.unlink
175
- end
168
+ file = Tempfile.new(['hexapdf-image-write-test', '.jpg'])
169
+ image = @doc.images.add(@jpg)
170
+ image.write(file.path)
171
+ assert_equal(File.binread(@jpg), File.binread(file.path))
172
+ ensure
173
+ file.unlink
176
174
  end
177
175
 
178
176
  it "writes JPEG2000 images to a file with .jpx extension" do
179
- begin
180
- file = Tempfile.new(['hexapdf-image-write-test', '.jpx'])
181
- image = @doc.images.add(@jpg)
182
- image.set_filter(:JPXDecode) # fake it
183
- image.write(file.path)
184
- assert_equal(File.binread(@jpg), File.binread(file.path))
185
- ensure
186
- file.unlink
187
- end
177
+ file = Tempfile.new(['hexapdf-image-write-test', '.jpx'])
178
+ image = @doc.images.add(@jpg)
179
+ image.set_filter(:JPXDecode) # fake it
180
+ image.write(file.path)
181
+ assert_equal(File.binread(@jpg), File.binread(file.path))
182
+ ensure
183
+ file.unlink
188
184
  end
189
185
 
190
186
  Dir.glob(File.join(TEST_DATA_DIR, 'images', '*.png')).each do |png_file|
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.20.3
4
+ version: 0.21.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: 2022-01-24 00:00:00.000000000 Z
11
+ date: 2022-03-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cmdparse
@@ -217,6 +217,7 @@ files:
217
217
  - examples/017-frame_text_flow.rb
218
218
  - examples/018-composer.rb
219
219
  - examples/019-acro_form.rb
220
+ - examples/020-column_box.rb
220
221
  - examples/emoji-smile.png
221
222
  - examples/emoji-wink.png
222
223
  - examples/machupicchu.jpg
@@ -333,6 +334,7 @@ files:
333
334
  - lib/hexapdf/importer.rb
334
335
  - lib/hexapdf/layout.rb
335
336
  - lib/hexapdf/layout/box.rb
337
+ - lib/hexapdf/layout/column_box.rb
336
338
  - lib/hexapdf/layout/frame.rb
337
339
  - lib/hexapdf/layout/image_box.rb
338
340
  - lib/hexapdf/layout/inline_box.rb