prawn-rails 1.0.1 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (154) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +30 -6
  3. data/README.md +44 -27
  4. data/lib/prawn-rails/document.rb +12 -9
  5. data/lib/prawn-rails/rails_helper.rb +23 -6
  6. data/lib/prawn-rails/renderer.rb +3 -9
  7. data/lib/prawn-rails/version.rb +1 -1
  8. data/test/{dummy → dummy_app}/Rakefile +0 -0
  9. data/test/dummy_app/app/assets/config/manifest.js +3 -0
  10. data/test/{dummy/db/test.sqlite3 → dummy_app/app/assets/javascripts/application.js} +0 -0
  11. data/test/dummy_app/app/assets/stylesheets/application.css +3 -0
  12. data/test/{dummy → dummy_app}/app/controllers/application_controller.rb +0 -0
  13. data/test/dummy_app/app/controllers/reports_controller.rb +37 -0
  14. data/test/dummy_app/app/mailers/reports_mailer.rb +18 -0
  15. data/test/{dummy → dummy_app}/app/views/layouts/application.html.erb +1 -1
  16. data/test/dummy_app/app/views/reports/custom.pdf.prawn +3 -0
  17. data/test/dummy_app/app/views/reports/custom_disposition.pdf.prawn +3 -0
  18. data/test/dummy_app/app/views/reports/custom_filename.pdf.prawn +3 -0
  19. data/test/dummy_app/app/views/reports/sample.html.erb +1 -0
  20. data/test/{dummy/app/views/pdf/render_pdf.pdf.prawn → dummy_app/app/views/reports/sample.pdf.prawn} +13 -9
  21. data/test/dummy_app/app/views/reports/table.pdf.prawn +7 -0
  22. data/test/dummy_app/app/views/reports_mailer/send_report.html.erb +1 -0
  23. data/test/{dummy → dummy_app}/config.ru +0 -0
  24. data/test/{dummy → dummy_app}/config/application.rb +8 -1
  25. data/test/{dummy → dummy_app}/config/boot.rb +0 -0
  26. data/test/{dummy → dummy_app}/config/database.yml +0 -0
  27. data/test/{dummy → dummy_app}/config/environment.rb +0 -0
  28. data/test/{dummy → dummy_app}/config/environments/development.rb +0 -0
  29. data/test/{dummy → dummy_app}/config/environments/production.rb +0 -0
  30. data/test/{dummy → dummy_app}/config/environments/test.rb +0 -0
  31. data/test/{dummy → dummy_app}/config/initializers/backtrace_silencers.rb +0 -0
  32. data/test/{dummy → dummy_app}/config/initializers/inflections.rb +0 -0
  33. data/test/{dummy → dummy_app}/config/initializers/mime_types.rb +0 -0
  34. data/test/dummy_app/config/initializers/prawn-rails.rb +5 -0
  35. data/test/{dummy → dummy_app}/config/initializers/secret_token.rb +5 -1
  36. data/test/{dummy → dummy_app}/config/initializers/session_store.rb +1 -1
  37. data/test/{dummy → dummy_app}/config/initializers/wrap_parameters.rb +1 -1
  38. data/test/{dummy → dummy_app}/config/locales/en.yml +0 -0
  39. data/test/dummy_app/config/routes.rb +9 -0
  40. data/test/{dummy → dummy_app}/config/secrets.yml +0 -0
  41. data/test/{dummy → dummy_app}/db/schema.rb +1 -8
  42. data/test/{dummy/public/favicon.ico → dummy_app/db/test.sqlite3} +0 -0
  43. data/test/dummy_app/log/test.log +712 -0
  44. data/test/dummy_app/tmp/cache/assets/sprockets/v3.0/0Q/0QR6jgJcsDY23uF8NGHFYajkal8CGG4d3kOZQCD8Oj8.cache +1 -0
  45. data/test/dummy_app/tmp/cache/assets/sprockets/v3.0/1K/1KcQYwe3g9uhY2WePD1_5P38IzP0Veu8rDPI0wXQSP8.cache +1 -0
  46. data/test/{dummy/tmp/cache/assets/sprockets/v3.0/mQ/mQditvxd7m-nwTpkGVCOalFZesEjSbG8EOKqC3zq108.cache → dummy_app/tmp/cache/assets/sprockets/v3.0/3N/3NnKgR2TsTI1qCXKZpts0uJzp2dRJcoYp3nnFU6YE4o.cache} +1 -1
  47. data/test/dummy_app/tmp/cache/assets/sprockets/v3.0/4O/4O6Anm3R8aSIVfMhGtp5tZK3x17fcY1SbWoDN_6hb-o.cache +2 -0
  48. data/test/dummy_app/tmp/cache/assets/sprockets/v3.0/4X/4XWDJRe7gZAeojFwJq7j6jJxRr152aQBfyhVtPPSHDY.cache +0 -0
  49. data/test/dummy_app/tmp/cache/assets/sprockets/v3.0/7z/7zB4MNaDZMfwUPQ7LsLGHLt1EAx1oMCEUjywneVyoyY.cache +1 -0
  50. data/test/dummy_app/tmp/cache/assets/sprockets/v3.0/8D/8D13-8wUZxyVgrsD9RHdWUPhLlWcqnHXtOBMOPQRX-Q.cache +1 -0
  51. data/test/{dummy/tmp/cache/assets/sprockets/v3.0/7k/7knv2O_3Eod2l8h0YSVe5xjnQsDlsXbJffQ1dKiSrEs.cache → dummy_app/tmp/cache/assets/sprockets/v3.0/LR/LRLaw7viwBb9Mi_VFZxGbKIooy8Fqf1aB_iOTETsMyc.cache} +1 -1
  52. data/test/dummy_app/tmp/cache/assets/sprockets/v3.0/Mj/MjwYGG9GkHD1fwwH2bg66EBYl3zCA_mqeDF9otey4-U.cache +3 -0
  53. data/test/dummy_app/tmp/cache/assets/sprockets/v3.0/Yr/YrGeNwkHFUXGwgJhi0aqJdEHL--OyRwU5aN5azmIXM4.cache +0 -0
  54. data/test/dummy_app/tmp/cache/assets/sprockets/v3.0/ib/ibSeAobTqAE0a-v_-umXpnbXaIEx_WOtSsQkSRJCwwI.cache +0 -0
  55. data/test/dummy_app/tmp/cache/assets/sprockets/v3.0/mO/mOu9n3QmqPXFbaUP-4RAuwabvsLdudRBvk9LMIOTSoI.cache +1 -0
  56. data/test/dummy_app/tmp/cache/assets/sprockets/v3.0/vt/vtyC4n-7HZNOJV7EprjE7ThndKZkG00OVD8sO8cUFAM.cache +0 -0
  57. data/test/dummy_app/tmp/cache/assets/sprockets/v3.0/wt/wtoVyr5IaVgQI72M_TLZFUNHeStJ5maRaHlfA8Vt6d0.cache +1 -0
  58. data/test/dummy_app/tmp/cache/assets/sprockets/v4.0.0/-i/-i0h20pCtmvENM-EAyaKkJDFhjn-HuXuoE0e1sLu_rg.cache +0 -0
  59. data/test/dummy_app/tmp/cache/assets/sprockets/v4.0.0/0r/0r4iTRUbzH4dQwbjPscLVpHM1SJyEKVXeCEzD_U9JYE.cache +0 -0
  60. data/test/dummy_app/tmp/cache/assets/sprockets/v4.0.0/3N/3NnKgR2TsTI1qCXKZpts0uJzp2dRJcoYp3nnFU6YE4o.cache +0 -0
  61. data/test/dummy_app/tmp/cache/assets/sprockets/v4.0.0/4O/4O6Anm3R8aSIVfMhGtp5tZK3x17fcY1SbWoDN_6hb-o.cache +0 -0
  62. data/test/dummy_app/tmp/cache/assets/sprockets/v4.0.0/6y/6yMwFwpdEybDnrikBloKhYP4Zmo9Ry746DScoqO8mbE.cache +1 -0
  63. data/test/dummy_app/tmp/cache/assets/sprockets/v4.0.0/7z/7zB4MNaDZMfwUPQ7LsLGHLt1EAx1oMCEUjywneVyoyY.cache +1 -0
  64. data/test/dummy_app/tmp/cache/assets/sprockets/v4.0.0/8D/8D13-8wUZxyVgrsD9RHdWUPhLlWcqnHXtOBMOPQRX-Q.cache +1 -0
  65. data/test/dummy_app/tmp/cache/assets/sprockets/v4.0.0/Ac/Ac0RnYBszO_tvu-01dVJjO6aKZedDO2TVCAwpY5nE4U.cache +1 -0
  66. data/test/dummy_app/tmp/cache/assets/sprockets/v4.0.0/Do/Do83AoOat5W-c1g7piDGy2GMmffsY6JY0Qfuh5PY3GM.cache +0 -0
  67. data/test/dummy_app/tmp/cache/assets/sprockets/v4.0.0/FD/FDmzMYru4EyGcs7Q7tsCbapZmNV-jXENb6M-UuS8GLs.cache +1 -0
  68. data/test/dummy_app/tmp/cache/assets/sprockets/v4.0.0/FH/FHiO02EbiWfhKFHA3d6jTB6d50AXJzY9OjwpyzlbR3A.cache +1 -0
  69. data/test/dummy_app/tmp/cache/assets/sprockets/v4.0.0/Jn/JnmWS5ayWWDAiBYz39zc51V2mHFWYAlXjW-vPbehyvk.cache +1 -0
  70. data/test/dummy_app/tmp/cache/assets/sprockets/v4.0.0/Jr/JraYt1MnVVm8nrRu036hPHr_-BxBo2RwGcH_4XFDk9g.cache +0 -0
  71. data/test/dummy_app/tmp/cache/assets/sprockets/v4.0.0/LQ/LQQTiHeHlmh1Fwvuv1Ss9ne5mXE0TOv2xaanJ40LEXA.cache +0 -0
  72. data/test/dummy_app/tmp/cache/assets/sprockets/v4.0.0/LR/LRLaw7viwBb9Mi_VFZxGbKIooy8Fqf1aB_iOTETsMyc.cache +0 -0
  73. data/test/dummy_app/tmp/cache/assets/sprockets/v4.0.0/Mj/MjwYGG9GkHD1fwwH2bg66EBYl3zCA_mqeDF9otey4-U.cache +0 -0
  74. data/test/dummy_app/tmp/cache/assets/sprockets/v4.0.0/OH/OHFQxWHvIcKq2nREonlhK8AgUKTRZ-2tDjQIRFoh400.cache +1 -0
  75. data/test/dummy_app/tmp/cache/assets/sprockets/v4.0.0/QV/QVq7YZh551f-JSU-9f9VWDRJA0Wm_LcbdJfJEO45hpY.cache +1 -0
  76. data/test/dummy_app/tmp/cache/assets/sprockets/v4.0.0/Rx/RxPz7Gq0QcrSvjCMwAGBbCp9-4uiZixta20a-pY50G0.cache +1 -0
  77. data/test/dummy_app/tmp/cache/assets/sprockets/v4.0.0/Sd/SdKiVwcnL47CkgJH6d6rg8bT2jeMfr_KOpH6K-e_Rpw.cache +1 -0
  78. data/test/dummy_app/tmp/cache/assets/sprockets/v4.0.0/Tq/TqJjVveNs9BoMZZ0bqrtV17QUpcioQePyc75rUF8Q5U.cache +0 -0
  79. data/test/dummy_app/tmp/cache/assets/sprockets/v4.0.0/WX/WXW-hCt_qs8QZgCDuLbIdi4PEZY5Dr4gkk3TG2bzIlA.cache +1 -0
  80. data/test/dummy_app/tmp/cache/assets/sprockets/v4.0.0/X0/X0VVDULN8me11G85S0HRqtRtWpg2evTeD-eptzBX0Js.cache +1 -0
  81. data/test/dummy_app/tmp/cache/assets/sprockets/v4.0.0/bc/bc6phGXVat2w60GIQpknrZ6UeHcwGAJkPSEyx2vzYWA.cache +1 -0
  82. data/test/dummy_app/tmp/cache/assets/sprockets/v4.0.0/cc/ccsnAmW1sI8J39ktFOU92ag0Cmd98hy1nLoiYxk-ztA.cache +0 -0
  83. data/test/dummy_app/tmp/cache/assets/sprockets/v4.0.0/cq/cqmOKwCIiucE1noRNr0g5M-9rOz5lOw_KfXGRITzjfM.cache +0 -0
  84. data/test/dummy_app/tmp/cache/assets/sprockets/v4.0.0/dL/dLpVVClnOjqhfdUOtaPPRDGP73ARy79nba4H4B4TtkQ.cache +0 -0
  85. data/test/dummy_app/tmp/cache/assets/sprockets/v4.0.0/i5/i5ZEAsQ_Rav4MDMy4ihQldRNRjQ8rSickZnnbPrf8MM.cache +0 -0
  86. data/test/dummy_app/tmp/cache/assets/sprockets/v4.0.0/iv/ivPda3JMWfbu-IHENKRMM5Y-RPDGx17E-UsDHaRw2l0.cache +1 -0
  87. data/test/dummy_app/tmp/cache/assets/sprockets/v4.0.0/jX/jXTNqwlV7NH3QgrxukXmrtTRmJdf7JLsLthOWuSajAk.cache +1 -0
  88. data/test/dummy_app/tmp/cache/assets/sprockets/v4.0.0/oL/oL18MfHhURyZjTEiCN9pzxDO5yolnjepKPIQ3AxRtuw.cache +0 -0
  89. data/test/dummy_app/tmp/cache/assets/sprockets/v4.0.0/pC/pCWceIteP62iSWMjZn19ap3KwUG6vXoQUzXAe5Pd07s.cache +1 -0
  90. data/test/dummy_app/tmp/cache/assets/sprockets/v4.0.0/pv/pv6tV3CDkIAmLXdU8EPLlNEkXAKJPufVD4VP30o4fWo.cache +0 -0
  91. data/test/{dummy/tmp/cache/assets/sprockets/v3.0/w3/w3opA7mSLePTdHCpuCBqduTsSbwUIgiPnFcb4oLM4g4.cache → dummy_app/tmp/cache/assets/sprockets/v4.0.0/qY/qYZa9MjWU2euhPKhmXxsJtfsHa76D0-yIqmqhhqDnWM.cache} +0 -0
  92. data/test/dummy_app/tmp/cache/assets/sprockets/v4.0.0/ro/roxJL7F-lfG7snTu-4sBGaTfHUu94FPZMfWpTEJq-V8.cache +1 -0
  93. data/test/dummy_app/tmp/cache/assets/sprockets/v4.0.0/tV/tVR6xDtsNbiDca0JyoaKp4tirI4zYUF0RiWbw-9qyP0.cache +1 -0
  94. data/test/dummy_app/tmp/cache/assets/sprockets/v4.0.0/uO/uOomFpb2HCobA5V40idjrZP3fmfIzbyS21BXqdFnonw.cache +0 -0
  95. data/test/dummy_app/tmp/cache/assets/sprockets/v4.0.0/vv/vvPcNRT1bVyxTWN8IxKtvuBhxXib3G0tzztnaz6AE9k.cache +0 -0
  96. data/test/dummy_app/tmp/cache/assets/sprockets/v4.0.0/wX/wX5yL9P13fJNPuZX10N7nQYMaQJl8JdZKPpsRiESJgE.cache +0 -0
  97. data/test/dummy_app/tmp/cache/assets/sprockets/v4.0.0/yy/yycp8-xBCXFX3VWJYNtJkJvzZD2XEejmUso7wI-7cbo.cache +0 -0
  98. data/test/integration/prawn_rails_test.rb +105 -0
  99. data/test/prawn_rails_test.rb +28 -0
  100. data/test/test_helper.rb +11 -1
  101. metadata +231 -165
  102. data/lib/prawn-rails/extension.rb +0 -48
  103. data/test/dummy/app/assets/javascripts/application.js +0 -7
  104. data/test/dummy/app/assets/stylesheets/application.css +0 -7
  105. data/test/dummy/app/assets/stylesheets/scaffold.css +0 -56
  106. data/test/dummy/app/controllers/pdf_controller.rb +0 -9
  107. data/test/dummy/app/helpers/application_helper.rb +0 -2
  108. data/test/dummy/app/helpers/pdf_helper.rb +0 -2
  109. data/test/dummy/app/helpers/products_helper.rb +0 -2
  110. data/test/dummy/app/models/product.rb +0 -2
  111. data/test/dummy/app/views/pdf/render_pdf.html.erb +0 -2
  112. data/test/dummy/config/initializers/prawn-rails.rb +0 -4
  113. data/test/dummy/config/routes.rb +0 -62
  114. data/test/dummy/log/test.log +0 -390
  115. data/test/dummy/public/404.html +0 -26
  116. data/test/dummy/public/422.html +0 -26
  117. data/test/dummy/public/500.html +0 -26
  118. data/test/dummy/script/rails +0 -6
  119. data/test/dummy/test/functional/pdf_controller_test.rb +0 -21
  120. data/test/dummy/test/unit/helpers/pdf_helper_test.rb +0 -4
  121. data/test/dummy/test/unit/render_to_string_test.rb +0 -10
  122. data/test/dummy/tmp/cache/assets/sprockets/v3.0/3H/3HKwxPtsFtIWWB8h3a3IubpM4GcVjstICkerRFO439k.cache +0 -0
  123. data/test/dummy/tmp/cache/assets/sprockets/v3.0/7M/7Mq76IhtBe2-VV2M2oHVxXAVG_QLm5SrCNxRggF8RPc.cache +0 -0
  124. data/test/dummy/tmp/cache/assets/sprockets/v3.0/7z/7zCgQfsGmkfNRDRJbRNwZOHR1KjCn5eXK6kQ3MD3Q2I.cache +0 -1
  125. data/test/dummy/tmp/cache/assets/sprockets/v3.0/8k/8k3y_LCz9mDUxOJy9Q2XGrbzfTesQnWYC0cQP1TOvFs.cache +0 -1
  126. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Dm/DmmfrCpXtt74Hr6NO54lxyOCDv6klnDyBqeDFR7oDU8.cache +0 -3
  127. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Fl/FlyzzCH6xseKijuu-xP3_W0V8-1cWLl95YXDNxYDUNo.cache +0 -1
  128. data/test/dummy/tmp/cache/assets/sprockets/v3.0/HC/HCD43uamHiSFgGxIxwnhpFVOmIxP1BnzNNvNivaWbpk.cache +0 -0
  129. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Lx/LxtjvSVJOouLYZBYfdC_AjDQkYKKKEs3M10Vum5cJEg.cache +0 -1
  130. data/test/dummy/tmp/cache/assets/sprockets/v3.0/PK/PKWLCqd6Zhyt0ja1qijEKFaHwfBpCAHEosX412uU-V8.cache +0 -3
  131. data/test/dummy/tmp/cache/assets/sprockets/v3.0/PS/PSRh_XH9lrFbchQbAFcC08Qv6_y-Bgv7sjtfpKR-OUM.cache +0 -1
  132. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Qo/QoWFwSTYT96pcyCl7-2W0dwnhAcu5C8LIcoBrcDyStI.cache +0 -1
  133. data/test/dummy/tmp/cache/assets/sprockets/v3.0/VD/VDc9sGDOOPm5eVmRJ2f2cRjTaKC11SnKHOpHHbyChl0.cache +0 -0
  134. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Ve/VeM604IZ64WdmC055DY5x0e5Hi8rcIAqhYJI5EcopDI.cache +0 -1
  135. data/test/dummy/tmp/cache/assets/sprockets/v3.0/X0/X0IS1nkiVmMS3U903Hrwc01kDe2ajHoeo61xuHfbM6c.cache +0 -1
  136. data/test/dummy/tmp/cache/assets/sprockets/v3.0/bB/bBZWYaOxRNh_QSoJcD-Mkvcz9KgvY-dG9fwXISEG4K8.cache +0 -0
  137. data/test/dummy/tmp/cache/assets/sprockets/v3.0/dY/dYpMqE0kCuH8r1W0qAG7zvVC38Hq4BT-1D--XGbeNXg.cache +0 -0
  138. data/test/dummy/tmp/cache/assets/sprockets/v3.0/jH/jHI2oSw0VjtEfiiHzdvIRzqjkX7EfibPviTfzvDJie0.cache +0 -0
  139. data/test/dummy/tmp/cache/assets/sprockets/v3.0/jl/jlvE-YiBY3zJbTaEnymfM6KKQ0VC4fh-ABin-DfZQH0.cache +0 -2
  140. data/test/dummy/tmp/cache/assets/sprockets/v3.0/lW/lWicvOny7LscyeGkw-SjCaJEc6iQO2xyCQzEoCOT9io.cache +0 -0
  141. data/test/dummy/tmp/cache/assets/sprockets/v3.0/mq/mqcnbDYKKUpY94uXsWbGbcRGZwaZNlC1pynK_1spLG8.cache +0 -1
  142. data/test/dummy/tmp/cache/assets/sprockets/v3.0/np/nppFP1_0FGLqnQh_ZUlGiPLii5Lqbpv4cXNPXvimFF4.cache +0 -1
  143. data/test/dummy/tmp/cache/assets/sprockets/v3.0/oU/oUvIYed-Tb8hZ7gKa7FPpyhkc6vqXdyiMHNRI89fMO0.cache +0 -0
  144. data/test/dummy/tmp/cache/assets/sprockets/v3.0/sG/sG274Dzr6XE-W7yJehcXagYHbLDgelrH4-7lrdytdI4.cache +0 -1
  145. data/test/dummy/tmp/cache/assets/sprockets/v3.0/tA/tAy3LvgiPR3JYEMcVE38njAzFe3XLQuc5fZueLWu5Yo.cache +0 -0
  146. data/test/dummy/tmp/cache/assets/sprockets/v3.0/uO/uOOMjW4h-byBJFu52K4-uCeQA35aLhrqzzfRswpey-s.cache +0 -1
  147. data/test/dummy/tmp/cache/assets/sprockets/v3.0/vp/vpF3NlYVMkWc7PivIOC4SAKJ51RzYEXyTRKvfmsMGFg.cache +0 -1
  148. data/test/dummy/tmp/cache/assets/sprockets/v3.0/vv/vvP0dfbO8asNpteZs8hiM8s9YwP9qcQRAiF0Flm_2cw.cache +0 -1
  149. data/test/dummy/tmp/cache/assets/sprockets/v3.0/we/wetuI3DMxRNUJ59_Ht2tI_UznmZ4Qo6YaFQaObX5Yeo.cache +0 -1
  150. data/test/dummy/tmp/cache/assets/sprockets/v3.0/wn/wnvJ74QIdj8tSD10cXmY9KyXCpaQIv0FfZJWw-EudW8.cache +0 -0
  151. data/test/dummy/tmp/cache/assets/sprockets/v3.0/xP/xPMfTXGxxCCgIip6XsG-paelKjnDzbpAYugLmUfykPs.cache +0 -0
  152. data/test/dummy/tmp/cache/assets/sprockets/v3.0/zT/zTsAvZfthhhPVIOWyDH3KWWRuZ8HnBYMveoWvD-u9_k.cache +0 -1
  153. data/test/integration/navigation_test.rb +0 -9
  154. data/test/prawn-rails_test.rb +0 -11
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 6ba5a030e5ed002fe37dbc7639962f1cf925649c
4
- data.tar.gz: f2efee0ca9bc3c78882a1ed529bc4379a65c9bcb
2
+ SHA256:
3
+ metadata.gz: 8d84ee700167e6fe6cde67e0abad0c2310a74131e1cd7cb302e7fca00a4d0081
4
+ data.tar.gz: 3517d341b40d496f2692d545d7573c2b95ea335799d012e9b5455ea1ee2c8ede
5
5
  SHA512:
