prawn 0.12.0 → 0.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (282) hide show
  1. checksums.yaml +7 -0
  2. data/COPYING +2 -2
  3. data/Gemfile +18 -0
  4. data/LICENSE +1 -1
  5. data/README.md +17 -4
  6. data/Rakefile +18 -22
  7. data/data/images/indexed_color.dat +0 -0
  8. data/data/images/indexed_color.png +0 -0
  9. data/data/pdfs/nested_pages.pdf +13 -13
  10. data/lib/pdf/core.rb +35 -0
  11. data/lib/{prawn → pdf}/core/annotations.rb +6 -7
  12. data/lib/{prawn → pdf}/core/byte_string.rb +1 -1
  13. data/lib/{prawn → pdf}/core/destinations.rb +23 -23
  14. data/lib/{prawn → pdf}/core/document_state.rb +8 -8
  15. data/lib/pdf/core/filter_list.rb +51 -0
  16. data/lib/pdf/core/filters.rb +36 -0
  17. data/lib/pdf/core/graphics_state.rb +68 -0
  18. data/lib/{prawn → pdf}/core/literal_string.rb +1 -1
  19. data/lib/{prawn → pdf}/core/name_tree.rb +14 -2
  20. data/lib/{prawn → pdf}/core/object_store.rb +80 -24
  21. data/lib/pdf/core/outline.rb +315 -0
  22. data/lib/{prawn → pdf}/core/page.rb +23 -26
  23. data/lib/{prawn/document → pdf/core}/page_geometry.rb +11 -21
  24. data/lib/{prawn → pdf}/core/pdf_object.rb +48 -32
  25. data/lib/{prawn → pdf}/core/reference.rb +35 -44
  26. data/lib/pdf/core/stream.rb +98 -0
  27. data/lib/{prawn → pdf}/core/text.rb +24 -17
  28. data/lib/prawn.rb +95 -17
  29. data/lib/prawn/compatibility.rb +66 -26
  30. data/lib/prawn/document.rb +48 -30
  31. data/lib/prawn/document/bounding_box.rb +3 -3
  32. data/lib/prawn/document/column_box.rb +46 -8
  33. data/lib/prawn/document/graphics_state.rb +10 -73
  34. data/lib/prawn/document/internals.rb +24 -23
  35. data/lib/prawn/document/snapshot.rb +6 -7
  36. data/lib/prawn/document/span.rb +10 -10
  37. data/lib/prawn/encoding.rb +7 -7
  38. data/lib/prawn/errors.rb +18 -29
  39. data/lib/prawn/font.rb +64 -28
  40. data/lib/prawn/font/afm.rb +32 -74
  41. data/lib/prawn/font/dfont.rb +2 -2
  42. data/lib/prawn/font/ttf.rb +28 -57
  43. data/lib/prawn/font_metric_cache.rb +45 -0
  44. data/lib/prawn/graphics.rb +307 -41
  45. data/lib/prawn/graphics/cap_style.rb +3 -3
  46. data/lib/prawn/graphics/color.rb +12 -5
  47. data/lib/prawn/graphics/dash.rb +52 -31
  48. data/lib/prawn/graphics/join_style.rb +7 -7
  49. data/lib/prawn/graphics/patterns.rb +137 -0
  50. data/lib/prawn/graphics/transformation.rb +9 -9
  51. data/lib/prawn/graphics/transparency.rb +1 -1
  52. data/lib/prawn/image_handler.rb +30 -0
  53. data/lib/prawn/images.rb +86 -105
  54. data/lib/prawn/images/image.rb +48 -0
  55. data/lib/prawn/images/jpg.rb +14 -10
  56. data/lib/prawn/images/png.rb +50 -37
  57. data/lib/prawn/layout.rb +2 -2
  58. data/lib/prawn/layout/grid.rb +51 -51
  59. data/lib/prawn/measurement_extensions.rb +5 -5
  60. data/lib/prawn/measurements.rb +25 -21
  61. data/lib/prawn/outline.rb +4 -308
  62. data/lib/prawn/repeater.rb +8 -8
  63. data/lib/prawn/security.rb +50 -36
  64. data/lib/prawn/soft_mask.rb +94 -0
  65. data/lib/prawn/stamp.rb +3 -3
  66. data/lib/prawn/table.rb +292 -118
  67. data/lib/prawn/table/cell.rb +272 -45
  68. data/lib/prawn/table/cell/image.rb +70 -0
  69. data/lib/prawn/table/cell/in_table.rb +2 -2
  70. data/lib/prawn/table/cell/span_dummy.rb +92 -0
  71. data/lib/prawn/table/cell/subtable.rb +2 -2
  72. data/lib/prawn/table/cell/text.rb +42 -24
  73. data/lib/prawn/table/cells.rb +137 -48
  74. data/lib/prawn/text.rb +35 -23
  75. data/lib/prawn/text/box.rb +18 -5
  76. data/lib/prawn/text/formatted.rb +5 -4
  77. data/lib/prawn/text/formatted/arranger.rb +292 -0
  78. data/lib/prawn/text/formatted/box.rb +52 -13
  79. data/lib/prawn/text/formatted/fragment.rb +37 -22
  80. data/lib/prawn/text/formatted/line_wrap.rb +286 -0
  81. data/lib/prawn/text/formatted/parser.rb +14 -6
  82. data/lib/prawn/text/formatted/wrap.rb +151 -0
  83. data/lib/prawn/utilities.rb +44 -0
  84. data/manual/basic_concepts/adding_pages.rb +27 -0
  85. data/manual/basic_concepts/basic_concepts.rb +34 -0
  86. data/manual/basic_concepts/creation.rb +39 -0
  87. data/manual/basic_concepts/cursor.rb +33 -0
  88. data/manual/basic_concepts/measurement.rb +25 -0
  89. data/manual/basic_concepts/origin.rb +38 -0
  90. data/manual/basic_concepts/other_cursor_helpers.rb +40 -0
  91. data/manual/bounding_box/bounding_box.rb +39 -0
  92. data/manual/bounding_box/bounds.rb +49 -0
  93. data/manual/bounding_box/canvas.rb +24 -0
  94. data/manual/bounding_box/creation.rb +23 -0
  95. data/manual/bounding_box/indentation.rb +46 -0
  96. data/manual/bounding_box/nesting.rb +45 -0
  97. data/manual/bounding_box/russian_boxes.rb +40 -0
  98. data/manual/bounding_box/stretchy.rb +31 -0
  99. data/manual/document_and_page_options/background.rb +27 -0
  100. data/manual/document_and_page_options/document_and_page_options.rb +31 -0
  101. data/manual/document_and_page_options/metadata.rb +23 -0
  102. data/manual/document_and_page_options/page_margins.rb +38 -0
  103. data/manual/document_and_page_options/page_size.rb +34 -0
  104. data/manual/example_file.rb +116 -0
  105. data/manual/example_helper.rb +411 -0
  106. data/manual/example_package.rb +53 -0
  107. data/manual/example_section.rb +46 -0
  108. data/manual/graphics/circle_and_ellipse.rb +22 -0
  109. data/manual/graphics/color.rb +24 -0
  110. data/manual/graphics/common_lines.rb +28 -0
  111. data/manual/graphics/fill_and_stroke.rb +42 -0
  112. data/manual/graphics/fill_rules.rb +37 -0
  113. data/manual/graphics/gradients.rb +37 -0
  114. data/manual/graphics/graphics.rb +58 -0
  115. data/manual/graphics/helper.rb +24 -0
  116. data/manual/graphics/line_width.rb +35 -0
  117. data/manual/graphics/lines_and_curves.rb +41 -0
  118. data/manual/graphics/polygon.rb +29 -0
  119. data/manual/graphics/rectangle.rb +21 -0
  120. data/manual/graphics/rotate.rb +28 -0
  121. data/manual/graphics/scale.rb +41 -0
  122. data/manual/graphics/soft_masks.rb +46 -0
  123. data/manual/graphics/stroke_cap.rb +31 -0
  124. data/manual/graphics/stroke_dash.rb +48 -0
  125. data/manual/graphics/stroke_join.rb +30 -0
  126. data/manual/graphics/translate.rb +29 -0
  127. data/manual/graphics/transparency.rb +35 -0
  128. data/manual/images/absolute_position.rb +23 -0
  129. data/manual/images/fit.rb +21 -0
  130. data/manual/images/horizontal.rb +25 -0
  131. data/manual/images/images.rb +40 -0
  132. data/manual/images/plain_image.rb +18 -0
  133. data/manual/images/scale.rb +22 -0
  134. data/manual/images/vertical.rb +28 -0
  135. data/manual/images/width_and_height.rb +25 -0
  136. data/manual/layout/boxes.rb +27 -0
  137. data/manual/layout/content.rb +25 -0
  138. data/manual/layout/layout.rb +28 -0
  139. data/manual/layout/simple_grid.rb +23 -0
  140. data/manual/manual/cover.rb +35 -0
  141. data/manual/manual/foreword.rb +85 -0
  142. data/manual/manual/how_to_read_this_manual.rb +41 -0
  143. data/manual/manual/manual.rb +35 -0
  144. data/manual/outline/add_subsection_to.rb +61 -0
  145. data/manual/outline/insert_section_after.rb +47 -0
  146. data/manual/outline/outline.rb +32 -0
  147. data/manual/outline/sections_and_pages.rb +67 -0
  148. data/manual/repeatable_content/page_numbering.rb +54 -0
  149. data/manual/repeatable_content/repeatable_content.rb +31 -0
  150. data/manual/repeatable_content/repeater.rb +55 -0
  151. data/manual/repeatable_content/stamp.rb +41 -0
  152. data/manual/security/encryption.rb +31 -0
  153. data/manual/security/permissions.rb +38 -0
  154. data/manual/security/security.rb +28 -0
  155. data/manual/syntax_highlight.rb +52 -0
  156. data/manual/table/basic_block.rb +53 -0
  157. data/manual/table/before_rendering_page.rb +26 -0
  158. data/manual/table/cell_border_lines.rb +24 -0
  159. data/manual/table/cell_borders_and_bg.rb +31 -0
  160. data/manual/table/cell_dimensions.rb +30 -0
  161. data/manual/table/cell_text.rb +38 -0
  162. data/manual/table/column_widths.rb +30 -0
  163. data/manual/table/content_and_subtables.rb +39 -0
  164. data/manual/table/creation.rb +27 -0
  165. data/manual/table/filtering.rb +36 -0
  166. data/manual/table/flow_and_header.rb +17 -0
  167. data/manual/table/image_cells.rb +33 -0
  168. data/manual/table/position.rb +29 -0
  169. data/manual/table/row_colors.rb +20 -0
  170. data/manual/table/span.rb +30 -0
  171. data/manual/table/style.rb +22 -0
  172. data/manual/table/table.rb +52 -0
  173. data/manual/table/width.rb +27 -0
  174. data/manual/templates/full_template.rb +25 -0
  175. data/manual/templates/page_template.rb +48 -0
  176. data/manual/templates/templates.rb +27 -0
  177. data/manual/text/alignment.rb +44 -0
  178. data/manual/text/color.rb +24 -0
  179. data/manual/text/column_box.rb +32 -0
  180. data/manual/text/fallback_fonts.rb +37 -0
  181. data/manual/text/font.rb +41 -0
  182. data/manual/text/font_size.rb +45 -0
  183. data/manual/text/font_style.rb +23 -0
  184. data/manual/text/formatted_callbacks.rb +60 -0
  185. data/manual/text/formatted_text.rb +54 -0
  186. data/manual/text/free_flowing_text.rb +51 -0
  187. data/manual/text/group.rb +29 -0
  188. data/manual/text/inline.rb +43 -0
  189. data/manual/text/kerning_and_character_spacing.rb +39 -0
  190. data/manual/text/leading.rb +25 -0
  191. data/manual/text/line_wrapping.rb +41 -0
  192. data/manual/text/paragraph_indentation.rb +26 -0
  193. data/manual/text/positioned_text.rb +38 -0
  194. data/manual/text/registering_families.rb +48 -0
  195. data/manual/text/rendering_and_color.rb +37 -0
  196. data/manual/text/right_to_left_text.rb +43 -0
  197. data/manual/text/rotation.rb +43 -0
  198. data/manual/text/single_usage.rb +37 -0
  199. data/manual/text/text.rb +75 -0
  200. data/manual/text/text_box_excess.rb +32 -0
  201. data/manual/text/text_box_extensions.rb +45 -0
  202. data/manual/text/text_box_overflow.rb +44 -0
  203. data/manual/text/utf8.rb +28 -0
  204. data/{examples/m17n → manual/text}/win_ansi_charset.rb +14 -10
  205. data/prawn.gemspec +18 -12
  206. data/spec/acceptance/png.rb +23 -0
  207. data/spec/annotations_spec.rb +16 -32
  208. data/spec/bounding_box_spec.rb +128 -15
  209. data/spec/cell_spec.rb +169 -38
  210. data/spec/column_box_spec.rb +33 -0
  211. data/spec/destinations_spec.rb +5 -5
  212. data/spec/document_spec.rb +150 -104
  213. data/spec/extensions/encoding_helpers.rb +10 -0
  214. data/spec/extensions/mocha.rb +1 -0
  215. data/spec/filters_spec.rb +34 -0
  216. data/spec/font_metric_cache_spec.rb +52 -0
  217. data/spec/font_spec.rb +183 -97
  218. data/spec/formatted_text_arranger_spec.rb +43 -43
  219. data/spec/formatted_text_box_spec.rb +30 -20
  220. data/spec/formatted_text_fragment_spec.rb +8 -8
  221. data/spec/graphics_spec.rb +158 -69
  222. data/spec/grid_spec.rb +15 -15
  223. data/spec/image_handler_spec.rb +42 -0
  224. data/spec/images_spec.rb +49 -24
  225. data/spec/inline_formatted_text_parser_spec.rb +73 -19
  226. data/spec/jpg_spec.rb +4 -4
  227. data/spec/line_wrap_spec.rb +26 -26
  228. data/spec/measurement_units_spec.rb +6 -6
  229. data/spec/name_tree_spec.rb +21 -21
  230. data/spec/object_store_spec.rb +39 -39
  231. data/spec/outline_spec.rb +93 -53
  232. data/spec/pdf_object_spec.rb +88 -86
  233. data/spec/png_spec.rb +31 -28
  234. data/spec/reference_spec.rb +32 -32
  235. data/spec/repeater_spec.rb +25 -11
  236. data/spec/security_spec.rb +44 -12
  237. data/spec/snapshot_spec.rb +8 -9
  238. data/spec/soft_mask_spec.rb +117 -0
  239. data/spec/span_spec.rb +10 -15
  240. data/spec/spec_helper.rb +25 -8
  241. data/spec/stamp_spec.rb +29 -30
  242. data/spec/stream_spec.rb +58 -0
  243. data/spec/stroke_styles_spec.rb +36 -18
  244. data/spec/table/span_dummy_spec.rb +17 -0
  245. data/spec/table_spec.rb +697 -105
  246. data/spec/template_spec.rb +108 -54
  247. data/spec/text_at_spec.rb +18 -17
  248. data/spec/text_box_spec.rb +111 -62
  249. data/spec/text_rendering_mode_spec.rb +5 -5
  250. data/spec/text_spacing_spec.rb +4 -4
  251. data/spec/text_spec.rb +57 -49
  252. data/spec/transparency_spec.rb +5 -5
  253. metadata +421 -213
  254. data/data/fonts/Action Man.dfont +0 -0
  255. data/data/fonts/Activa.ttf +0 -0
  256. data/data/fonts/Chalkboard.ttf +0 -0
  257. data/data/fonts/DejaVuSans.ttf +0 -0
  258. data/data/fonts/Dustismo_Roman.ttf +0 -0
  259. data/data/fonts/comicsans.ttf +0 -0
  260. data/data/fonts/gkai00mp.ttf +0 -0
  261. data/data/images/rails.dat +0 -0
  262. data/data/images/rails.png +0 -0
  263. data/examples/bounding_box/russian_boxes.rb +0 -37
  264. data/examples/example_helper.rb +0 -11
  265. data/examples/general/context_sensitive_headers.rb +0 -38
  266. data/examples/graphics/cmyk.rb +0 -13
  267. data/examples/graphics/gradient.rb +0 -23
  268. data/examples/graphics/png_types.rb +0 -23
  269. data/examples/graphics/remote_images.rb +0 -13
  270. data/examples/m17n/full_win_ansi_character_list.rb +0 -20
  271. data/examples/m17n/sjis.rb +0 -29
  272. data/examples/table/bill.rb +0 -54
  273. data/examples/table/header.rb +0 -15
  274. data/examples/text/font_calculations.rb +0 -92
  275. data/examples/text/hyphenation.rb +0 -45
  276. data/examples/text/indent_paragraphs.rb +0 -24
  277. data/lib/prawn/core.rb +0 -85
  278. data/lib/prawn/core/text/formatted/arranger.rb +0 -294
  279. data/lib/prawn/core/text/formatted/line_wrap.rb +0 -273
  280. data/lib/prawn/core/text/formatted/wrap.rb +0 -153
  281. data/lib/prawn/graphics/gradient.rb +0 -84
  282. data/lib/prawn/security/arcfour.rb +0 -51
