print_pdf_dompdf.module 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. <?php
  2. /**
  3. * @file
  4. * Generate a PDF for the print_pdf module using the dompdf library.
  5. *
  6. * @ingroup print
  7. */
  8. define('PRINT_PDF_DOMPDF_UNICODE_DEFAULT', 0);
  9. define('PRINT_PDF_DOMPDF_FONT_SUBSETTING_DEFAULT', FALSE);
  10. /**
  11. * Implements hook_pdf_tool_info().
  12. */
  13. function print_pdf_dompdf_pdf_tool_info() {
  14. return array(
  15. 'name' => 'dompdf',
  16. 'url' => 'https://github.com/dompdf/dompdf/releases/latest',
  17. 'expand_css' => FALSE,
  18. 'public_dirs' => array(
  19. 'fonts',
  20. ),
  21. );
  22. }
  23. /**
  24. * Implements hook_theme().
  25. */
  26. function print_pdf_dompdf_theme() {
  27. return array(
  28. 'print_pdf_dompdf_footer' => array(
  29. 'variables' => array('html' => ''),
  30. 'file' => 'print_pdf_dompdf.pages.inc',
  31. ),
  32. );
  33. }
  34. /**
  35. * Implements hook_menu().
  36. */
  37. function print_pdf_dompdf_menu() {
  38. $items = array();
  39. $items['admin/config/user-interface/print/pdf/dompdf'] = array(
  40. 'title' => 'dompdf',
  41. 'description' => 'Configure the dompdf options.',
  42. 'page callback' => 'drupal_get_form',
  43. 'page arguments' => array('print_pdf_dompdf_settings'),
  44. 'access arguments' => array('administer print'),
  45. 'type' => MENU_LOCAL_TASK,
  46. 'file' => 'print_pdf_dompdf.admin.inc',
  47. );
  48. return $items;
  49. }
  50. /**
  51. * Implements hook_pdf_tool_version().
  52. */
  53. function print_pdf_dompdf_pdf_tool_version($pdf_tool) {
  54. if (file_exists(DRUPAL_ROOT . '/' . $pdf_tool)) {
  55. include_once DRUPAL_ROOT . '/' . $pdf_tool;
  56. }
  57. if (basename($pdf_tool) == 'Dompdf.php') {
  58. $dompdf_base = dirname(dirname($pdf_tool));
  59. $version_file = $dompdf_base . '/VERSION';
  60. if (file_exists($version_file)) {
  61. // From 0.7.0 beta 3 onwards, there's a VERSION file.
  62. return file_get_contents($version_file);
  63. }
  64. elseif (basename(dirname($pdf_tool)) === 'src') {
  65. // The dompdf tool started using PSR-4 in 0.7.0 beta 2.
  66. return '0.7.0 beta 2';
  67. }
  68. elseif (basename(dirname($pdf_tool)) === 'Dompdf') {
  69. // In 0.7.0 beta 1, it was src/Dompdf/Dompdf.php.
  70. return '0.7.0 beta 1';
  71. }
  72. }
  73. else {
  74. // Poor man's way to find dompdf version pre 0.7.
  75. if (defined('DOMPDF_ENABLE_AUTOLOAD')) {
  76. // It is not possible to tell apart 0.6.0, 0.6.1 or 0.6.2.
  77. return '0.6.0, or higher';
  78. }
  79. elseif (defined('DOMPDF_ADMIN_USERNAME')) {
  80. return '0.6.0 beta3';
  81. }
  82. elseif (defined('DOMPDF_LOG_OUTPUT_FILE')) {
  83. return '0.6.0 beta2';
  84. }
  85. elseif (defined('DOMPDF_FONT_CACHE')) {
  86. return '0.6.0 beta1';
  87. }
  88. elseif (defined('DOMPDF_CHROOT')) {
  89. return '0.5.2';
  90. }
  91. elseif (defined('DOMPDF_DIR')) {
  92. return '0.5.1';
  93. }
  94. }
  95. return 'unknown';
  96. }
  97. /**
  98. * Implements hook_print_pdf_available_libs_alter().
  99. */
  100. function print_pdf_dompdf_print_pdf_available_libs_alter(&$pdf_tools) {
  101. module_load_include('inc', 'print', 'includes/print');
  102. $tools = _print_scan_libs('dompdf', '!^(dompdf_config.inc.php|Dompdf.php)$!');
  103. foreach ($tools as $tool) {
  104. if (basename($tool) == 'Dompdf.php') {
  105. $pdf_tools['print_pdf_dompdf|' . $tool] = 'dompdf (' . dirname(dirname($tool)) . ')';
  106. }
  107. else {
  108. $pdf_tools['print_pdf_dompdf|' . $tool] = 'dompdf (' . dirname($tool) . ')';
  109. }
  110. }
  111. }