You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

98 lines
3.1 KiB

11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
  1. <?php
  2. /**
  3. * Zend Framework
  4. *
  5. * LICENSE
  6. *
  7. * This source file is subject to the new BSD license that is bundled
  8. * with this package in the file LICENSE.txt.
  9. * It is also available through the world-wide-web at this URL:
  10. * http://framework.zend.com/license/new-bsd
  11. * If you did not receive a copy of the license and are unable to
  12. * obtain it through the world-wide-web, please send an email
  13. * to license@zend.com so we can send you a copy immediately.
  14. *
  15. * @category Zend
  16. * @package Zend_Pdf
  17. * @subpackage Destination
  18. * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
  19. * @license http://framework.zend.com/license/new-bsd New BSD License
  20. * @version $Id$
  21. */
  22. /** Internally used classes */
  23. // require_once 'Zend/Pdf/Element/Array.php';
  24. // require_once 'Zend/Pdf/Element/Name.php';
  25. // require_once 'Zend/Pdf/Element/Numeric.php';
  26. /** Zend_Pdf_Destination_Explicit */
  27. // require_once 'Zend/Pdf/Destination/Explicit.php';
  28. /**
  29. * Zend_Pdf_Destination_FitBoundingBoxHorizontally explicit detination
  30. *
  31. * Destination array: [page /FitBH top]
  32. *
  33. * (PDF 1.1) Display the page designated by page, with the vertical coordinate
  34. * top positioned at the top edge of the window and the contents of the page
  35. * magnified just enough to fit the entire width of its bounding box within the
  36. * window.
  37. *
  38. * @package Zend_Pdf
  39. * @subpackage Destination
  40. * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
  41. * @license http://framework.zend.com/license/new-bsd New BSD License
  42. */
  43. class Zend_Pdf_Destination_FitBoundingBoxHorizontally extends Zend_Pdf_Destination_Explicit
  44. {
  45. /**
  46. * Create destination object
  47. *
  48. * @param Zend_Pdf_Page|integer $page Page object or page number
  49. * @param float $top Top edge of displayed page
  50. * @return Zend_Pdf_Destination_FitBoundingBoxHorizontally
  51. * @throws Zend_Pdf_Exception
  52. */
  53. public static function create($page, $top)
  54. {
  55. $destinationArray = new Zend_Pdf_Element_Array();
  56. if ($page instanceof Zend_Pdf_Page) {
  57. $destinationArray->items[] = $page->getPageDictionary();
  58. } else if (is_integer($page)) {
  59. $destinationArray->items[] = new Zend_Pdf_Element_Numeric($page);
  60. } else {
  61. // require_once 'Zend/Pdf/Exception.php';
  62. throw new Zend_Pdf_Exception('Page entry must be a Zend_Pdf_Page object or a page number.');
  63. }
  64. $destinationArray->items[] = new Zend_Pdf_Element_Name('FitBH');
  65. $destinationArray->items[] = new Zend_Pdf_Element_Numeric($top);
  66. return new Zend_Pdf_Destination_FitBoundingBoxHorizontally($destinationArray);
  67. }
  68. /**
  69. * Get top edge of the displayed page
  70. *
  71. * @return float
  72. */
  73. public function getTopEdge()
  74. {
  75. return $this->_destinationArray->items[2]->value;
  76. }
  77. /**
  78. * Set top edge of the displayed page
  79. *
  80. * @param float $top
  81. * @return Zend_Pdf_Action_FitBoundingBoxHorizontally
  82. */
  83. public function setTopEdge($top)
  84. {
  85. $this->_destinationArray->items[2] = new Zend_Pdf_Element_Numeric($top);
  86. return $this;
  87. }
  88. }