@@ -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. See LICENSE
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 (License of Ruby):
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. While we officially support MRI 1.8.7 and 1.9.2 only, we will accept patches to fix problems on other Ruby platforms if they aren't too invasive.
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/sandal/prawn/wiki/CHANGELOG
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/sandal/prawn/issues>
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/sandal/prawn/contributors
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 'rake/testtask'
7
- require "rake/rdoctask"
8
- require "rake/gempackagetask"
5
+ require 'rspec/core/rake_task'
6
+ require 'rdoc/task'
7
+ require 'rubygems/package_task'
9
8
 
10
- task :default => [:test]
11
-
12
- desc "Run all tests, test-spec, mocha, and pdf-reader required"
13
- Rake::TestTask.new do |test|
14
- # test.ruby_opts << "-w" # .should == true triggers a lot of warnings
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
- require 'code_statistics'
23
- CodeStatistics::TEST_TYPES << "Specs"
24
- CodeStatistics.new( ["Prawn", "lib"],
25
- ["Specs", "spec"] ).to_s
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
- Rake::RDocTask.new do |rdoc|
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
- "HACKING", "lib/" )
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
- Rake::GemPackageTask.new(spec) do |pkg|
44
+ Gem::PackageTask.new(spec) do |pkg|
49
45
  pkg.need_zip = true
