prawn 0.12.0 → 0.13.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/COPYING +2 -2
- data/Gemfile +18 -0
- data/LICENSE +1 -1
- data/README.md +17 -4
- data/Rakefile +18 -22
- data/data/images/indexed_color.dat +0 -0
- data/data/images/indexed_color.png +0 -0
- data/data/pdfs/nested_pages.pdf +13 -13
- data/lib/pdf/core.rb +35 -0
- data/lib/{prawn → pdf}/core/annotations.rb +6 -7
- data/lib/{prawn → pdf}/core/byte_string.rb +1 -1
- data/lib/{prawn → pdf}/core/destinations.rb +23 -23
- data/lib/{prawn → pdf}/core/document_state.rb +8 -8
- data/lib/pdf/core/filter_list.rb +51 -0
- data/lib/pdf/core/filters.rb +36 -0
- data/lib/pdf/core/graphics_state.rb +68 -0
- data/lib/{prawn → pdf}/core/literal_string.rb +1 -1
- data/lib/{prawn → pdf}/core/name_tree.rb +14 -2
- data/lib/{prawn → pdf}/core/object_store.rb +80 -24
- data/lib/pdf/core/outline.rb +315 -0
- data/lib/{prawn → pdf}/core/page.rb +23 -26
- data/lib/{prawn/document → pdf/core}/page_geometry.rb +11 -21
- data/lib/{prawn → pdf}/core/pdf_object.rb +48 -32
- data/lib/{prawn → pdf}/core/reference.rb +35 -44
- data/lib/pdf/core/stream.rb +98 -0
- data/lib/{prawn → pdf}/core/text.rb +24 -17
- data/lib/prawn.rb +95 -17
- data/lib/prawn/compatibility.rb +66 -26
- data/lib/prawn/document.rb +48 -30
- data/lib/prawn/document/bounding_box.rb +3 -3
- data/lib/prawn/document/column_box.rb +46 -8
- data/lib/prawn/document/graphics_state.rb +10 -73
- data/lib/prawn/document/internals.rb +24 -23
- data/lib/prawn/document/snapshot.rb +6 -7
- data/lib/prawn/document/span.rb +10 -10
- data/lib/prawn/encoding.rb +7 -7
- data/lib/prawn/errors.rb +18 -29
- data/lib/prawn/font.rb +64 -28
- data/lib/prawn/font/afm.rb +32 -74
- data/lib/prawn/font/dfont.rb +2 -2
- data/lib/prawn/font/ttf.rb +28 -57
- data/lib/prawn/font_metric_cache.rb +45 -0
- data/lib/prawn/graphics.rb +307 -41
- data/lib/prawn/graphics/cap_style.rb +3 -3
- data/lib/prawn/graphics/color.rb +12 -5
- data/lib/prawn/graphics/dash.rb +52 -31
- data/lib/prawn/graphics/join_style.rb +7 -7
- data/lib/prawn/graphics/patterns.rb +137 -0
- data/lib/prawn/graphics/transformation.rb +9 -9
- data/lib/prawn/graphics/transparency.rb +1 -1
- data/lib/prawn/image_handler.rb +30 -0
- data/lib/prawn/images.rb +86 -105
- data/lib/prawn/images/image.rb +48 -0
- data/lib/prawn/images/jpg.rb +14 -10
- data/lib/prawn/images/png.rb +50 -37
- data/lib/prawn/layout.rb +2 -2
- data/lib/prawn/layout/grid.rb +51 -51
- data/lib/prawn/measurement_extensions.rb +5 -5
- data/lib/prawn/measurements.rb +25 -21
- data/lib/prawn/outline.rb +4 -308
- data/lib/prawn/repeater.rb +8 -8
- data/lib/prawn/security.rb +50 -36
- data/lib/prawn/soft_mask.rb +94 -0
- data/lib/prawn/stamp.rb +3 -3
- data/lib/prawn/table.rb +292 -118
- data/lib/prawn/table/cell.rb +272 -45
- data/lib/prawn/table/cell/image.rb +70 -0
- data/lib/prawn/table/cell/in_table.rb +2 -2
- data/lib/prawn/table/cell/span_dummy.rb +92 -0
- data/lib/prawn/table/cell/subtable.rb +2 -2
- data/lib/prawn/table/cell/text.rb +42 -24
- data/lib/prawn/table/cells.rb +137 -48
- data/lib/prawn/text.rb +35 -23
- data/lib/prawn/text/box.rb +18 -5
- data/lib/prawn/text/formatted.rb +5 -4
- data/lib/prawn/text/formatted/arranger.rb +292 -0
- data/lib/prawn/text/formatted/box.rb +52 -13
- data/lib/prawn/text/formatted/fragment.rb +37 -22
- data/lib/prawn/text/formatted/line_wrap.rb +286 -0
- data/lib/prawn/text/formatted/parser.rb +14 -6
- data/lib/prawn/text/formatted/wrap.rb +151 -0
- data/lib/prawn/utilities.rb +44 -0
- data/manual/basic_concepts/adding_pages.rb +27 -0
- data/manual/basic_concepts/basic_concepts.rb +34 -0
- data/manual/basic_concepts/creation.rb +39 -0
- data/manual/basic_concepts/cursor.rb +33 -0
- data/manual/basic_concepts/measurement.rb +25 -0
- data/manual/basic_concepts/origin.rb +38 -0
- data/manual/basic_concepts/other_cursor_helpers.rb +40 -0
- data/manual/bounding_box/bounding_box.rb +39 -0
- data/manual/bounding_box/bounds.rb +49 -0
- data/manual/bounding_box/canvas.rb +24 -0
- data/manual/bounding_box/creation.rb +23 -0
- data/manual/bounding_box/indentation.rb +46 -0
- data/manual/bounding_box/nesting.rb +45 -0
- data/manual/bounding_box/russian_boxes.rb +40 -0
- data/manual/bounding_box/stretchy.rb +31 -0
- data/manual/document_and_page_options/background.rb +27 -0
- data/manual/document_and_page_options/document_and_page_options.rb +31 -0
- data/manual/document_and_page_options/metadata.rb +23 -0
- data/manual/document_and_page_options/page_margins.rb +38 -0
- data/manual/document_and_page_options/page_size.rb +34 -0
- data/manual/example_file.rb +116 -0
- data/manual/example_helper.rb +411 -0
- data/manual/example_package.rb +53 -0
- data/manual/example_section.rb +46 -0
- data/manual/graphics/circle_and_ellipse.rb +22 -0
- data/manual/graphics/color.rb +24 -0
- data/manual/graphics/common_lines.rb +28 -0
- data/manual/graphics/fill_and_stroke.rb +42 -0
- data/manual/graphics/fill_rules.rb +37 -0
- data/manual/graphics/gradients.rb +37 -0
- data/manual/graphics/graphics.rb +58 -0
- data/manual/graphics/helper.rb +24 -0
- data/manual/graphics/line_width.rb +35 -0
- data/manual/graphics/lines_and_curves.rb +41 -0
- data/manual/graphics/polygon.rb +29 -0
- data/manual/graphics/rectangle.rb +21 -0
- data/manual/graphics/rotate.rb +28 -0
- data/manual/graphics/scale.rb +41 -0
- data/manual/graphics/soft_masks.rb +46 -0
- data/manual/graphics/stroke_cap.rb +31 -0
- data/manual/graphics/stroke_dash.rb +48 -0
- data/manual/graphics/stroke_join.rb +30 -0
- data/manual/graphics/translate.rb +29 -0
- data/manual/graphics/transparency.rb +35 -0
- data/manual/images/absolute_position.rb +23 -0
- data/manual/images/fit.rb +21 -0
- data/manual/images/horizontal.rb +25 -0
- data/manual/images/images.rb +40 -0
- data/manual/images/plain_image.rb +18 -0
- data/manual/images/scale.rb +22 -0
- data/manual/images/vertical.rb +28 -0
- data/manual/images/width_and_height.rb +25 -0
- data/manual/layout/boxes.rb +27 -0
- data/manual/layout/content.rb +25 -0
- data/manual/layout/layout.rb +28 -0
- data/manual/layout/simple_grid.rb +23 -0
- data/manual/manual/cover.rb +35 -0
- data/manual/manual/foreword.rb +85 -0
- data/manual/manual/how_to_read_this_manual.rb +41 -0
- data/manual/manual/manual.rb +35 -0
- data/manual/outline/add_subsection_to.rb +61 -0
- data/manual/outline/insert_section_after.rb +47 -0
- data/manual/outline/outline.rb +32 -0
- data/manual/outline/sections_and_pages.rb +67 -0
- data/manual/repeatable_content/page_numbering.rb +54 -0
- data/manual/repeatable_content/repeatable_content.rb +31 -0
- data/manual/repeatable_content/repeater.rb +55 -0
- data/manual/repeatable_content/stamp.rb +41 -0
- data/manual/security/encryption.rb +31 -0
- data/manual/security/permissions.rb +38 -0
- data/manual/security/security.rb +28 -0
- data/manual/syntax_highlight.rb +52 -0
- data/manual/table/basic_block.rb +53 -0
- data/manual/table/before_rendering_page.rb +26 -0
- data/manual/table/cell_border_lines.rb +24 -0
- data/manual/table/cell_borders_and_bg.rb +31 -0
- data/manual/table/cell_dimensions.rb +30 -0
- data/manual/table/cell_text.rb +38 -0
- data/manual/table/column_widths.rb +30 -0
- data/manual/table/content_and_subtables.rb +39 -0
- data/manual/table/creation.rb +27 -0
- data/manual/table/filtering.rb +36 -0
- data/manual/table/flow_and_header.rb +17 -0
- data/manual/table/image_cells.rb +33 -0
- data/manual/table/position.rb +29 -0
- data/manual/table/row_colors.rb +20 -0
- data/manual/table/span.rb +30 -0
- data/manual/table/style.rb +22 -0
- data/manual/table/table.rb +52 -0
- data/manual/table/width.rb +27 -0
- data/manual/templates/full_template.rb +25 -0
- data/manual/templates/page_template.rb +48 -0
- data/manual/templates/templates.rb +27 -0
- data/manual/text/alignment.rb +44 -0
- data/manual/text/color.rb +24 -0
- data/manual/text/column_box.rb +32 -0
- data/manual/text/fallback_fonts.rb +37 -0
- data/manual/text/font.rb +41 -0
- data/manual/text/font_size.rb +45 -0
- data/manual/text/font_style.rb +23 -0
- data/manual/text/formatted_callbacks.rb +60 -0
- data/manual/text/formatted_text.rb +54 -0
- data/manual/text/free_flowing_text.rb +51 -0
- data/manual/text/group.rb +29 -0
- data/manual/text/inline.rb +43 -0
- data/manual/text/kerning_and_character_spacing.rb +39 -0
- data/manual/text/leading.rb +25 -0
- data/manual/text/line_wrapping.rb +41 -0
- data/manual/text/paragraph_indentation.rb +26 -0
- data/manual/text/positioned_text.rb +38 -0
- data/manual/text/registering_families.rb +48 -0
- data/manual/text/rendering_and_color.rb +37 -0
- data/manual/text/right_to_left_text.rb +43 -0
- data/manual/text/rotation.rb +43 -0
- data/manual/text/single_usage.rb +37 -0
- data/manual/text/text.rb +75 -0
- data/manual/text/text_box_excess.rb +32 -0
- data/manual/text/text_box_extensions.rb +45 -0
- data/manual/text/text_box_overflow.rb +44 -0
- data/manual/text/utf8.rb +28 -0
- data/{examples/m17n → manual/text}/win_ansi_charset.rb +14 -10
- data/prawn.gemspec +18 -12
- data/spec/acceptance/png.rb +23 -0
- data/spec/annotations_spec.rb +16 -32
- data/spec/bounding_box_spec.rb +128 -15
- data/spec/cell_spec.rb +169 -38
- data/spec/column_box_spec.rb +33 -0
- data/spec/destinations_spec.rb +5 -5
- data/spec/document_spec.rb +150 -104
- data/spec/extensions/encoding_helpers.rb +10 -0
- data/spec/extensions/mocha.rb +1 -0
- data/spec/filters_spec.rb +34 -0
- data/spec/font_metric_cache_spec.rb +52 -0
- data/spec/font_spec.rb +183 -97
- data/spec/formatted_text_arranger_spec.rb +43 -43
- data/spec/formatted_text_box_spec.rb +30 -20
- data/spec/formatted_text_fragment_spec.rb +8 -8
- data/spec/graphics_spec.rb +158 -69
- data/spec/grid_spec.rb +15 -15
- data/spec/image_handler_spec.rb +42 -0
- data/spec/images_spec.rb +49 -24
- data/spec/inline_formatted_text_parser_spec.rb +73 -19
- data/spec/jpg_spec.rb +4 -4
- data/spec/line_wrap_spec.rb +26 -26
- data/spec/measurement_units_spec.rb +6 -6
- data/spec/name_tree_spec.rb +21 -21
- data/spec/object_store_spec.rb +39 -39
- data/spec/outline_spec.rb +93 -53
- data/spec/pdf_object_spec.rb +88 -86
- data/spec/png_spec.rb +31 -28
- data/spec/reference_spec.rb +32 -32
- data/spec/repeater_spec.rb +25 -11
- data/spec/security_spec.rb +44 -12
- data/spec/snapshot_spec.rb +8 -9
- data/spec/soft_mask_spec.rb +117 -0
- data/spec/span_spec.rb +10 -15
- data/spec/spec_helper.rb +25 -8
- data/spec/stamp_spec.rb +29 -30
- data/spec/stream_spec.rb +58 -0
- data/spec/stroke_styles_spec.rb +36 -18
- data/spec/table/span_dummy_spec.rb +17 -0
- data/spec/table_spec.rb +697 -105
- data/spec/template_spec.rb +108 -54
- data/spec/text_at_spec.rb +18 -17
- data/spec/text_box_spec.rb +111 -62
- data/spec/text_rendering_mode_spec.rb +5 -5
- data/spec/text_spacing_spec.rb +4 -4
- data/spec/text_spec.rb +57 -49
- data/spec/transparency_spec.rb +5 -5
- metadata +421 -213
- data/data/fonts/Action Man.dfont +0 -0
- data/data/fonts/Activa.ttf +0 -0
- data/data/fonts/Chalkboard.ttf +0 -0
- data/data/fonts/DejaVuSans.ttf +0 -0
- data/data/fonts/Dustismo_Roman.ttf +0 -0
- data/data/fonts/comicsans.ttf +0 -0
- data/data/fonts/gkai00mp.ttf +0 -0
- data/data/images/rails.dat +0 -0
- data/data/images/rails.png +0 -0
- data/examples/bounding_box/russian_boxes.rb +0 -37
- data/examples/example_helper.rb +0 -11
- data/examples/general/context_sensitive_headers.rb +0 -38
- data/examples/graphics/cmyk.rb +0 -13
- data/examples/graphics/gradient.rb +0 -23
- data/examples/graphics/png_types.rb +0 -23
- data/examples/graphics/remote_images.rb +0 -13
- data/examples/m17n/full_win_ansi_character_list.rb +0 -20
- data/examples/m17n/sjis.rb +0 -29
- data/examples/table/bill.rb +0 -54
- data/examples/table/header.rb +0 -15
- data/examples/text/font_calculations.rb +0 -92
- data/examples/text/hyphenation.rb +0 -45
- data/examples/text/indent_paragraphs.rb +0 -24
- data/lib/prawn/core.rb +0 -85
- data/lib/prawn/core/text/formatted/arranger.rb +0 -294
- data/lib/prawn/core/text/formatted/line_wrap.rb +0 -273
- data/lib/prawn/core/text/formatted/wrap.rb +0 -153
- data/lib/prawn/graphics/gradient.rb +0 -84
- data/lib/prawn/security/arcfour.rb +0 -51
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ad2fdbe5f0c7d9075d0a6467217a996304aa4983
|
4
|
+
data.tar.gz: 6db5219bdb341f2c8d36c3cc0aca48720adbdccc
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c2795eaa023f044fdf99b91f79a4e56f181c8dcb13fd73112dcf181156234230117e17221521634c728e60c92a7f05a607f16cec47cd72eff9a77995e91f750f
|
7
|
+
data.tar.gz: cdf2c886e7bea9946289a11fa1f33c4574884ca65d2eebbaec6967016bc31aee008a9048fccecb73756a4950a6b4e686c838ddbf5e3c3c258bd1dd2ed6fea379
|
data/COPYING
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
Prawn may be used under Matz's terms for Ruby, or GPLv2 or GPLv3.
|
2
|
-
for Matz's terms, or GPLv2 and GPLv3 files.
|
1
|
+
Prawn may be used under Matz's original licensing terms for Ruby, or GPLv2 or GPLv3.
|
2
|
+
See LICENSE for Matz's terms, or GPLv2 and GPLv3 files.
|
data/Gemfile
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
source "https://rubygems.org"
|
2
|
+
|
3
|
+
gem "ttfunk", "~>1.0.3"
|
4
|
+
gem "pdf-reader", "~> 1.2"
|
5
|
+
gem "ruby-rc4"
|
6
|
+
gem "afm"
|
7
|
+
|
8
|
+
group :development do
|
9
|
+
gem "coderay", "~> 1.0.7"
|
10
|
+
gem "rdoc"
|
11
|
+
end
|
12
|
+
|
13
|
+
group :test do
|
14
|
+
gem "pdf-inspector", "~> 1.1.0", :require => "pdf/inspector"
|
15
|
+
gem "rspec"
|
16
|
+
gem "mocha", :require => false
|
17
|
+
gem "rake"
|
18
|
+
end
|
data/LICENSE
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Prawn is copyrighted free software produced by Gregory Brown along with
|
2
2
|
community contributions. See git log for authorship information.
|
3
3
|
|
4
|
-
Licensing terms follow
|
4
|
+
Licensing terms follow:
|
5
5
|
|
6
6
|
You can redistribute Prawn and/or modify it under either the terms of the GPLv2
|
7
7
|
or GPLv3 (see GPLv2 and GPLv3 files), or the conditions below:
|
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# Prawn: Fast, Nimble PDF Generation For Ruby
|
2
2
|
|
3
|
+
[![Build Status](https://secure.travis-ci.org/prawnpdf/prawn.png)](http://travis-ci.org/prawnpdf/prawn)
|
4
|
+
|
3
5
|
Prawn is a pure Ruby PDF generation library that provides a lot of great functionality while trying to remain simple and reasonably performant. Here are some of the important features we provide:
|
4
6
|
|
5
7
|
* Vector drawing support, including lines, polygons, curves, ellipses, etc.
|
@@ -23,7 +25,7 @@ One thing Prawn is not, and will never be, is an HTML to PDF generator. For thos
|
|
23
25
|
|
24
26
|
## Supported Ruby Versions and Implementations
|
25
27
|
|
26
|
-
Because Prawn is pure Ruby and virtually all of its dependencies are maintained by our core team, it should run pretty much anywhere, including Rubinius, JRuby, MacRuby, etc.
|
28
|
+
Because Prawn is pure Ruby and virtually all of its dependencies are maintained by our core team, it should run pretty much anywhere, including Rubinius, JRuby, MacRuby, etc. We officially support MRI {1.9.3 and 2.0.0} and jruby 1.7.x in 1.9 mode, however we will accept patches to fix problems on other Ruby platforms if they aren't too invasive.
|
27
29
|
|
28
30
|
## Installing Prawn
|
29
31
|
|
@@ -33,7 +35,7 @@ You can also install from git if you'd like, the _master_ branch contains the la
|
|
33
35
|
|
34
36
|
## Release Policies
|
35
37
|
|
36
|
-
We may introduce backwards incompatible changes each time our minor version number is bumped, but that any tiny version number bump should be bug fixes and internal changes only. Be sure to read the release notes each time we cut a new release and lock your gems accordingly. You can find the project CHANGELOG at: https://github.com/
|
38
|
+
We may introduce backwards incompatible changes each time our minor version number is bumped, but that any tiny version number bump should be bug fixes and internal changes only. Be sure to read the release notes each time we cut a new release and lock your gems accordingly. You can find the project CHANGELOG at: https://github.com/prawnpdf/prawn/wiki/CHANGELOG
|
37
39
|
|
38
40
|
## Hello World!
|
39
41
|
|
@@ -73,12 +75,23 @@ Please make your posts to the list as specific as possible, including code sampl
|
|
73
75
|
|
74
76
|
If you've found a bug, want to submit a patch, or have a feature request, please enter a ticket into our github tracker:
|
75
77
|
|
76
|
-
<http://github.com/
|
78
|
+
<http://github.com/prawnpdf/prawn/issues>
|
77
79
|
|
78
80
|
We strongly encourage bug reports to come with failing tests or at least a reduced example that demonstrates the problem. Similarly, patches should include tests, API documentation, and an update to the manual where relevant. Feel free to send a pull request early though, if you just want some feedback or a code review before preparing your code to be merged.
|
79
81
|
|
80
82
|
If you are unsure about whether or not you've found a bug, or want to check to see whether we'd be interested in the feature you want to add before you start working on it, feel free to post to our mailing list.
|
81
83
|
|
84
|
+
You can run our test suite in a few different ways:
|
85
|
+
|
86
|
+
1. Running `rake` will run the entire test suite excluding any unresolved issues
|
87
|
+
2. Running `rspec` will run the entire test suite including unresolved issues
|
88
|
+
3. Running `rspec -t unresolved` will run *only* unresolved issues
|
89
|
+
4. Running `rspec -t issue:NUMBER` will run the tests for a specific issue
|
90
|
+
|
91
|
+
These filters make it possible for us to add failing test cases for bugs that
|
92
|
+
are currently being researched or worked on, without breaking the typical
|
93
|
+
full suite run.
|
94
|
+
|
82
95
|
## Authorship
|
83
96
|
|
84
97
|
Prawn was originally developed by Gregory Brown, under the auspices of the Ruby Mendicant Project, a grassroots initiative in which the Ruby community collectively provided funding so that Gregory could take several months off of work to focus on this project.
|
@@ -87,7 +100,7 @@ Over the last several years, we've received code contributions from over 50 peop
|
|
87
100
|
|
88
101
|
While he was only with us for a short time before moving on to other things, we'd also like to thank Prawn core team emeritus Jamis Buck for his contributions. He was responsible for introducing font subsetting as well as the first implementation of our inline formatting support.
|
89
102
|
|
90
|
-
You can find the full list of folks who have at least one patch accepted to Prawn on github at https://github.com/
|
103
|
+
You can find the full list of folks who have at least one patch accepted to Prawn on github at https://github.com/prawnpdf/prawn/contributors
|
91
104
|
|
92
105
|
## License
|
93
106
|
|
data/Rakefile
CHANGED
@@ -1,37 +1,33 @@
|
|
1
|
-
require "rubygems"
|
2
1
|
require "bundler"
|
3
2
|
Bundler.setup
|
4
3
|
|
5
4
|
require 'rake'
|
6
|
-
require '
|
7
|
-
require
|
8
|
-
require
|
5
|
+
require 'rspec/core/rake_task'
|
6
|
+
require 'rdoc/task'
|
7
|
+
require 'rubygems/package_task'
|
9
8
|
|
10
|
-
task :default => [:
|
11
|
-
|
12
|
-
desc "Run all
|
13
|
-
|
14
|
-
|
15
|
-
test.libs << "spec"
|
16
|
-
test.test_files = Dir[ "spec/*_spec.rb" ]
|
17
|
-
test.verbose = true
|
9
|
+
task :default => [:spec]
|
10
|
+
|
11
|
+
desc "Run all rspec files"
|
12
|
+
RSpec::Core::RakeTask.new("spec") do |c|
|
13
|
+
c.rspec_opts = "-t ~unresolved"
|
18
14
|
end
|
19
15
|
|
20
16
|
desc "Show library's code statistics"
|
21
17
|
task :stats do
|
22
|
-
|
23
|
-
CodeStatistics::TEST_TYPES << "Specs"
|
24
|
-
|
25
|
-
|
18
|
+
require 'code_statistics'
|
19
|
+
CodeStatistics::TEST_TYPES << "Specs"
|
20
|
+
CodeStatistics.new( ["Prawn", "lib"],
|
21
|
+
["Specs", "spec"] ).to_s
|
26
22
|
end
|
27
23
|
|
28
24
|
desc "genrates documentation"
|
29
|
-
|
30
|
-
rdoc.rdoc_files.include( "README",
|
25
|
+
RDoc::Task.new do |rdoc|
|
26
|
+
rdoc.rdoc_files.include( "README.md",
|
31
27
|
"COPYING",
|
32
|
-
"LICENSE",
|
33
|
-
"
|
34
|
-
rdoc.main = "README"
|
28
|
+
"LICENSE",
|
29
|
+
"lib/" )
|
30
|
+
rdoc.main = "README.md"
|
35
31
|
rdoc.rdoc_dir = "doc/html"
|
36
32
|
rdoc.title = "Prawn Documentation"
|
37
33
|
end
|
@@ -45,7 +41,7 @@ task :manual do
|
|
45
41
|
end
|
46
42
|
|
47
43
|
spec = Gem::Specification.load "prawn.gemspec"
|
48
|
-
|
44
|
+
Gem::PackageTask.new(spec) do |pkg|
|
49
45
|
pkg.need_zip = true
|
50
46
|
pkg.need_tar = true
|
51
47
|
end
|
Binary file
|
Binary file
|
data/data/pdfs/nested_pages.pdf
CHANGED
@@ -49,7 +49,7 @@ endobj
|
|
49
49
|
>>
|
50
50
|
/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
|
51
51
|
>>
|
52
|
-
/Parent
|
52
|
+
/Parent 3 0 R
|
53
53
|
>>
|
54
54
|
endobj
|
55
55
|
7 0 obj
|
@@ -85,7 +85,7 @@ endobj
|
|
85
85
|
>>
|
86
86
|
/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
|
87
87
|
>>
|
88
|
-
/Parent
|
88
|
+
/Parent 3 0 R
|
89
89
|
>>
|
90
90
|
endobj
|
91
91
|
10 0 obj
|
@@ -97,17 +97,17 @@ endobj
|
|
97
97
|
endobj
|
98
98
|
xref
|
99
99
|
0 11
|
100
|
-
0000000000 65535 f
|
101
|
-
0000000015 00000 n
|
102
|
-
0000000071 00000 n
|
103
|
-
0000000120 00000 n
|
104
|
-
0000000183 00000 n
|
105
|
-
0000000240 00000 n
|
106
|
-
0000000494 00000 n
|
107
|
-
0000000672 00000 n
|
108
|
-
0000000769 00000 n
|
109
|
-
0000000994 00000 n
|
110
|
-
0000001173 00000 n
|
100
|
+
0000000000 65535 f
|
101
|
+
0000000015 00000 n
|
102
|
+
0000000071 00000 n
|
103
|
+
0000000120 00000 n
|
104
|
+
0000000183 00000 n
|
105
|
+
0000000240 00000 n
|
106
|
+
0000000494 00000 n
|
107
|
+
0000000672 00000 n
|
108
|
+
0000000769 00000 n
|
109
|
+
0000000994 00000 n
|
110
|
+
0000001173 00000 n
|
111
111
|
trailer
|
112
112
|
<< /Root 2 0 R
|
113
113
|
/Size 11
|
data/lib/pdf/core.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
require_relative "core/pdf_object"
|
2
|
+
require_relative "core/annotations"
|
3
|
+
require_relative "core/byte_string"
|
4
|
+
require_relative "core/destinations"
|
5
|
+
require_relative "core/filters"
|
6
|
+
require_relative "core/stream"
|
7
|
+
require_relative "core/reference"
|
8
|
+
require_relative "core/literal_string"
|
9
|
+
require_relative "core/filter_list"
|
10
|
+
require_relative "core/page"
|
11
|
+
require_relative "core/object_store"
|
12
|
+
require_relative "core/document_state"
|
13
|
+
require_relative "core/name_tree"
|
14
|
+
require_relative "core/graphics_state"
|
15
|
+
require_relative "core/page_geometry"
|
16
|
+
require_relative "core/outline"
|
17
|
+
|
18
|
+
module PDF
|
19
|
+
module Core
|
20
|
+
module Errors
|
21
|
+
# This error is raised when PdfObject() fails
|
22
|
+
FailedObjectConversion = Class.new(StandardError)
|
23
|
+
|
24
|
+
# This error is raised when object store fails to load a template file
|
25
|
+
TemplateError = Class.new(StandardError)
|
26
|
+
|
27
|
+
# This error is raise when trying to restore a graphic state that
|
28
|
+
EmptyGraphicStateStack = Class.new(StandardError)
|
29
|
+
|
30
|
+
# This error is raised when Document#page_layout is set to anything
|
31
|
+
# other than :portrait or :landscape
|
32
|
+
InvalidPageLayout = Class.new(StandardError)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -6,13 +6,12 @@
|
|
6
6
|
#
|
7
7
|
# This is free software. Please see the LICENSE and COPYING files for details.
|
8
8
|
#
|
9
|
-
module
|
10
|
-
module Core
|
11
|
-
|
12
|
-
# Provides very low-level support for annotations.
|
9
|
+
module PDF
|
10
|
+
module Core
|
11
|
+
# Provides very low-level support for annotations.
|
13
12
|
#
|
14
13
|
module Annotations #:nodoc:
|
15
|
-
|
14
|
+
|
16
15
|
# Adds a new annotation (section 8.4 in PDF spec) to the current page.
|
17
16
|
# +options+ must be a Hash describing the annotation.
|
18
17
|
#
|
@@ -50,12 +49,12 @@ module Prawn
|
|
50
49
|
options = options.merge(:Type => :Annot)
|
51
50
|
|
52
51
|
if options[:Dest].is_a?(String)
|
53
|
-
options[:Dest] =
|
52
|
+
options[:Dest] = PDF::Core::LiteralString.new(options[:Dest])
|
54
53
|
end
|
55
54
|
|
56
55
|
options
|
57
56
|
end
|
58
|
-
|
57
|
+
|
59
58
|
end
|
60
59
|
end
|
61
60
|
end
|
@@ -1,89 +1,89 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
-
#
|
3
|
+
# Implements destination support for PDF
|
4
4
|
#
|
5
5
|
# Copyright November 2008, Jamis Buck. All Rights Reserved.
|
6
6
|
#
|
7
7
|
# This is free software. Please see the LICENSE and COPYING files for details.
|
8
8
|
|
9
|
-
module
|
9
|
+
module PDF
|
10
10
|
module Core
|
11
11
|
module Destinations #:nodoc:
|
12
|
-
|
12
|
+
|
13
13
|
# The maximum number of children to fit into a single node in the Dests tree.
|
14
14
|
NAME_TREE_CHILDREN_LIMIT = 20 #:nodoc:
|
15
|
-
|
15
|
+
|
16
16
|
# The Dests name tree in the Name dictionary (see Prawn::Document::Internal#names).
|
17
17
|
# This name tree is used to store named destinations (PDF spec 8.2.1).
|
18
18
|
# (For more on name trees, see section 3.8.4 in the PDF spec.)
|
19
19
|
#
|
20
20
|
def dests
|
21
|
-
names.data[:Dests] ||= ref!(
|
21
|
+
names.data[:Dests] ||= ref!(PDF::Core::NameTree::Node.new(self, NAME_TREE_CHILDREN_LIMIT))
|
22
22
|
end
|
23
23
|
|
24
24
|
# Adds a new destination to the dests name tree (see #dests). The
|
25
|
-
# +reference+ parameter will be converted into a
|
25
|
+
# +reference+ parameter will be converted into a PDF::Core::Reference if
|
26
26
|
# it is not already one.
|
27
27
|
#
|
28
28
|
def add_dest(name, reference)
|
29
|
-
reference = ref!(reference) unless reference.is_a?(
|
29
|
+
reference = ref!(reference) unless reference.is_a?(PDF::Core::Reference)
|
30
30
|
dests.data.add(name, reference)
|
31
31
|
end
|
32
32
|
|
33
33
|
# Return a Dest specification for a specific location (and optional zoom
|
34
34
|
# level).
|
35
35
|
#
|
36
|
-
def dest_xyz(left, top, zoom=nil, page
|
37
|
-
[
|
36
|
+
def dest_xyz(left, top, zoom=nil, dest_page=page)
|
37
|
+
[dest_page.dictionary, :XYZ, left, top, zoom]
|
38
38
|
end
|
39
39
|
|
40
40
|
# Return a Dest specification that will fit the given page into the
|
41
41
|
# viewport.
|
42
42
|
#
|
43
|
-
def dest_fit(page
|
44
|
-
[
|
43
|
+
def dest_fit(dest_page=page)
|
44
|
+
[dest_page.dictionary, :Fit]
|
45
45
|
end
|
46
46
|
|
47
47
|
# Return a Dest specification that will fit the given page horizontally
|
48
48
|
# into the viewport, aligned vertically at the given top coordinate.
|
49
49
|
#
|
50
|
-
def dest_fit_horizontally(top, page
|
51
|
-
[
|
50
|
+
def dest_fit_horizontally(top, dest_page=page)
|
51
|
+
[dest_page.dictionary, :FitH, top]
|
52
52
|
end
|
53
53
|
|
54
54
|
# Return a Dest specification that will fit the given page vertically
|
55
55
|
# into the viewport, aligned horizontally at the given left coordinate.
|
56
56
|
#
|
57
|
-
def dest_fit_vertically(left, page
|
58
|
-
[
|
57
|
+
def dest_fit_vertically(left, dest_page=page)
|
58
|
+
[dest_page.dictionary, :FitV, left]
|
59
59
|
end
|
60
60
|
|
61
61
|
# Return a Dest specification that will fit the given rectangle into the
|
62
62
|
# viewport, for the given page.
|
63
63
|
#
|
64
|
-
def dest_fit_rect(left, bottom, right, top, page
|
65
|
-
[
|
64
|
+
def dest_fit_rect(left, bottom, right, top, dest_page=page)
|
65
|
+
[dest_page.dictionary, :FitR, left, bottom, right, top]
|
66
66
|
end
|
67
67
|
|
68
68
|
# Return a Dest specfication that will fit the given page's bounding box
|
69
69
|
# into the viewport.
|
70
70
|
#
|
71
|
-
def dest_fit_bounds(page
|
72
|
-
[
|
71
|
+
def dest_fit_bounds(dest_page=page)
|
72
|
+
[dest_page.dictionary, :FitB]
|
73
73
|
end
|
74
74
|
|
75
75
|
# Same as #dest_fit_horizontally, but works on the page's bounding box
|
76
76
|
# instead of the entire page.
|
77
77
|
#
|
78
|
-
def dest_fit_bounds_horizontally(top, page
|
79
|
-
[
|
78
|
+
def dest_fit_bounds_horizontally(top, dest_page=page)
|
79
|
+
[dest_page.dictionary, :FitBH, top]
|
80
80
|
end
|
81
81
|
|
82
82
|
# Same as #dest_fit_vertically, but works on the page's bounding box
|
83
83
|
# instead of the entire page.
|
84
84
|
#
|
85
|
-
def dest_fit_bounds_vertically(left, page
|
86
|
-
[
|
85
|
+
def dest_fit_bounds_vertically(left, dest_page=page)
|
86
|
+
[dest_page.dictionary, :FitBV, left]
|
87
87
|
end
|
88
88
|
end
|
89
89
|
end
|
@@ -1,13 +1,14 @@
|
|
1
|
-
module
|
1
|
+
module PDF
|
2
2
|
module Core
|
3
3
|
class DocumentState #:nodoc:
|
4
4
|
def initialize(options)
|
5
5
|
normalize_metadata(options)
|
6
6
|
|
7
7
|
if options[:template]
|
8
|
-
@store =
|
8
|
+
@store = PDF::Core::ObjectStore.new(:template => options[:template])
|
9
|
+
@store.info.data.merge!(options[:info]) if options[:info]
|
9
10
|
else
|
10
|
-
@store =
|
11
|
+
@store = PDF::Core::ObjectStore.new(:info => options[:info])
|
11
12
|
end
|
12
13
|
|
13
14
|
@version = 1.3
|
@@ -33,7 +34,7 @@ module Prawn
|
|
33
34
|
count = (1..@store.page_count)
|
34
35
|
@pages = count.map do |index|
|
35
36
|
orig_dict_id = @store.object_id_for_page(index)
|
36
|
-
|
37
|
+
PDF::Core::Page.new(document, :object_id => orig_dict_id)
|
37
38
|
end
|
38
39
|
|
39
40
|
end
|
@@ -41,9 +42,9 @@ module Prawn
|
|
41
42
|
def normalize_metadata(options)
|
42
43
|
options[:info] ||= {}
|
43
44
|
options[:info][:Creator] ||= "Prawn"
|
44
|
-
options[:info][:Producer]
|
45
|
+
options[:info][:Producer] ||= "Prawn"
|
45
46
|
|
46
|
-
|
47
|
+
options[:info]
|
47
48
|
end
|
48
49
|
|
49
50
|
def insert_page(page, page_number)
|
@@ -68,11 +69,10 @@ module Prawn
|
|
68
69
|
store.compact if optimize_objects
|
69
70
|
store.each do |ref|
|
70
71
|
ref.offset = output.size
|
71
|
-
output << (@encrypt ? ref.encrypted_object(@encryption_key) :
|
72
|
+
output << (@encrypt ? ref.encrypted_object(@encryption_key) :
|
72
73
|
ref.object)
|
73
74
|
end
|
74
75
|
end
|
75
|
-
|
76
76
|
end
|
77
77
|
end
|
78
78
|
end
|