Blame view

sources/3rdparty/phpdocx/classes/WordML.inc 2.91 KB
31b7f2792   Kload   Upgrade to ownclo...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
  <?php
  
  /**
   * WordML
   *
   * @category   Phpdocx
   * @package    elements
   * @copyright  Copyright (c) Narcea Producciones Multimedia S.L.
   *             (http://www.2mdc.com)
   * @license    LGPL
   * @version    3.0
   * @link       http://www.phpdocx.com
   * @since      File available since Release 3.0
   */
  include_once dirname(__FILE__) . '/CreateElement.inc';
  
  class WordML extends CreateElement
  {
      
      /**
       *
       * @access private
       * @var string
       */
      private $_wordML;
      /**
       *
       * @access private
       * @var string
       */
      private static $_instance = NULL;
      
       /**
       *
       * @access public
       * @static
       * @var Logger
       */
      public static $log;
      
      
      /**
       * Construct
       *
       * @access public
       */
      public function __construct()
      {
          $this->_debug = Debug::getInstance();
          Logger::configure(dirname(__FILE__) . '/conf/log4php.properties');
          self::$log = Logger::getLogger('phpdocx_logger');
      }
  
      /**
       * Destruct
       *
       * @access public
       */
      public function __destruct()
      {
  
      }
  
      /**
       * Magic method, returns current XML
       *
       * @access public
       * @return string Return current XML
       */
      public function __toString()
      {
          return $this->_wordML;
      }
  
  
      /**
       * Create raw WordML
       *
       * @access public
       * @param string $data
       */
      public function createRawWordML($data)
      {
          $this->_wordML = (string) $data;
      }
      
      /**
       * returns only the runs of content for embedding
       *
       * @access public
       * @param string $data
       */
      public function inlineWordML()
      {
          $wordMLChunk = new DOMDocument();
          $namespaces = 'xmlns:ve="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" ';
          $wordML = '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><w:root '.$namespaces.'>'.$this->_wordML;
          $wordML = $wordML.'</w:root>';
          $wordMLChunk->loadXML($wordML);
          $wordMLXpath = new DOMXPath($wordMLChunk);
          $wordMLXpath->registerNamespace('w', 'http://schemas.openxmlformats.org/wordprocessingml/2006/main');
          $query= '//w:r';
          $wrNodes = $wordMLXpath->query($query); 
          $blockCleaned = '';
          foreach ($wrNodes as $node){
             $nodeR = $node->ownerDocument->saveXML($node);       
             $blockCleaned .= $nodeR;
          }
          
          return $blockCleaned;
      }
  
      
  }