50
46
  pkg.need_tar = true
51
47
  end
@@ -49,7 +49,7 @@ endobj
49
49
  >>
50
50
  /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
51
51
  >>
52
- /Parent 4 0 R
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 4 0 R
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
@@ -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 Prawn
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] = Prawn::Core::LiteralString.new(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,5 +1,5 @@
1
1
  # encoding: utf-8
2
- module Prawn
2
+ module PDF
3
3
  module Core
4
4
  # This is used to differentiate strings that must be encoded as
5
5
  # a byte string, such as binary data from encrypted strings.
@@ -1,89 +1,89 @@
1
1
  # encoding: utf-8
2
2
 
3
- # prawn/core/destinations.rb : Implements destination support for PDF
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 Prawn
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!(Prawn::Core::NameTree::Node.new(self, NAME_TREE_CHILDREN_LIMIT))
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 Prawn::Reference if
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?(Prawn::Core::Reference)
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=current_page)
37
- [page, :XYZ, left, top, zoom]
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=current_page)
44
- [page, :Fit]
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=current_page)
51
- [page, :FitH, top]
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=current_page)
58
- [page, :FitV, left]
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=current_page)
65
- [page, :FitR, left, bottom, right, top]
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=current_page)
72
- [page, :FitB]
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=current_page)
79
- [page, :FitBH, top]
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=current_page)
86
- [page, :FitBV, left]
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 Prawn
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 = Prawn::Core::ObjectStore.new(:template => options[:template])
8
+ @store = PDF::Core::ObjectStore.new(:template => options[:template])
9
+ @store.info.data.merge!(options[:info]) if options[:info]
9
10
  else
10
- @store = Prawn::Core::ObjectStore.new(:info => options[:info])
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
- Prawn::Core::Page.new(document, :object_id => orig_dict_id)
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] = "Prawn"
45
+ options[:info][:Producer] ||= "Prawn"
45
46
 
46
- info = options[:info]
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