hexapdf 0.17.1 → 0.17.2
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 +4 -4
- data/CHANGELOG.md +1024 -0
- data/LICENSE +29 -0
- data/README.md +129 -0
- data/Rakefile +109 -0
- data/agpl-3.0.txt +661 -0
- data/examples/001-hello_world.rb +16 -0
- data/examples/002-graphics.rb +275 -0
- data/examples/003-arcs.rb +50 -0
- data/examples/004-optimizing.rb +23 -0
- data/examples/005-merging.rb +27 -0
- data/examples/006-standard_pdf_fonts.rb +73 -0
- data/examples/007-truetype.rb +42 -0
- data/examples/008-show_char_bboxes.rb +55 -0
- data/examples/009-text_layouter_alignment.rb +47 -0
- data/examples/010-text_layouter_inline_boxes.rb +64 -0
- data/examples/011-text_layouter_line_wrapping.rb +57 -0
- data/examples/012-text_layouter_styling.rb +122 -0
- data/examples/013-text_layouter_shapes.rb +176 -0
- data/examples/014-text_in_polygon.rb +60 -0
- data/examples/015-boxes.rb +76 -0
- data/examples/016-frame_automatic_box_placement.rb +90 -0
- data/examples/017-frame_text_flow.rb +60 -0
- data/examples/018-composer.rb +44 -0
- data/examples/019-acro_form.rb +88 -0
- data/examples/emoji-smile.png +0 -0
- data/examples/emoji-wink.png +0 -0
- data/examples/machupicchu.jpg +0 -0
- data/lib/hexapdf/content/graphic_object/endpoint_arc.rb +66 -0
- data/lib/hexapdf/content/graphic_object/geom2d.rb +13 -0
- data/lib/hexapdf/version.rb +1 -1
- data/test/data/aes-test-vectors/CBCGFSbox-128-decrypt.data.gz +0 -0
- data/test/data/aes-test-vectors/CBCGFSbox-128-encrypt.data.gz +0 -0
- data/test/data/aes-test-vectors/CBCGFSbox-192-decrypt.data.gz +0 -0
- data/test/data/aes-test-vectors/CBCGFSbox-192-encrypt.data.gz +0 -0
- data/test/data/aes-test-vectors/CBCGFSbox-256-decrypt.data.gz +0 -0
- data/test/data/aes-test-vectors/CBCGFSbox-256-encrypt.data.gz +0 -0
- data/test/data/aes-test-vectors/CBCKeySbox-128-decrypt.data.gz +0 -0
- data/test/data/aes-test-vectors/CBCKeySbox-128-encrypt.data.gz +0 -0
- data/test/data/aes-test-vectors/CBCKeySbox-192-decrypt.data.gz +0 -0
- data/test/data/aes-test-vectors/CBCKeySbox-192-encrypt.data.gz +0 -0
- data/test/data/aes-test-vectors/CBCKeySbox-256-decrypt.data.gz +0 -0
- data/test/data/aes-test-vectors/CBCKeySbox-256-encrypt.data.gz +0 -0
- data/test/data/aes-test-vectors/CBCVarKey-128-decrypt.data.gz +0 -0
- data/test/data/aes-test-vectors/CBCVarKey-128-encrypt.data.gz +0 -0
- data/test/data/aes-test-vectors/CBCVarKey-192-decrypt.data.gz +0 -0
- data/test/data/aes-test-vectors/CBCVarKey-192-encrypt.data.gz +0 -0
- data/test/data/aes-test-vectors/CBCVarKey-256-decrypt.data.gz +0 -0
- data/test/data/aes-test-vectors/CBCVarKey-256-encrypt.data.gz +0 -0
- data/test/data/aes-test-vectors/CBCVarTxt-128-decrypt.data.gz +0 -0
- data/test/data/aes-test-vectors/CBCVarTxt-128-encrypt.data.gz +0 -0
- data/test/data/aes-test-vectors/CBCVarTxt-192-decrypt.data.gz +0 -0
- data/test/data/aes-test-vectors/CBCVarTxt-192-encrypt.data.gz +0 -0
- data/test/data/aes-test-vectors/CBCVarTxt-256-decrypt.data.gz +0 -0
- data/test/data/aes-test-vectors/CBCVarTxt-256-encrypt.data.gz +0 -0
- data/test/data/fonts/Ubuntu-Title.ttf +0 -0
- data/test/data/images/cmyk.jpg +0 -0
- data/test/data/images/fillbytes.jpg +0 -0
- data/test/data/images/gray.jpg +0 -0
- data/test/data/images/greyscale-1bit.png +0 -0
- data/test/data/images/greyscale-2bit.png +0 -0
- data/test/data/images/greyscale-4bit.png +0 -0
- data/test/data/images/greyscale-8bit.png +0 -0
- data/test/data/images/greyscale-alpha-8bit.png +0 -0
- data/test/data/images/greyscale-trns-8bit.png +0 -0
- data/test/data/images/greyscale-with-gamma1.0.png +0 -0
- data/test/data/images/greyscale-with-gamma1.5.png +0 -0
- data/test/data/images/indexed-1bit.png +0 -0
- data/test/data/images/indexed-2bit.png +0 -0
- data/test/data/images/indexed-4bit.png +0 -0
- data/test/data/images/indexed-8bit.png +0 -0
- data/test/data/images/indexed-alpha-4bit.png +0 -0
- data/test/data/images/indexed-alpha-8bit.png +0 -0
- data/test/data/images/rgb.jpg +0 -0
- data/test/data/images/truecolour-8bit.png +0 -0
- data/test/data/images/truecolour-alpha-8bit.png +0 -0
- data/test/data/images/truecolour-gama-chrm-8bit.png +0 -0
- data/test/data/images/truecolour-srgb-8bit.png +0 -0
- data/test/data/images/ycck.jpg +0 -0
- data/test/data/minimal.pdf +44 -0
- data/test/data/standard-security-handler/README +9 -0
- data/test/data/standard-security-handler/bothpwd-aes-128bit-V4.pdf +44 -0
- data/test/data/standard-security-handler/bothpwd-aes-256bit-V5.pdf +0 -0
- data/test/data/standard-security-handler/bothpwd-arc4-128bit-V2.pdf +43 -0
- data/test/data/standard-security-handler/bothpwd-arc4-128bit-V4.pdf +43 -0
- data/test/data/standard-security-handler/bothpwd-arc4-40bit-V1.pdf +0 -0
- data/test/data/standard-security-handler/nopwd-aes-128bit-V4.pdf +43 -0
- data/test/data/standard-security-handler/nopwd-aes-256bit-V5.pdf +0 -0
- data/test/data/standard-security-handler/nopwd-arc4-128bit-V2.pdf +43 -0
- data/test/data/standard-security-handler/nopwd-arc4-128bit-V4.pdf +43 -0
- data/test/data/standard-security-handler/nopwd-arc4-40bit-V1.pdf +43 -0
- data/test/data/standard-security-handler/ownerpwd-aes-128bit-V4.pdf +0 -0
- data/test/data/standard-security-handler/ownerpwd-aes-256bit-V5.pdf +43 -0
- data/test/data/standard-security-handler/ownerpwd-arc4-128bit-V2.pdf +43 -0
- data/test/data/standard-security-handler/ownerpwd-arc4-128bit-V4.pdf +43 -0
- data/test/data/standard-security-handler/ownerpwd-arc4-40bit-V1.pdf +43 -0
- data/test/data/standard-security-handler/userpwd-aes-128bit-V4.pdf +43 -0
- data/test/data/standard-security-handler/userpwd-aes-256bit-V5.pdf +43 -0
- data/test/data/standard-security-handler/userpwd-arc4-128bit-V2.pdf +0 -0
- data/test/data/standard-security-handler/userpwd-arc4-128bit-V4.pdf +0 -0
- data/test/data/standard-security-handler/userpwd-arc4-40bit-V1.pdf +43 -0
- data/test/hexapdf/common_tokenizer_tests.rb +236 -0
- data/test/hexapdf/content/common.rb +39 -0
- data/test/hexapdf/content/graphic_object/test_arc.rb +102 -0
- data/test/hexapdf/content/graphic_object/test_endpoint_arc.rb +90 -0
- data/test/hexapdf/content/graphic_object/test_geom2d.rb +79 -0
- data/test/hexapdf/content/graphic_object/test_solid_arc.rb +86 -0
- data/test/hexapdf/content/test_canvas.rb +1279 -0
- data/test/hexapdf/content/test_color_space.rb +176 -0
- data/test/hexapdf/content/test_graphics_state.rb +151 -0
- data/test/hexapdf/content/test_operator.rb +619 -0
- data/test/hexapdf/content/test_parser.rb +99 -0
- data/test/hexapdf/content/test_processor.rb +163 -0
- data/test/hexapdf/content/test_transformation_matrix.rb +64 -0
- data/test/hexapdf/document/test_files.rb +72 -0
- data/test/hexapdf/document/test_fonts.rb +60 -0
- data/test/hexapdf/document/test_images.rb +72 -0
- data/test/hexapdf/document/test_pages.rb +130 -0
- data/test/hexapdf/encryption/common.rb +87 -0
- data/test/hexapdf/encryption/test_aes.rb +129 -0
- data/test/hexapdf/encryption/test_arc4.rb +39 -0
- data/test/hexapdf/encryption/test_fast_aes.rb +17 -0
- data/test/hexapdf/encryption/test_fast_arc4.rb +12 -0
- data/test/hexapdf/encryption/test_identity.rb +21 -0
- data/test/hexapdf/encryption/test_ruby_aes.rb +23 -0
- data/test/hexapdf/encryption/test_ruby_arc4.rb +20 -0
- data/test/hexapdf/encryption/test_security_handler.rb +380 -0
- data/test/hexapdf/encryption/test_standard_security_handler.rb +322 -0
- data/test/hexapdf/filter/common.rb +53 -0
- data/test/hexapdf/filter/test_ascii85_decode.rb +59 -0
- data/test/hexapdf/filter/test_ascii_hex_decode.rb +38 -0
- data/test/hexapdf/filter/test_crypt.rb +21 -0
- data/test/hexapdf/filter/test_encryption.rb +24 -0
- data/test/hexapdf/filter/test_flate_decode.rb +44 -0
- data/test/hexapdf/filter/test_lzw_decode.rb +52 -0
- data/test/hexapdf/filter/test_predictor.rb +219 -0
- data/test/hexapdf/filter/test_run_length_decode.rb +32 -0
- data/test/hexapdf/font/cmap/test_parser.rb +102 -0
- data/test/hexapdf/font/cmap/test_writer.rb +66 -0
- data/test/hexapdf/font/encoding/test_base.rb +45 -0
- data/test/hexapdf/font/encoding/test_difference_encoding.rb +29 -0
- data/test/hexapdf/font/encoding/test_glyph_list.rb +59 -0
- data/test/hexapdf/font/encoding/test_zapf_dingbats_encoding.rb +16 -0
- data/test/hexapdf/font/test_cmap.rb +104 -0
- data/test/hexapdf/font/test_encoding.rb +27 -0
- data/test/hexapdf/font/test_invalid_glyph.rb +34 -0
- data/test/hexapdf/font/test_true_type_wrapper.rb +186 -0
- data/test/hexapdf/font/test_type1_wrapper.rb +107 -0
- data/test/hexapdf/font/true_type/common.rb +17 -0
- data/test/hexapdf/font/true_type/table/common.rb +27 -0
- data/test/hexapdf/font/true_type/table/test_cmap.rb +47 -0
- data/test/hexapdf/font/true_type/table/test_cmap_subtable.rb +141 -0
- data/test/hexapdf/font/true_type/table/test_directory.rb +30 -0
- data/test/hexapdf/font/true_type/table/test_glyf.rb +58 -0
- data/test/hexapdf/font/true_type/table/test_head.rb +56 -0
- data/test/hexapdf/font/true_type/table/test_hhea.rb +26 -0
- data/test/hexapdf/font/true_type/table/test_hmtx.rb +30 -0
- data/test/hexapdf/font/true_type/table/test_kern.rb +61 -0
- data/test/hexapdf/font/true_type/table/test_loca.rb +33 -0
- data/test/hexapdf/font/true_type/table/test_maxp.rb +50 -0
- data/test/hexapdf/font/true_type/table/test_name.rb +76 -0
- data/test/hexapdf/font/true_type/table/test_os2.rb +55 -0
- data/test/hexapdf/font/true_type/table/test_post.rb +78 -0
- data/test/hexapdf/font/true_type/test_builder.rb +42 -0
- data/test/hexapdf/font/true_type/test_font.rb +116 -0
- data/test/hexapdf/font/true_type/test_optimizer.rb +26 -0
- data/test/hexapdf/font/true_type/test_subsetter.rb +73 -0
- data/test/hexapdf/font/true_type/test_table.rb +48 -0
- data/test/hexapdf/font/type1/common.rb +6 -0
- data/test/hexapdf/font/type1/test_afm_parser.rb +65 -0
- data/test/hexapdf/font/type1/test_font.rb +104 -0
- data/test/hexapdf/font/type1/test_font_metrics.rb +22 -0
- data/test/hexapdf/font/type1/test_pfb_parser.rb +37 -0
- data/test/hexapdf/font_loader/test_from_configuration.rb +43 -0
- data/test/hexapdf/font_loader/test_from_file.rb +36 -0
- data/test/hexapdf/font_loader/test_standard14.rb +33 -0
- data/test/hexapdf/image_loader/test_jpeg.rb +93 -0
- data/test/hexapdf/image_loader/test_pdf.rb +47 -0
- data/test/hexapdf/image_loader/test_png.rb +259 -0
- data/test/hexapdf/layout/test_box.rb +154 -0
- data/test/hexapdf/layout/test_frame.rb +350 -0
- data/test/hexapdf/layout/test_image_box.rb +73 -0
- data/test/hexapdf/layout/test_inline_box.rb +71 -0
- data/test/hexapdf/layout/test_line.rb +206 -0
- data/test/hexapdf/layout/test_style.rb +790 -0
- data/test/hexapdf/layout/test_text_box.rb +140 -0
- data/test/hexapdf/layout/test_text_fragment.rb +375 -0
- data/test/hexapdf/layout/test_text_layouter.rb +758 -0
- data/test/hexapdf/layout/test_text_shaper.rb +62 -0
- data/test/hexapdf/layout/test_width_from_polygon.rb +109 -0
- data/test/hexapdf/task/test_dereference.rb +51 -0
- data/test/hexapdf/task/test_optimize.rb +162 -0
- data/test/hexapdf/test_composer.rb +258 -0
- data/test/hexapdf/test_configuration.rb +93 -0
- data/test/hexapdf/test_data_dir.rb +32 -0
- data/test/hexapdf/test_dictionary.rb +340 -0
- data/test/hexapdf/test_dictionary_fields.rb +269 -0
- data/test/hexapdf/test_document.rb +641 -0
- data/test/hexapdf/test_filter.rb +100 -0
- data/test/hexapdf/test_importer.rb +106 -0
- data/test/hexapdf/test_object.rb +258 -0
- data/test/hexapdf/test_parser.rb +645 -0
- data/test/hexapdf/test_pdf_array.rb +169 -0
- data/test/hexapdf/test_rectangle.rb +73 -0
- data/test/hexapdf/test_reference.rb +50 -0
- data/test/hexapdf/test_revision.rb +188 -0
- data/test/hexapdf/test_revisions.rb +196 -0
- data/test/hexapdf/test_serializer.rb +195 -0
- data/test/hexapdf/test_stream.rb +274 -0
- data/test/hexapdf/test_tokenizer.rb +80 -0
- data/test/hexapdf/test_type.rb +18 -0
- data/test/hexapdf/test_writer.rb +140 -0
- data/test/hexapdf/test_xref_section.rb +61 -0
- data/test/hexapdf/type/acro_form/test_appearance_generator.rb +795 -0
- data/test/hexapdf/type/acro_form/test_button_field.rb +308 -0
- data/test/hexapdf/type/acro_form/test_choice_field.rb +220 -0
- data/test/hexapdf/type/acro_form/test_field.rb +259 -0
- data/test/hexapdf/type/acro_form/test_form.rb +357 -0
- data/test/hexapdf/type/acro_form/test_signature_field.rb +38 -0
- data/test/hexapdf/type/acro_form/test_text_field.rb +201 -0
- data/test/hexapdf/type/acro_form/test_variable_text_field.rb +88 -0
- data/test/hexapdf/type/actions/test_launch.rb +24 -0
- data/test/hexapdf/type/actions/test_uri.rb +23 -0
- data/test/hexapdf/type/annotations/test_markup_annotation.rb +22 -0
- data/test/hexapdf/type/annotations/test_text.rb +34 -0
- data/test/hexapdf/type/annotations/test_widget.rb +225 -0
- data/test/hexapdf/type/test_annotation.rb +97 -0
- data/test/hexapdf/type/test_catalog.rb +48 -0
- data/test/hexapdf/type/test_cid_font.rb +61 -0
- data/test/hexapdf/type/test_file_specification.rb +141 -0
- data/test/hexapdf/type/test_font.rb +67 -0
- data/test/hexapdf/type/test_font_descriptor.rb +61 -0
- data/test/hexapdf/type/test_font_simple.rb +176 -0
- data/test/hexapdf/type/test_font_true_type.rb +31 -0
- data/test/hexapdf/type/test_font_type0.rb +120 -0
- data/test/hexapdf/type/test_font_type1.rb +142 -0
- data/test/hexapdf/type/test_font_type3.rb +26 -0
- data/test/hexapdf/type/test_form.rb +120 -0
- data/test/hexapdf/type/test_image.rb +261 -0
- data/test/hexapdf/type/test_info.rb +9 -0
- data/test/hexapdf/type/test_object_stream.rb +117 -0
- data/test/hexapdf/type/test_page.rb +598 -0
- data/test/hexapdf/type/test_page_tree_node.rb +315 -0
- data/test/hexapdf/type/test_resources.rb +209 -0
- data/test/hexapdf/type/test_trailer.rb +116 -0
- data/test/hexapdf/type/test_xref_stream.rb +143 -0
- data/test/hexapdf/utils/test_bit_field.rb +63 -0
- data/test/hexapdf/utils/test_bit_stream.rb +69 -0
- data/test/hexapdf/utils/test_graphics_helpers.rb +37 -0
- data/test/hexapdf/utils/test_lru_cache.rb +22 -0
- data/test/hexapdf/utils/test_object_hash.rb +120 -0
- data/test/hexapdf/utils/test_pdf_doc_encoding.rb +18 -0
- data/test/hexapdf/utils/test_sorted_tree_node.rb +239 -0
- data/test/test_helper.rb +58 -0
- metadata +263 -3
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# # PDF Forms
|
|
2
|
+
#
|
|
3
|
+
# PDF files can be used for interactive forms, containing various types of form
|
|
4
|
+
# fields. HexaPDF supports the creation and processing of these forms.
|
|
5
|
+
#
|
|
6
|
+
# This example show-cases how to create the various form field types and their
|
|
7
|
+
# possible standard appearances.
|
|
8
|
+
#
|
|
9
|
+
# Usage:
|
|
10
|
+
# : `ruby acro_form.rb`
|
|
11
|
+
#
|
|
12
|
+
|
|
13
|
+
require 'hexapdf'
|
|
14
|
+
|
|
15
|
+
doc = HexaPDF::Document.new
|
|
16
|
+
page = doc.pages.add
|
|
17
|
+
canvas = page.canvas
|
|
18
|
+
|
|
19
|
+
canvas.font("Helvetica", size: 36)
|
|
20
|
+
canvas.text("Form Example", at: [50, 750])
|
|
21
|
+
form = doc.acro_form(create: true)
|
|
22
|
+
|
|
23
|
+
canvas.font_size(16)
|
|
24
|
+
canvas.text("Check boxes", at: [50, 650])
|
|
25
|
+
[:check, :circle, :cross, :diamond, :square, :star].each_with_index do |symbol, index|
|
|
26
|
+
cb = form.create_check_box("Checkbox #{index}")
|
|
27
|
+
widget = cb.create_widget(page, Rect: [200 + 50 * index, 640, 240 + 50 * index, 680])
|
|
28
|
+
widget.background_color(1 - 0.05 * index)
|
|
29
|
+
widget.marker_style(style: symbol, color: [0.166 * index, 0, 1 - 0.166 * index],
|
|
30
|
+
size: 7 * index)
|
|
31
|
+
cb.field_value = true
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
canvas.text("Radio buttons", at: [50, 550])
|
|
35
|
+
rb = form.create_radio_button("Radio")
|
|
36
|
+
[:check, :circle, :cross, :diamond, :square, :star].each_with_index do |symbol, index|
|
|
37
|
+
widget = rb.create_widget(page, value: :"button#{index}",
|
|
38
|
+
Rect: [200 + 50 * index, 540, 240 + 50 * index, 580])
|
|
39
|
+
widget.background_color(1 - 0.05 * index)
|
|
40
|
+
widget.marker_style(style: symbol, color: [0.166 * index, 0, 1 - 0.166 * index],
|
|
41
|
+
size: 7 * index)
|
|
42
|
+
end
|
|
43
|
+
rb.field_value = :button0
|
|
44
|
+
|
|
45
|
+
canvas.text("Text fields", at: [50, 450])
|
|
46
|
+
|
|
47
|
+
canvas.text("Single line", at: [70, 420])
|
|
48
|
+
tx = form.create_text_field("Single Line", font_size: 16)
|
|
49
|
+
widget = tx.create_widget(page, Rect: [200, 415, 500, 435])
|
|
50
|
+
tx.field_value = "A sample test string!"
|
|
51
|
+
|
|
52
|
+
canvas.text("Multiline", at: [70, 390])
|
|
53
|
+
tx = form.create_multiline_text_field("Multiline", font_size: 0, align: :right)
|
|
54
|
+
widget = tx.create_widget(page, Rect: [200, 325, 500, 405])
|
|
55
|
+
widget.border_style(color: 0, width: 1)
|
|
56
|
+
tx.field_value = "A sample test string! " * 30 + "\nNew line\n\nAnother line"
|
|
57
|
+
|
|
58
|
+
canvas.text("Password", at: [70, 300])
|
|
59
|
+
tx = form.create_password_field("Password", font_size: 16)
|
|
60
|
+
widget = tx.create_widget(page, Rect: [200, 295, 500, 315])
|
|
61
|
+
|
|
62
|
+
canvas.text("File select", at: [70, 270])
|
|
63
|
+
tx = form.create_file_select_field("File Select", font_size: 16)
|
|
64
|
+
widget = tx.create_widget(page, Rect: [200, 265, 500, 285])
|
|
65
|
+
tx.field_value = "path/to/file.pdf"
|
|
66
|
+
|
|
67
|
+
canvas.text("Comb", at: [70, 240])
|
|
68
|
+
tx = form.create_comb_text_field("Comb field", max_chars: 10, font_size: 16, align: :center)
|
|
69
|
+
widget = tx.create_widget(page, Rect: [200, 220, 500, 255])
|
|
70
|
+
widget.border_style(color: [30, 128, 0], width: 1)
|
|
71
|
+
tx.field_value = 'Hello'
|
|
72
|
+
|
|
73
|
+
canvas.text("Combo Box", at: [50, 170])
|
|
74
|
+
cb = form.create_combo_box("Combo Box", font_size: 12, editable: true,
|
|
75
|
+
option_items: ['Value 1', 'Another value', 'Choose me!'])
|
|
76
|
+
widget = cb.create_widget(page, Rect: [200, 150, 500, 185])
|
|
77
|
+
widget.border_style(width: 1)
|
|
78
|
+
cb.field_value = 'Another value'
|
|
79
|
+
|
|
80
|
+
canvas.text("List Box", at: [50, 120])
|
|
81
|
+
lb = form.create_list_box("List Box", font_size: 15, align: :center, multi_select: true,
|
|
82
|
+
option_items: 1.upto(7).map {|i| "Value #{i}" })
|
|
83
|
+
widget = lb.create_widget(page, Rect: [200, 50, 500, 135])
|
|
84
|
+
widget.border_style(width: 1)
|
|
85
|
+
lb.list_box_top_index = 1
|
|
86
|
+
lb.field_value = ['Value 6', 'Value 2']
|
|
87
|
+
|
|
88
|
+
doc.write('acro_form.pdf', optimize: true)
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -43,6 +43,15 @@ module HexaPDF
|
|
|
43
43
|
# This class describes an elliptical arc in endpoint parameterization. It allows one to
|
|
44
44
|
# generate an arc from the current point to a given point, similar to Content::Canvas#line_to.
|
|
45
45
|
#
|
|
46
|
+
# This graphic object is registered under the :endpoint_arc key for use with the
|
|
47
|
+
# HexaPDF::Content::Canvas class.
|
|
48
|
+
#
|
|
49
|
+
# Examples:
|
|
50
|
+
#
|
|
51
|
+
# #>pdf-center
|
|
52
|
+
# arc = canvas.graphic_object(:endpoint_arc, x: 50, y: 20, a: 30, b: 10).stroke
|
|
53
|
+
# arc.move_to(0, 0).draw(canvas).stroke # or: canvas.draw(arc).stroke
|
|
54
|
+
#
|
|
46
55
|
# See: GraphicObject::Arc, ARC - https://www.w3.org/TR/SVG/implnote.html#ArcImplementationNotes
|
|
47
56
|
class EndpointArc
|
|
48
57
|
|
|
@@ -58,29 +67,86 @@ module HexaPDF
|
|
|
58
67
|
end
|
|
59
68
|
|
|
60
69
|
# x-coordinate of endpoint
|
|
70
|
+
#
|
|
71
|
+
# Examples:
|
|
72
|
+
#
|
|
73
|
+
# #>pdf-center
|
|
74
|
+
# arc = canvas.graphic_object(:endpoint_arc, x: 50, y: 20, a: 30, b: 20)
|
|
75
|
+
# canvas.move_to(0, 0).draw(arc).stroke
|
|
76
|
+
# canvas.stroke_color("red").move_to(0, 0).draw(arc, x: -50).stroke
|
|
61
77
|
attr_reader :x
|
|
62
78
|
|
|
63
79
|
# y-coordinate of endpoint
|
|
80
|
+
#
|
|
81
|
+
# Examples:
|
|
82
|
+
#
|
|
83
|
+
# #>pdf-center
|
|
84
|
+
# arc = canvas.graphic_object(:endpoint_arc, x: 50, y: 20, a: 30, b: 20)
|
|
85
|
+
# canvas.move_to(0, 0).draw(arc).stroke
|
|
86
|
+
# canvas.stroke_color("red").move_to(0, 0).draw(arc, y: -20).stroke
|
|
64
87
|
attr_reader :y
|
|
65
88
|
|
|
66
89
|
# Length of semi-major axis
|
|
90
|
+
#
|
|
91
|
+
# Examples:
|
|
92
|
+
#
|
|
93
|
+
# #>pdf-center
|
|
94
|
+
# arc = canvas.graphic_object(:endpoint_arc, x: 50, y: 20, a: 30, b: 20)
|
|
95
|
+
# canvas.move_to(0, 0).draw(arc).stroke
|
|
96
|
+
# canvas.stroke_color("red").move_to(0, 0).draw(arc, a: 40).stroke
|
|
67
97
|
attr_reader :a
|
|
68
98
|
|
|
69
99
|
# Length of semi-minor axis
|
|
100
|
+
#
|
|
101
|
+
# Examples:
|
|
102
|
+
#
|
|
103
|
+
# #>pdf-center
|
|
104
|
+
# arc = canvas.graphic_object(:endpoint_arc, x: 50, y: 20, a: 30, b: 20)
|
|
105
|
+
# canvas.move_to(0, 0).draw(arc).stroke
|
|
106
|
+
# canvas.stroke_color("red").move_to(0, 0).draw(arc, b: 50).stroke
|
|
70
107
|
attr_reader :b
|
|
71
108
|
|
|
72
109
|
# Inclination in degrees of semi-major axis in respect to x-axis
|
|
110
|
+
#
|
|
111
|
+
# Examples:
|
|
112
|
+
#
|
|
113
|
+
# #>pdf-center
|
|
114
|
+
# arc = canvas.graphic_object(:endpoint_arc, x: 50, y: 20, a: 30, b: 20)
|
|
115
|
+
# canvas.move_to(0, 0).draw(arc).stroke
|
|
116
|
+
# canvas.stroke_color("red").move_to(0, 0).draw(arc, inclination: 45).stroke
|
|
73
117
|
attr_reader :inclination
|
|
74
118
|
|
|
75
119
|
# Large arc choice - if +true+ use the large arc (i.e. the one spanning more than 180
|
|
76
120
|
# degrees), else the small arc
|
|
121
|
+
#
|
|
122
|
+
# Examples:
|
|
123
|
+
#
|
|
124
|
+
# #>pdf-center
|
|
125
|
+
# arc = canvas.graphic_object(:endpoint_arc, x: 50, y: 20, a: 30, b: 20)
|
|
126
|
+
# canvas.move_to(0, 0).draw(arc).stroke
|
|
127
|
+
# canvas.stroke_color("red").move_to(0, 0).draw(arc, large_arc: false, clockwise: true).stroke
|
|
77
128
|
attr_reader :large_arc
|
|
78
129
|
|
|
79
130
|
# Direction of arc - if +true+ in clockwise direction, else in counterclockwise direction
|
|
131
|
+
#
|
|
132
|
+
# This is needed, for example, when filling paths using the nonzero winding number rule to achieve
|
|
133
|
+
# different effects.
|
|
134
|
+
#
|
|
135
|
+
# Examples:
|
|
136
|
+
#
|
|
137
|
+
# #>pdf-center
|
|
138
|
+
# arc = canvas.graphic_object(:endpoint_arc, x: 50, y: 20, a: 30, b: 20)
|
|
139
|
+
# canvas.move_to(0, 0).draw(arc).stroke
|
|
140
|
+
# canvas.stroke_color("red").move_to(0, 0).draw(arc, clockwise: true).stroke
|
|
80
141
|
attr_reader :clockwise
|
|
81
142
|
|
|
82
143
|
# Creates an endpoint arc with default values x=0, y=0, a=0, b=0, inclination=0,
|
|
83
144
|
# large_arc=true, clockwise=false (a line to the origin).
|
|
145
|
+
#
|
|
146
|
+
# Examples:
|
|
147
|
+
#
|
|
148
|
+
# #>pdf-center
|
|
149
|
+
# canvas.move_to(30, 30).draw(:endpoint_arc).stroke
|
|
84
150
|
def initialize
|
|
85
151
|
@x = @y = 0
|
|
86
152
|
@a = @b = 0
|
|
@@ -57,9 +57,22 @@ module HexaPDF
|
|
|
57
57
|
attr_accessor :object
|
|
58
58
|
|
|
59
59
|
# The radius to use when drawing Geom2D::Point objects; defaults to 1
|
|
60
|
+
#
|
|
61
|
+
# Examples:
|
|
62
|
+
#
|
|
63
|
+
# #>pdf-center
|
|
64
|
+
# canvas.draw(:geom2d, object: ::Geom2D::Point(0, 0))
|
|
65
|
+
# canvas.draw(:geom2d, object: ::Geom2D::Point(50, 0), point_radius: 5)
|
|
60
66
|
attr_accessor :point_radius
|
|
61
67
|
|
|
62
68
|
# Specifies whether only paths should be drawn or if they should be stroked/filled too
|
|
69
|
+
# (default).
|
|
70
|
+
#
|
|
71
|
+
# Examples:
|
|
72
|
+
#
|
|
73
|
+
# #>pdf-center
|
|
74
|
+
# canvas.draw(:geom2d, object: ::Geom2D::Segment([0, 0], [0, 50]))
|
|
75
|
+
# canvas.draw(:geom2d, object: ::Geom2D::Segment([0, 0], [50, 0]), path_only: true)
|
|
63
76
|
attr_accessor :path_only
|
|
64
77
|
|
|
65
78
|
# Creates a Geom2D drawing support object.
|
data/lib/hexapdf/version.rb
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
%PDF-1.2
|
|
2
|
+
%����
|
|
3
|
+
1 0 obj
|
|
4
|
+
<< /Pages 2 0 R /Type /Catalog >>
|
|
5
|
+
endobj
|
|
6
|
+
2 0 obj
|
|
7
|
+
<< /Count 1 /Kids [ 3 0 R ] /MediaBox [ 0 0 612 446 ] /Type /Pages >>
|
|
8
|
+
endobj
|
|
9
|
+
3 0 obj
|
|
10
|
+
<< /Contents 4 0 R /Parent 2 0 R /Resources 5 0 R /Type /Page >>
|
|
11
|
+
endobj
|
|
12
|
+
4 0 obj
|
|
13
|
+
<< /Length 51 >>
|
|
14
|
+
stream
|
|
15
|
+
BT
|
|
16
|
+
/F1 24 Tf
|
|
17
|
+
1 0 0 1 260 254 Tm
|
|
18
|
+
(Hello World)Tj
|
|
19
|
+
ET
|
|
20
|
+
endstream
|
|
21
|
+
endobj
|
|
22
|
+
5 0 obj
|
|
23
|
+
<< /Font << /F1 6 0 R >> /ProcSet [ /PDF /Text ] >>
|
|
24
|
+
endobj
|
|
25
|
+
6 0 obj
|
|
26
|
+
<< /BaseFont /Helvetica /Name /F1 /Subtype /Type1 /Type /Font >>
|
|
27
|
+
endobj
|
|
28
|
+
7 0 obj
|
|
29
|
+
<</ModDate (D:20150409164600)>>
|
|
30
|
+
endobj
|
|
31
|
+
xref
|
|
32
|
+
0 8
|
|
33
|
+
0000000000 65535 f
|
|
34
|
+
0000000015 00000 n
|
|
35
|
+
0000000064 00000 n
|
|
36
|
+
0000000149 00000 n
|
|
37
|
+
0000000229 00000 n
|
|
38
|
+
0000000329 00000 n
|
|
39
|
+
0000000396 00000 n
|
|
40
|
+
0000000476 00000 n
|
|
41
|
+
trailer << /Root 1 0 R /Info 7 0 R /Size 8 /ID [<6790ffa610024e78369114311fc0df96><6790ffa610024e78369114311fc0df96>] >>
|
|
42
|
+
startxref
|
|
43
|
+
523
|
|
44
|
+
%%EOF
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
These files have been created by encrypting the minimal.pdf file.
|
|
2
|
+
The used encryption algorithm as well as the key length is encoded
|
|
3
|
+
in the files name.
|
|
4
|
+
|
|
5
|
+
The prefix shows which if any password was used:
|
|
6
|
+
* nopwd: No password was set.
|
|
7
|
+
* userpwd: An user password of 'uhexapdf' has been set.
|
|
8
|
+
* ownerpwd: An owner password of 'ohexapdf' has been set.
|
|
9
|
+
* bothpwd: Both the above user and owner passwords have been set.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
%PDF-1.6
|
|
2
|
+
%����
|
|
3
|
+
1 0 obj
|
|
4
|
+
<< /Pages 3 0 R /Type /Catalog >>
|
|
5
|
+
endobj
|
|
6
|
+
2 0 obj
|
|
7
|
+
<< /ModDate <b4286731bb75a1fb638cb333dfba06afb0e6e5e4f9b5229e8561312123942a87ee51ce88cecfa5ebfc6c4e6dd107ecb6> >>
|
|
8
|
+
endobj
|
|
9
|
+
3 0 obj
|
|
10
|
+
<< /Count 1 /Kids [ 4 0 R ] /MediaBox [ 0 0 612 446 ] /Type /Pages >>
|
|
11
|
+
endobj
|
|
12
|
+
4 0 obj
|
|
13
|
+
<< /Contents 5 0 R /Parent 3 0 R /Resources 6 0 R /Type /Page >>
|
|
14
|
+
endobj
|
|
15
|
+
5 0 obj
|
|
16
|
+
<< /Length 80 >>
|
|
17
|
+
stream
|
|
18
|
+
��=����� ����3&���m���L
|
|
19
|
+
F}�&���o�}�����ɱH+L9�c������3��8�6�[�3d�q�Q���r�Iendstream
|
|
20
|
+
endobj
|
|
21
|
+
6 0 obj
|
|
22
|
+
<< /Font << /F1 7 0 R >> /ProcSet [ /PDF /Text ] >>
|
|
23
|
+
endobj
|
|
24
|
+
7 0 obj
|
|
25
|
+
<< /BaseFont /Helvetica /Name /F1 /Subtype /Type1 /Type /Font >>
|
|
26
|
+
endobj
|
|
27
|
+
8 0 obj
|
|
28
|
+
<< /CF << /StdCF << /AuthEvent /DocOpen /CFM /AESV2 /Length 16 >> >> /Filter /Standard /Length 128 /O <1517aad6ec33e7aaa17972b91854f2f7c05c11fc7fcafe7df725ffcfd4c55705> /P -4 /R 4 /StmF /StdCF /StrF /StdCF /U <6ccfb47c809a4bab70d578d957cee8240122456a91bae5134273a6db134c87c4> /V 4 >>
|
|
29
|
+
endobj
|
|
30
|
+
xref
|
|
31
|
+
0 9
|
|
32
|
+
0000000000 65535 f
|
|
33
|
+
0000000015 00000 n
|
|
34
|
+
0000000064 00000 n
|
|
35
|
+
0000000193 00000 n
|
|
36
|
+
0000000278 00000 n
|
|
37
|
+
0000000358 00000 n
|
|
38
|
+
0000000487 00000 n
|
|
39
|
+
0000000554 00000 n
|
|
40
|
+
0000000634 00000 n
|
|
41
|
+
trailer << /Info 2 0 R /Root 1 0 R /Size 9 /ID [<6790ffa610024e78369114311fc0df96><dfcc7658b36e2ba5673af5e16cf91f4e>] /Encrypt 8 0 R >>
|
|
42
|
+
startxref
|
|
43
|
+
933
|
|
44
|
+
%%EOF
|
|
Binary file
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
%PDF-1.4
|
|
2
|
+
%����
|
|
3
|
+
1 0 obj
|
|
4
|
+
<< /Pages 3 0 R /Type /Catalog >>
|
|
5
|
+
endobj
|
|
6
|
+
2 0 obj
|
|
7
|
+
<< /ModDate <a4edf0aa882dd1e784a1f0d956592496> >>
|
|
8
|
+
endobj
|
|
9
|
+
3 0 obj
|
|
10
|
+
<< /Count 1 /Kids [ 4 0 R ] /MediaBox [ 0 0 612 446 ] /Type /Pages >>
|
|
11
|
+
endobj
|
|
12
|
+
4 0 obj
|
|
13
|
+
<< /Contents 5 0 R /Parent 3 0 R /Resources 6 0 R /Type /Page >>
|
|
14
|
+
endobj
|
|
15
|
+
5 0 obj
|
|
16
|
+
<< /Length 51 >>
|
|
17
|
+
stream
|
|
18
|
+
��&X*�2�Р#�b&�
|
|
19
|
�X\4t��=���~YCa�4��K�v�l���endstream
|
|
20
|
+
endobj
|
|
21
|
+
6 0 obj
|
|
22
|
+
<< /Font << /F1 7 0 R >> /ProcSet [ /PDF /Text ] >>
|
|
23
|
+
endobj
|
|
24
|
+
7 0 obj
|
|
25
|
+
<< /BaseFont /Helvetica /Name /F1 /Subtype /Type1 /Type /Font >>
|
|
26
|
+
endobj
|
|
27
|
+
8 0 obj
|
|
28
|
+
<< /Filter /Standard /Length 128 /O <1517aad6ec33e7aaa17972b91854f2f7c05c11fc7fcafe7df725ffcfd4c55705> /P -4 /R 3 /U <6ccfb47c809a4bab70d578d957cee8240122456a91bae5134273a6db134c87c4> /V 2 >>
|
|
29
|
+
endobj
|
|
30
|
+
xref
|
|
31
|
+
0 9
|
|
32
|
+
0000000000 65535 f
|
|
33
|
+
0000000015 00000 n
|
|
34
|
+
0000000064 00000 n
|
|
35
|
+
0000000129 00000 n
|
|
36
|
+
0000000214 00000 n
|
|
37
|
+
0000000294 00000 n
|
|
38
|
+
0000000394 00000 n
|
|
39
|
+
0000000461 00000 n
|
|
40
|
+
0000000541 00000 n
|
|
41
|
+
trailer << /Info 2 0 R /Root 1 0 R /Size 9 /ID [<6790ffa610024e78369114311fc0df96><4b0eee51689dcb9ba602518b54b8c48d>] /Encrypt 8 0 R >>
|
|
42
|
+
startxref
|
|
43
|
+
748
|
|
44
|
+
%%EOF
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
%PDF-1.5
|
|
2
|
+
%����
|
|
3
|
+
1 0 obj
|
|
4
|
+
<< /Pages 3 0 R /Type /Catalog >>
|
|
5
|
+
endobj
|
|
6
|
+
2 0 obj
|
|
7
|
+
<< /ModDate <a4edf0aa882dd1e784a1f0d956592496> >>
|
|
8
|
+
endobj
|
|
9
|
+
3 0 obj
|
|
10
|
+
<< /Count 1 /Kids [ 4 0 R ] /MediaBox [ 0 0 612 446 ] /Type /Pages >>
|
|
11
|
+
endobj
|
|
12
|
+
4 0 obj
|
|
13
|
+
<< /Contents 5 0 R /Parent 3 0 R /Resources 6 0 R /Type /Page >>
|
|
14
|
+
endobj
|
|
15
|
+
5 0 obj
|
|
16
|
+
<< /Length 51 >>
|
|
17
|
+
stream
|
|
18
|
+
��&X*�2�Р#�b&�
|
|
19
|
�X\4t��=���~YCa�4��K�v�l���endstream
|
|
20
|
+
endobj
|
|
21
|
+
6 0 obj
|
|
22
|
+
<< /Font << /F1 7 0 R >> /ProcSet [ /PDF /Text ] >>
|
|
23
|
+
endobj
|
|
24
|
+
7 0 obj
|
|
25
|
+
<< /BaseFont /Helvetica /Name /F1 /Subtype /Type1 /Type /Font >>
|
|
26
|
+
endobj
|
|
27
|
+
8 0 obj
|
|
28
|
+
<< /CF << /StdCF << /AuthEvent /DocOpen /CFM /V2 /Length 16 >> >> /Filter /Standard /Length 128 /O <1517aad6ec33e7aaa17972b91854f2f7c05c11fc7fcafe7df725ffcfd4c55705> /P -4 /R 4 /StmF /StdCF /StrF /StdCF /U <6ccfb47c809a4bab70d578d957cee8240122456a91bae5134273a6db134c87c4> /V 4 >>
|
|
29
|
+
endobj
|
|
30
|
+
xref
|
|
31
|
+
0 9
|
|
32
|
+
0000000000 65535 f
|
|
33
|
+
0000000015 00000 n
|
|
34
|
+
0000000064 00000 n
|
|
35
|
+
0000000129 00000 n
|
|
36
|
+
0000000214 00000 n
|
|
37
|
+
0000000294 00000 n
|
|
38
|
+
0000000394 00000 n
|
|
39
|
+
0000000461 00000 n
|
|
40
|
+
0000000541 00000 n
|
|
41
|
+
trailer << /Info 2 0 R /Root 1 0 R /Size 9 /ID [<6790ffa610024e78369114311fc0df96><c076b76a546e168a79166606212af08f>] /Encrypt 8 0 R >>
|
|
42
|
+
startxref
|
|
43
|
+
837
|
|
44
|
+
%%EOF
|
|
Binary file
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
%PDF-1.6
|
|
2
|
+
%����
|
|
3
|
+
1 0 obj
|
|
4
|
+
<< /Pages 3 0 R /Type /Catalog >>
|
|
5
|
+
endobj
|
|
6
|
+
2 0 obj
|
|
7
|
+
<< /ModDate <fbf7060c68ac30939db362469e7f0e1dde4c372fe75fb33db8f1f1d1cbde1d5448e3cf2279e902e3da77a6dbfe67a1e2> >>
|
|
8
|
+
endobj
|
|
9
|
+
3 0 obj
|
|
10
|
+
<< /Count 1 /Kids [ 4 0 R ] /MediaBox [ 0 0 612 446 ] /Type /Pages >>
|
|
11
|
+
endobj
|
|
12
|
+
4 0 obj
|
|
13
|
+
<< /Contents 5 0 R /Parent 3 0 R /Resources 6 0 R /Type /Page >>
|
|
14
|
+
endobj
|
|
15
|
+
5 0 obj
|
|
16
|
+
<< /Length 80 >>
|
|
17
|
+
stream
|
|
18
|
+
�L���j�
|
|
19
|
+
endobj
|
|
20
|
+
6 0 obj
|
|
21
|
+
<< /Font << /F1 7 0 R >> /ProcSet [ /PDF /Text ] >>
|
|
22
|
+
endobj
|
|
23
|
+
7 0 obj
|
|
24
|
+
<< /BaseFont /Helvetica /Name /F1 /Subtype /Type1 /Type /Font >>
|
|
25
|
+
endobj
|
|
26
|
+
8 0 obj
|
|
27
|
+
<< /CF << /StdCF << /AuthEvent /DocOpen /CFM /AESV2 /Length 16 >> >> /Filter /Standard /Length 128 /O <36451bd39d753b7c1d10922c28e6665aa4f3353fb0348b536893e3b1db5c579b> /P -4 /R 4 /StmF /StdCF /StrF /StdCF /U <21b497bba6ef18247f972715de1d12780122456a91bae5134273a6db134c87c4> /V 4 >>
|
|
28
|
+
endobj
|
|
29
|
+
xref
|
|
30
|
+
0 9
|
|
31
|
+
0000000000 65535 f
|
|
32
|
+
0000000015 00000 n
|
|
33
|
+
0000000064 00000 n
|
|
34
|
+
0000000193 00000 n
|
|
35
|
+
0000000278 00000 n
|
|
36
|
+
0000000358 00000 n
|
|
37
|
+
0000000487 00000 n
|
|
38
|
+
0000000554 00000 n
|
|
39
|
+
0000000634 00000 n
|
|
40
|
+
trailer << /Info 2 0 R /Root 1 0 R /Size 9 /ID [<6790ffa610024e78369114311fc0df96><0995393fccfd6be04530deefef6eaafd>] /Encrypt 8 0 R >>
|
|
41
|
+
startxref
|
|
42
|
+
933
|
|
43
|
+
%%EOF
|
|
Binary file
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
%PDF-1.4
|
|
2
|
+
%����
|
|
3
|
+
1 0 obj
|
|
4
|
+
<< /Pages 3 0 R /Type /Catalog >>
|
|
5
|
+
endobj
|
|
6
|
+
2 0 obj
|
|
7
|
+
<< /ModDate <05e6011e1e6068218845d13117a2ff4a> >>
|
|
8
|
+
endobj
|
|
9
|
+
3 0 obj
|
|
10
|
+
<< /Count 1 /Kids [ 4 0 R ] /MediaBox [ 0 0 612 446 ] /Type /Pages >>
|
|
11
|
+
endobj
|
|
12
|
+
4 0 obj
|
|
13
|
+
<< /Contents 5 0 R /Parent 3 0 R /Resources 6 0 R /Type /Page >>
|
|
14
|
+
endobj
|
|
15
|
+
5 0 obj
|
|
16
|
+
<< /Length 51 >>
|
|
17
|
+
stream
|
|
18
|
+
S�ޣg����S�U��;�㇟�i���g�Fe�<���5�q?��^#��ڄOendstream
|
|
19
|
+
endobj
|
|
20
|
+
6 0 obj
|
|
21
|
+
<< /Font << /F1 7 0 R >> /ProcSet [ /PDF /Text ] >>
|
|
22
|
+
endobj
|
|
23
|
+
7 0 obj
|
|
24
|
+
<< /BaseFont /Helvetica /Name /F1 /Subtype /Type1 /Type /Font >>
|
|
25
|
+
endobj
|
|
26
|
+
8 0 obj
|
|
27
|
+
<< /Filter /Standard /Length 128 /O <36451bd39d753b7c1d10922c28e6665aa4f3353fb0348b536893e3b1db5c579b> /P -4 /R 3 /U <21b497bba6ef18247f972715de1d12780122456a91bae5134273a6db134c87c4> /V 2 >>
|
|
28
|
+
endobj
|
|
29
|
+
xref
|
|
30
|
+
0 9
|
|
31
|
+
0000000000 65535 f
|
|
32
|
+
0000000015 00000 n
|
|
33
|
+
0000000064 00000 n
|
|
34
|
+
0000000129 00000 n
|
|
35
|
+
0000000214 00000 n
|
|
36
|
+
0000000294 00000 n
|
|
37
|
+
0000000394 00000 n
|
|
38
|
+
0000000461 00000 n
|
|
39
|
+
0000000541 00000 n
|
|
40
|
+
trailer << /Info 2 0 R /Root 1 0 R /Size 9 /ID [<6790ffa610024e78369114311fc0df96><4faaca305306e77695ef10973458e3e4>] /Encrypt 8 0 R >>
|
|
41
|
+
startxref
|
|
42
|
+
748
|
|
43
|
+
%%EOF
|