Example #1
0
 /**
  * Writes the MSODRAWINGGROUP record if needed. Possibly split using CONTINUE records.
  */
 private function writeMsoDrawingGroup()
 {
     // write the Escher stream if necessary
     if (isset($this->escher)) {
         $writer = new \PHPExcel\Writer\Excel5\Escher($this->escher);
         $data = $writer->close();
         $record = 0xeb;
         $length = strlen($data);
         $header = pack("vv", $record, $length);
         return $this->writeData($header . $data);
     } else {
         return '';
     }
 }
Example #2
0
 /**
  * Write MSODRAWING record
  */
 private function writeMsoDrawing()
 {
     // write the Escher stream if necessary
     if (isset($this->escher)) {
         $writer = new \PHPExcel\Writer\Excel5\Escher($this->escher);
         $data = $writer->close();
         $spOffsets = $writer->getSpOffsets();
         $spTypes = $writer->getSpTypes();
         // write the neccesary MSODRAWING, OBJ records
         // split the Escher stream
         $spOffsets[0] = 0;
         $nm = count($spOffsets) - 1;
         // number of shapes excluding first shape
         for ($i = 1; $i <= $nm; ++$i) {
             // MSODRAWING record
             $record = 0xec;
             // Record identifier
             // chunk of Escher stream for one shape
             $dataChunk = substr($data, $spOffsets[$i - 1], $spOffsets[$i] - $spOffsets[$i - 1]);
             $length = strlen($dataChunk);
             $header = pack("vv", $record, $length);
             $this->append($header . $dataChunk);
             // OBJ record
             $record = 0x5d;
             // record identifier
             $objData = '';
             // ftCmo
             if ($spTypes[$i] == 0xc9) {
                 // Add ftCmo (common object data) subobject
                 $objData .= pack('vvvvvVVV', 0x15, 0x12, 0x14, $i, 0x2101, 0, 0, 0);
                 // Add ftSbs Scroll bar subobject
                 $objData .= pack('vv', 0xc, 0x14);
                 $objData .= pack('H*', '0000000000000000640001000A00000010000100');
                 // Add ftLbsData (List box data) subobject
                 $objData .= pack('vv', 0x13, 0x1fee);
                 $objData .= pack('H*', '00000000010001030000020008005700');
             } else {
                 // Add ftCmo (common object data) subobject
                 $objData .= pack('vvvvvVVV', 0x15, 0x12, 0x8, $i, 0x6011, 0, 0, 0);
             }
             // ftEnd
             $objData .= pack('vv', 0x0, 0x0);
             $length = strlen($objData);
             $header = pack('vv', $record, $length);
             $this->append($header . $objData);
         }
     }
 }