6
- metadata.gz: 2d05c397717c70f5898062126854ecd21414730b16fdb95168cdb3908984d7997237cf4efd39311f73dc47145f19df04aef9d212b2b08612b23f8091e1a54625
7
- data.tar.gz: f1226cbf7cd6c3dc7736bcfd76e4537570e1c234b4b8d437e8d994000e0e3ce2b07e9207b779b59641af894629f28c96770f0db68ead2fc7936ac2f771a88515
6
+ metadata.gz: a555d4e0bfc9e416dbe6bce1205a2cc714995b44f9f18e9575dbc788ffe24d0faa8d543c5dc7478871cb405d1d67e393ad81db698e0597d741679e0ed7af2a8b
7
+ data.tar.gz: b816eaa0601c5192c4ef522393c641a0f4a7843b16456a375feaefad81b42d5406d424a9ae72a9dbb1ff6d267e77b0d240f6c5eb4c54f80efe61489bd23a1fdb
data/CHANGELOG.md CHANGED
@@ -1,15 +1,39 @@
1
1
  # Changelog
2
2
 
3
- * `v1.0.1` - UNRELEASED
3
+ * `Unreleased`
4
+ - Nothing yet
5
+
6
+ * `v1.4.0`
7
+ - [PR #41](https://github.com/cortiz/prawn-rails/pull/41) - Depend on `railsties` instead of `rails` gem to avoid pulling in unnecessary dependencies such as action_cable, etc.
8
+
9
+ * `v1.3.0`
10
+ - [PR #40](https://github.com/cortiz/prawn-rails/pull/40) - Add `:filename` and `:disposition` options for `prawn_document
11
+ - [PR #40](https://github.com/cortiz/prawn-rails/pull/40) - Do not override existing`Content-Disposition` headers
12
+
13
+ * `v1.2.1`
14
+ - [PR #39](https://github.com/cortiz/prawn-rails/pull/39) - Fix Rails 6 deprecation warning for single arity template handlers
15
+ - Remove unnecessary option logic from `prawn_document` method
16
+
17
+ * `v1.2.0`
18
+ - [PR #31](https://github.com/cortiz/prawn-rails/pull/31) - Use Prawn::Document.extensions in favor of custom plug-in loading. This removes all changes made in PR #29 and should behave much more appropriately now.
19
+ - [Undo PR #29](https://github.com/cortiz/prawn-rails/pull/31) - Use Prawn::Document.extensions in favor of custom plug-in loading
20
+ - [PR #30](https://github.com/cortiz/prawn-rails/pull/30) - Allow rendering in ActionMailer
21
+
22
+ * `v1.1.0`
23
+ - [PR #29](https://github.com/cortiz/prawn-rails/pull/29) - Require all installed prawn extensions
24
+ - Removed unnecessary `html_strip` helper method. If you were using this feature, instead use Rails built in `strip_tags(html_str)` or `ActionView::Base.full_sanitizer.sanitize(html_str)`
25
+ - Add legitimate tests
26
+
27
+ * `v1.0.1`
4
28
  - Fix error when using `ActionController.render_to_string`
5
29
 
6
- * `v1.0.0` - January 21, 2017
30
+ * `v1.0.0`
7
31
  - Support `@filename`
8
32
  - Set PDF Title metadata based on `@filename` if not specified
9
33
  - Fix for Ruby 1.9.3+
10
34
  - Cleanup
11
35
 
12
- * `v0.1.1` - January 12, 2015
13
- * `v0.1.0` - October 7, 2014
14
- * `v0.0.2` - February 22, 2012
15
- * `v0.0.1` - February 21, 2012
36
+ * `v0.1.1`
37
+ * `v0.1.0`
38
+ * `v0.0.2`
39
+ * `v0.0.1`
data/README.md CHANGED
@@ -1,15 +1,18 @@
1
- # Prawn-Rails [![Gem Version](https://badge.fury.io/rb/prawn-rails.svg)](http://badge.fury.io/rb/prawn-rails)
2
- <a href='http://ko-fi.com/A552JBK' target='_blank'><img height='32' style='border:0px;height:32px;' src='https://az743702.vo.msecnd.net/cdn/kofi1.png?v=a' border='0' alt='Buy Me a Coffee' /></a>
1
+ # Prawn-Rails
2
+ <a href="https://badge.fury.io/rb/prawn-rails" target="_blank"><img height="21" style='border:0px;height:21px;' border='0' src="https://badge.fury.io/rb/prawn-rails.svg" alt="Gem Version"></a>
3
+ <a href='https://github.com/cortiz/prawn-rails/actions' target='_blank'><img src="https://github.com/cortiz/prawn-rails/workflows/Tests/badge.svg" style="max-width:100%;" height='21' style='border:0px;height:21px;' border='0' alt="CI Status"></a>
4
+ <a href='https://rubygems.org/gems/prawn-rails' target='_blank'><img height='21' style='border:0px;height:21px;' src='https://ruby-gem-downloads-badge.herokuapp.com/prawn-rails?label=rubygems&type=total&total_label=downloads&color=brightgreen' border='0' alt='RubyGems Downloads' /></a>
3
5
 
4
- ## Install
6
+
7
+ # Install
5
8
  ```ruby
6
9
  gem 'prawn-rails'
7
10
  ```
8
11
 
9
12
  Note: `prawn` and `prawn-table` are dependencies of `prawn-rails` so there is no need to mention it in the projects Gemfile unless you want to use a specific version of either of those libraries.
10
13
 
11
- ## Usage
12
- Create a view with `pdf` as format and `prawn` as handler so filename should look like `example.pdf.prawn`
14
+ # Usage
15
+ Create a view with `pdf` as format and `prawn` as handler so filename should look like `example.pdf.prawn`.
13
16
 
14
17
  It provides a helper called `prawn_document` which builds a PrawnRails::Document with default options. You can override any options as you please. Example:
15
18
 
@@ -19,23 +22,41 @@ prawn_document do |pdf|
19
22
  end
20
23
  ```
21
24
 
22
- No need to call `pdf.render`, it is called by `prawn_document`
25
+ No need to call `pdf.render`, it is called by `prawn_document`.
26
+
27
+ You can customize the name of the generated PDF and the file's delivery format with the `:filename` and `:disposition` keys:
28
+
29
+ ```ruby
30
+ prawn_document(filename: "my-file.pdf", disposition: "attachment") do |pdf|
31
+ pdf.text "Direct download incoming!"
32
+ end
33
+ ```
34
+
35
+ You can also override the content disposition using the [`Content-Disposition` HTTP header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition#As_a_response_header_for_the_main_body). If you've already set this, `prawn-rails` will *not* override it. Here's an example of setting the header directly:
23
36
 
24
- If you want to customize the name of the file should a user try to save it, you can specify the filename in your action:
37
+ ```ruby
38
+ def download
39
+ respond_to do |format|
40
+ format.pdf do
41
+ headers["Content-Disposition"] = "attachment; filename=\"charts-#{Time.now.to_i}.pdf\""
42
+ end
43
+ end
44
+ end
45
+ ```
46
+
47
+ You can also override the file's name from the controller via `@filename`:
25
48
 
26
49
  ```ruby
27
50
  def show
28
- @filename = 'my_report.pdf'
51
+ @filename = "my_report.pdf"
29
52
  end
30
53
  ```
31
54
 
32
- ## Built-in Helpers
33
- * *html_strip(html)*:
34
- Removes the html tags from a string
55
+ If no options are given, the file's name will match to your browser's default and the delivery format will default to `inline`.
35
56
 
36
- ## Default configuration
57
+ # Default configuration
37
58
 
38
- Add a `prawn-rails.rb` config to your Rails app under `config/initializers` like this
59
+ Add a `prawn-rails.rb` config to your Rails app under `config/initializers` like this:
39
60
 
40
61
  ```ruby
41
62
  PrawnRails.config do |config|
@@ -45,11 +66,11 @@ PrawnRails.config do |config|
45
66
  end
46
67
  ```
47
68
 
48
- Please note that these are the defaults.
69
+ Please note that these are the defaults.
49
70
 
50
- For a list of all available options: [http://www.rubydoc.info/gems/prawn/Prawn%2FDocument:initialize](http://www.rubydoc.info/gems/prawn/Prawn%2FDocument:initialize).
71
+ For a list of all available options: [http://www.rubydoc.info/gems/prawn/Prawn%2FDocument:initialize](http://www.rubydoc.info/gems/prawn/Prawn%2FDocument:initialize).
51
72
 
52
- For a list of all metadata the the `:info` option supports, please see [https://github.com/prawnpdf/prawn/blob/master/manual/document_and_page_options/metadata.rb](https://github.com/prawnpdf/prawn/blob/master/manual/document_and_page_options/metadata.rb)
73
+ For a list of all metadata the the `:info` option supports, please see [https://github.com/prawnpdf/prawn/blob/master/manual/document_and_page_options/metadata.rb](https://github.com/prawnpdf/prawn/blob/master/manual/document_and_page_options/metadata.rb).
53
74
 
54
75
  If `skip_page_creation` is set to true then you have to create the first page yourself. Example:
55
76
 
@@ -59,11 +80,11 @@ pdf.start_new_page
59
80
  pdf.start_new_page size: "A4", page_layout: :portrait
60
81
  ```
61
82
 
62
- ## Examples
83
+ # Examples
63
84
 
64
- 1. **Hello World**
85
+ #### Hello World
65
86
 
66
- ```ruby
87
+ ```ruby
67
88
  # hello.pdf.prawn
68
89
 
69
90
  prawn_document do |pdf|
@@ -71,7 +92,7 @@ prawn_document do |pdf|
71
92
  end
72
93
  ```
73
94
 
74
- 2. ** Using Active Record **
95
+ #### Using Active Record
75
96
 
76
97
  ```ruby
77
98
  # myproducts.pdf.prawn
@@ -82,7 +103,7 @@ prawn_document do |pdf|
82
103
  pdf.table @products.collect{|p| [p.name,p.price]}
83
104
  end
84
105
  ```
85
- 3. ** Using Custom options **
106
+ #### Using Custom options
86
107
 
87
108
  ```ruby
88
109
  # landscape.pdf.prawn
@@ -92,12 +113,8 @@ prawn_document(page_layout: :landscape) do |pdf|
92
113
  end
93
114
  ```
94
115
 
95
- ## Credits
96
-
97
- Created by Carlos Ortiz - @cortiz
98
-
99
- <a href='http://ko-fi.com/A552JBK' target='_blank'><img height='32' style='border:0px;height:32px;' src='https://az743702.vo.msecnd.net/cdn/kofi1.png?v=a' border='0' alt='Buy Me a Coffee' /></a>
116
+ # Credits
100
117
 
101
118
  Maintained by Weston Ganger - @westonganger
102
119
 
103
- Special thanks to @rwilliams, @sigmike, @smber1, @iffyuva
120
+ Created by Carlos Ortiz - @cortiz
@@ -1,22 +1,26 @@
1
1
  require 'prawn'
2
2
  require 'prawn/table'
3
- require "prawn-rails/extension"
4
3
 
5
4
  module PrawnRails
6
5
 
7
- # This derives from Prawn::Document in order to override defaults. Note that the Prawn::Document behaviour itself shouldn't be changed.
6
+ # This derives from Prawn::Document in order to override defaults.
7
+ # Note that the Prawn::Document behaviour itself shouldn't be changed.
8
8
  class Document < Prawn::Document
9
- def initialize(opts = {})
9
+ def self.extensions
10
+ Prawn::Document.extensions
11
+ end
12
+
13
+ def initialize(options = {})
10
14
  if PrawnRails.config.respond_to?(:to_h)
11
- default = PrawnRails.config.to_h.merge(opts)
15
+ options.reverse_merge!(PrawnRails.config.to_h)
12
16
  else
13
- default = PrawnRails.config.marshal_dump.merge(opts)
17
+ options.reverse_merge!(PrawnRails.config.marshal_dump)
14
18
  end
15
- super(default)
19
+
20
+ super(options)
16
21
  end
17
22
 
18
- # Typically text expects a string. But rails views have this interesting concept that they implicitly call
19
- # `to_s` on all the variables before rendering. So, passing an integer to text fails:
23
+ # Typically text expects a string. But Rails views have this interesting concept that they implicitly call `to_s` on all the variables before rendering. So, passing an integer to text fails:
20
24
  #
21
25
  # pdf.text 10 #=> fails because 10 is not a string
22
26
  # pdf.text 10.to_s #=> works
@@ -27,5 +31,4 @@ module PrawnRails
27
31
  end
28
32
  end
29
33
 
30
- Document.extensions << Extension
31
34
  end
@@ -2,20 +2,37 @@ require 'prawn-rails/document'
2
2
 
3
3
  module PrawnRails
4
4
  module RailsHelper
5
+
5
6
  def prawn_document(options={})
6
- options.reverse_merge!(page_layout: PrawnRails.config.page_layout,
7
- page_size: PrawnRails.config.page_size,
8
- info: {
9
- Title: @filename.sub(/\.(p|P)(d|D)(f|F)$/, '')
10
- })
7
+ @filename ||= options[:filename]
11
8
 
12
- options.reverse_merge!(skip_page_creation: true) if PrawnRails.config.skip_page_creation
9
+ options.reverse_merge!(get_metadata)
13
10
 
14
11
  pdf = PrawnRails::Document.new(options)
15
12
 
13
+ # Ignore headers when we're not rendering from an ActionController context.
14
+ if defined?(controller) && controller.respond_to?(:response) && !controller.response.nil?
15
+ disposition = options[:disposition] || "inline"
16
+ disposition += "; filename=\"#{@filename}\"" if @filename
17
+
18
+ # Don't override 'Content-Disposition' if we've chosen to set it elsewhere.
19
+ controller.response.headers['Content-Disposition'] ||= disposition
20
+ end
21
+
16
22
  yield pdf if block_given?
17
23
 
18
24
  pdf.render
19
25
  end
26
+
27
+ def get_metadata
28
+ return {} unless @filename
29
+
30
+ {
31
+ info: {
32
+ Title: @filename.sub(/\.pdf$/i, '')
33
+ }
34
+ }
35
+ end
36
+
20
37
  end
21
38
  end
@@ -2,16 +2,10 @@ require "prawn-rails/document"
2
2
 
3
3
  module PrawnRails
4
4
  class Renderer
5
- def self.call(template)
6
- %{
7
- @filename ||= "\#{controller.action_name}.pdf"
8
5
 
9
- unless controller.response.nil?
10
- controller.response.headers['Content-Disposition'] = "inline; filename=\\\"\#{@filename}\\\""
11
- end
12
-
13
- #{template.source.strip}
14
- }
6
+ def self.call(template, source = nil)
7
+ (source || template.source).strip
15
8
  end
9
+
16
10
  end
17
11
  end
@@ -1,3 +1,3 @@
1
1
  module PrawnRails
2
- VERSION = "1.0.1"
2
+ VERSION = "1.4.0"
3
3
  end
File without changes
@@ -0,0 +1,3 @@
1
+ //= link_tree ../images
2
+ //= link_directory ../javascripts .js
3
+ //= link_directory ../stylesheets .css
@@ -0,0 +1,3 @@
1
+ /*
2
+ *= require_self
3
+ */
@@ -0,0 +1,37 @@
1
+ class ReportsController < ApplicationController
2
+
3
+ def sample
4
+ @items = [
5
+ {name: "Hello"},
6
+ {name: "World"},
7
+ ]
8
+ end
9
+
10
+ def table
11
+ @items = [
12
+ [1,2,3],
13
+ [4,5,6],
14
+ [7,8,9],
15
+ ]
16
+ end
17
+
18
+ def custom_filename
19
+ end
20
+
21
+ def custom_disposition
22
+ end
23
+
24
+ def custom
25
+ end
26
+
27
+ def ivar_filename
28
+ @filename = "ivar-filename.pdf"
29
+ render :custom
30
+ end
31
+
32
+ def custom_headers
33
+ headers['Content-Disposition'] = "attachment;filename=\"custom-headers.pdf\""
34
+ render :custom
35
+ end
36
+
37
+ end
@@ -0,0 +1,18 @@
1
+ class ReportsMailer < ActionMailer::Base
2
+ def send_report
3
+ @items = [
4
+ {name: "Hello"},
5
+ {name: "World"},
6
+ ]
7
+
8
+ attachments["report.pdf"] = {
9
+ mime_type: "application/pdf",
10
+ content: render_to_string("reports/sample", formats: [:pdf]),
11
+ }
12
+
13
+ mail({
14
+ to: "user@example.com",
15
+ subject: "Reports",
16
+ })
17
+ end
18
+ end
@@ -1,7 +1,7 @@
1
1
  <!DOCTYPE html>
2
2
  <html>
3
3
  <head>
4
- <title>Dummy</title>
4
+ <title>Dummy App</title>
5
5
  <%= stylesheet_link_tag "application" %>
6
6
  <%= javascript_include_tag "application" %>
7
7
  <%= csrf_meta_tags %>
@@ -0,0 +1,3 @@
1
+ prawn_document(filename: "from-options.pdf", disposition: "attachment") do |pdf|
2
+ pdf.text "Hello World!"
3
+ end
@@ -0,0 +1,3 @@
1
+ prawn_document(disposition: "attachment") do |pdf|
2
+ pdf.text "Hello World!"
3
+ end
@@ -0,0 +1,3 @@
1
+ prawn_document(filename: "from-options.pdf") do |pdf|
2
+ pdf.text "Hello World!"
3
+ end
@@ -0,0 +1 @@
1
+ <h1>Hello World!</h1>
@@ -1,13 +1,15 @@
1
1
  prawn_document(page_layout: :portrait) do |pdf|
2
- pdf.text "Hello There :D"
2
+ pdf.text "Hello World!"
3
3
  pdf.text "now it is here: #{pdf.cursor}"
4
- pdf.text "Items are #{@items.inspect}"
4
+ pdf.text "Number of Items: #{@items.count}"
5
+
5
6
  pdf.font("Courier") do
6
7
  pdf.text "Written in Courier because we are inside the block."
7
8
  end
8
9
 
9
10
  pdf.text "with html<bold></bold>"
10
- pdf.text pdf.html_strip("without html <bold>LD</bold>")
11
+ pdf.text strip_tags("without html <bold>LD</bold>")
12
+
11
13
  pdf.text "Let's see which is the current font_size: #{pdf.font_size.inspect}"
12
14
  pdf.move_down 10
13
15
  pdf.font_size 16
@@ -17,20 +19,22 @@ prawn_document(page_layout: :portrait) do |pdf|
17
19
  pdf.move_down 10
18
20
  pdf.text "Back to 16 again."
19
21
  pdf.move_down 10
20
- pdf.text "Single line on 20 using the :size option.", :size => 20
22
+ pdf.text "Single line on 20 using the :size option.", size: 20
21
23
  pdf.move_down 10
22
24
  pdf.text "Back to 16 once more."
23
25
  pdf.move_down 10
24
- pdf.font("Courier", :size => 10) do
26
+
27
+ pdf.font("Courier", size: 10) do
25
28
  pdf.text "Yeah, using Courier 10 courtesy of the font method."
26
29
  end
27
- pdf.font("Helvetica", :size => 12) # back to normal
30
+
31
+ pdf.font("Helvetica", size: 12) # back to normal
28
32
 
29
33
  pdf.text "Default color is black"
30
34
  pdf.move_down 25
31
- pdf.text "Changed to red", :color => "FF0000"
35
+ pdf.text "Changed to red", color: "FF0000"
32
36
  pdf.move_down 25
33
- pdf.text "CMYK color", :color => [22, 55, 79, 30]
37
+ pdf.text "CMYK color", color: [22, 55, 79, 30]
34
38
  pdf.move_down 25
35
- pdf.text "Also works with <color rgb='ff0000'>inline</color> formatting", :color => "0000FF", :inline_format => true
39
+ pdf.text "Also works with <color rgb='ff0000'>inline</color> formatting", color: "0000FF", inline_format: true
36
40
  end