1420 lines
62 KiB
PHP
Raw Normal View History

<?php
/**
* PHPWord
*
* @link https://github.com/PHPOffice/PHPWord
* @copyright 2014 PHPWord
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
*/
namespace PhpOffice\PhpWord\Reader;
use PhpOffice\PhpWord\PhpWord;
use PhpOffice\PhpWord\Shared\OLERead;
use PhpOffice\PhpWord\Settings;
use PhpOffice\PhpWord\DocumentProperties;
use PhpOffice\PhpWord\Shared\XMLReader;
use PhpOffice\PhpWord\Element\Section;
/**
* Reader for Word97
*
* @since 0.10.0
*/
class MsDoc extends AbstractReader implements ReaderInterface
{
/**
* PhpWord object
*
* @var PhpWord
*/
private $phpWord;
/**
* WordDocument Stream
*
* @var
*/
private $dataWorkDocument;
/**
* 1Table Stream
*
* @var
*/
private $data1Table;
/**
* Data Stream
*
* @var
*/
private $dataData;
/**
* Object Pool Stream
*
* @var
*/
private $dataObjectPool;
/**
* @var integer
*/
private $pos;
/**
* Loads PhpWord from file
*
* @param string $filename
* @return PhpWord
*/
public function load($filename)
{
$this->phpWord = new PhpWord();
$this->loadOLE($filename);
$this->readFib($this->dataWorkDocument);
$this->readFibContent();
/*$this->read1Table($this->data1Table);
$this->readData($this->dataData);
$this->readObjectPool($this->dataObjectPool);*/
return $this->phpWord;
}
/**
* Load an OLE Document
* @param string $filename
*/
private function loadOLE($filename)
{
// OLE reader
$ole = new OLERead();
$ole->read($filename);
// Get WorkDocument stream
$this->dataWorkDocument = $ole->getStream($ole->wrkdocument);
// Get 1Table stream
$this->data1Table = $ole->getStream($ole->wrk1Table);
// Get Data stream
$this->dataData = $ole->getStream($ole->wrkData);
// Get Data stream
$this->dataObjectPool = $ole->getStream($ole->wrkObjectPool);
// Get Summary Information data
$this->_summaryInformation = $ole->getStream($ole->summaryInformation);
// Get Document Summary Information data
$this->_documentSummaryInformation = $ole->getStream($ole->documentSummaryInformation);
}
/**
*
* @link http://msdn.microsoft.com/en-us/library/dd949344%28v=office.12%29.aspx
* @link https://igor.io/2012/09/24/binary-parsing.html
*/
private function readFib($data)
{
$length = 0;
print_r('============ readFib'.PHP_EOL);
print_r('============ length : '.strlen($data).PHP_EOL);
print_r('======================== FibBase'.PHP_EOL);
//----- FibBase
// wIdent
$wIdent = self::_GetInt2d($data, $length);
$length += 2;
print_r('$wIdent : '.$wIdent.'#'.dechex($wIdent).PHP_EOL);
// nFib
$nFib = self::_GetInt2d($data, $length);
print_r('$nFib : '.$nFib.'#'.dechex($nFib).PHP_EOL);
$length += 2;
// unused
$length += 2;
// lid : Language Identifier
$lid = self::_GetInt2d($data, $length);
$length += 2;
// pnNext
$pnNext = self::_GetInt2d($data, $length);
$length += 2;
$mem = self::_GetInt2d($data, $length);
$fDot = ($mem >> 15) & 1;
$fGlsy = ($mem >> 14) & 1;
$fComplex = ($mem >> 13) & 1;
$fHasPic = ($mem >> 12) & 1;
$cQuickSaves = ($mem >> 8) & bindec('1111');
$fEncrypted = ($mem >> 7) & 1;
$fWhichTblStm = ($mem >> 6) & 1;
print_r('$fWhichTblStm : '.$fWhichTblStm.'#'.dechex($fWhichTblStm).PHP_EOL);
$fReadOnlyRecommended = ($mem >> 5) & 1;
$fWriteReservation = ($mem >> 4) & 1;
$fExtChar = ($mem >> 3) & 1;
$fLoadOverride = ($mem >> 2) & 1;
$fFarEast = ($mem >> 1) & 1;
$fObfuscated = ($mem >> 0) & 1;
$length += 2;
// nFibBack
$nFibBack = self::_GetInt2d($data, $length);
$length += 2;
// lKey
$lKey = self::_GetInt4d($data, $length);
$length += 4;
// envr
$envr = self::_GetInt1d($data, $length);
$length += 1;
$mem = self::_GetInt1d($data, $length);
$fMac = ($mem >> 7) & 1;
$fEmptySpecial = ($mem >> 6) & 1;
$fLoadOverridePage = ($mem >> 5) & 1;
$reserved1 = ($mem >> 4) & 1;
$reserved2 = ($mem >> 3) & 1;
$fSpare0 = ($mem >> 0) & bindec('111');
$length += 1;
$reserved3 = self::_GetInt2d($data, $length);
$length += 2;
$reserved4 = self::_GetInt2d($data, $length);
$length += 2;
$reserved5 = self::_GetInt4d($data, $length);
$length += 4;
$reserved6 = self::_GetInt4d($data, $length);
$length += 4;
//----- csw
print_r('======================== csw'.PHP_EOL);
$csw = self::_GetInt2d($data, $length);
$length += 2;
print_r('$csw : '.$csw.'#'.dechex($csw).PHP_EOL);
//----- fibRgW
print_r('======================== fibRgW'.PHP_EOL);
$fibRgW_reserved1 = self::_GetInt2d($data, $length);
$length += 2;
$fibRgW_reserved2 = self::_GetInt2d($data, $length);
$length += 2;
$fibRgW_reserved3 = self::_GetInt2d($data, $length);
$length += 2;
$fibRgW_reserved4 = self::_GetInt2d($data, $length);
$length += 2;
$fibRgW_reserved5 = self::_GetInt2d($data, $length);
$length += 2;
$fibRgW_reserved6 = self::_GetInt2d($data, $length);
$length += 2;
$fibRgW_reserved7 = self::_GetInt2d($data, $length);
$length += 2;
$fibRgW_reserved8 = self::_GetInt2d($data, $length);
$length += 2;
$fibRgW_reserved9 = self::_GetInt2d($data, $length);
$length += 2;
$fibRgW_reserved10 = self::_GetInt2d($data, $length);
$length += 2;
$fibRgW_reserved11 = self::_GetInt2d($data, $length);
$length += 2;
$fibRgW_reserved12 = self::_GetInt2d($data, $length);
$length += 2;
$fibRgW_reserved13 = self::_GetInt2d($data, $length);
$length += 2;
$fibRgW_lidFE = self::_GetInt2d($data, $length);
$length += 2;
//----- cslw
print_r('======================== cslw'.PHP_EOL);
$cslw = self::_GetInt2d($data, $length);
$length += 2;
print_r('$cslw : '.$cslw.'#'.dechex($cslw).PHP_EOL);
//----- fibRgLw
print_r('======================== fibRgLw'.PHP_EOL);
$fibRgLw_cbMac = self::_GetInt4d($data, $length);
$length += 4;
$fibRgLw_reserved1 = self::_GetInt4d($data, $length);
$length += 4;
$fibRgLw_reserved2 = self::_GetInt4d($data, $length);
$length += 4;
$fibRgLw_ccpText = self::_GetInt4d($data, $length);
$length += 4;
$fibRgLw_ccpFtn = self::_GetInt4d($data, $length);
$length += 4;
$fibRgLw_ccpHdd = self::_GetInt4d($data, $length);
$length += 4;
$fibRgLw_reserved3 = self::_GetInt4d($data, $length);
$length += 4;
$fibRgLw_ccpAtn = self::_GetInt4d($data, $length);
$length += 4;
$fibRgLw_ccpEdn = self::_GetInt4d($data, $length);
$length += 4;
$fibRgLw_ccpTxbx = self::_GetInt4d($data, $length);
$length += 4;
$fibRgLw_ccpHdrTxbx = self::_GetInt4d($data, $length);
$length += 4;
$fibRgLw_reserved4 = self::_GetInt4d($data, $length);
$length += 4;
$fibRgLw_reserved5 = self::_GetInt4d($data, $length);
$length += 4;
$fibRgLw_reserved6 = self::_GetInt4d($data, $length);
$length += 4;
$fibRgLw_reserved7 = self::_GetInt4d($data, $length);
$length += 4;
$fibRgLw_reserved8 = self::_GetInt4d($data, $length);
$length += 4;
$fibRgLw_reserved9 = self::_GetInt4d($data, $length);
$length += 4;
$fibRgLw_reserved10 = self::_GetInt4d($data, $length);
$length += 4;
$fibRgLw_reserved11 = self::_GetInt4d($data, $length);
$length += 4;
$fibRgLw_reserved12 = self::_GetInt4d($data, $length);
$length += 4;
$fibRgLw_reserved13 = self::_GetInt4d($data, $length);
$length += 4;
$fibRgLw_reserved14 = self::_GetInt4d($data, $length);
$length += 4;
//----- cbRgFcLcb
print_r('======================== cbRgFcLcb'.PHP_EOL);
$cbRgFcLcb = self::_GetInt2d($data, $length);
print_r('$cbRgFcLcb : '.$cbRgFcLcb.'#'.dechex($cbRgFcLcb).PHP_EOL);
$length += 2;
//----- fibRgFcLcbBlob
print_r('======================== fibRgFcLcbBlob'.PHP_EOL);
switch ($cbRgFcLcb) {
case 0x005D:
$length = $this->readBlockFibRgFcLcb($data, $length, self::VERSION_97);
break;
case 0x006C:
$length = $this->readBlockFibRgFcLcb($data, $length, self::VERSION_97);
$length = $this->readBlockFibRgFcLcb($data, $length, self::VERSION_2000);
break;
case 0x0088:
$length = $this->readBlockFibRgFcLcb($data, $length, self::VERSION_97);
$length = $this->readBlockFibRgFcLcb($data, $length, self::VERSION_2000);
$length = $this->readBlockFibRgFcLcb($data, $length, self::VERSION_2002);
break;
case 0x00A4 :
$length = $this->readBlockFibRgFcLcb($data, $length, self::VERSION_97);
$length = $this->readBlockFibRgFcLcb($data, $length, self::VERSION_2000);
$length = $this->readBlockFibRgFcLcb($data, $length, self::VERSION_2002);
$length = $this->readBlockFibRgFcLcb($data, $length, self::VERSION_2003);
break;
case 0x00B7:
$length = $this->readBlockFibRgFcLcb($data, $length, self::VERSION_97);
$length = $this->readBlockFibRgFcLcb($data, $length, self::VERSION_2000);
$length = $this->readBlockFibRgFcLcb($data, $length, self::VERSION_2002);
$length = $this->readBlockFibRgFcLcb($data, $length, self::VERSION_2003);
$length = $this->readBlockFibRgFcLcb($data, $length, self::VERSION_2007);
break;
}
//print_r($this->arrayFib);
//----- cswNew
print_r('======================== cswNew'.PHP_EOL);
$cswNew = self::_GetInt2d($data, $length);
$length += 2;
print_r('$cswNew : '.$cswNew.'#'.dechex($cswNew).PHP_EOL);
if($cswNew != 0){
// fibRgCswNew
print_r('======================== fibRgCswNew'.PHP_EOL);
}
print_r('======================== length : '.$length.'#'.dechex($length).PHP_EOL);
return $length;
}
const VERSION_97 = '97';
const VERSION_2000 = '2000';
const VERSION_2002 = '2002';
const VERSION_2003 = '2003';
const VERSION_2007 = '2007';
/**
* @var array
*/
private $arrayFib = array();
private function readBlockFibRgFcLcb($data, $length, $version)
{
if($version == self::VERSION_97){
$this->arrayFib['fcStshfOrig'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbStshfOrig'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcStshf'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbStshf'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcffndRef'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcffndRef'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcffndTxt'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcffndTxt'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfandRef'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfandRef'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfandTxt'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfandTxt '] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfSed'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfSed'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcPad'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcPad'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfPhe'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfPhe'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcSttbfGlsy'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbSttbfGlsy'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfGlsy'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfGlsy'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfHdd'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfHdd'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfBteChpx'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfBteChpx'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfBtePapx'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfBtePapx'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfSea'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfSea'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcSttbfFfn'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbSttbfFfn'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfFldMom'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfFldMom'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfFldHdr'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfFldHdr'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfFldFtn'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfFldFtn'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfFldAtn'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfFldAtn'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfFldMcr'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfFldMcr'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcSttbfBkmk'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbSttbfBkmk'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfBkf'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfBkf'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfBkl'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfBkl'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcCmds'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbCmds'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcUnused1'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbUnused1'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcSttbfMcr'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbSttbfMcr'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPrDrvr'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPrDrvr'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPrEnvPort'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPrEnvPort'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPrEnvLand'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPrEnvLand'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcWss'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbWss'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcDop'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbDop'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcSttbfAssoc'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbSttbfAssoc'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcClx'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbClx'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfPgdFtn'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfPgdFtn'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcAutosaveSource'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbAutosaveSource'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcGrpXstAtnOwners'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbGrpXstAtnOwners'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcSttbfAtnBkmk'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbSttbfAtnBkmk'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcUnused2'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbUnused2'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcUnused3'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbUnused3'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcSpaMom'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcSpaMom'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcSpaHdr'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcSpaHdr'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfAtnBkf'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfAtnBkf'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfAtnBkl'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfAtnBkl'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPms'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPms'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcFormFldSttbs'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbFormFldSttbs'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfendRef'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfendRef'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfendTxt'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfendTxt'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfFldEdn'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfFldEdn'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcUnused4'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbUnused4'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcDggInfo'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbDggInfo'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcSttbfRMark'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbSttbfRMark'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcSttbfCaption'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbSttbfCaption'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcSttbfAutoCaption'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbSttbfAutoCaption'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfWkb'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfWkb'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfSpl'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfSpl'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcftxbxTxt'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcftxbxTxt'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfFldTxbx'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfFldTxbx'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfHdrtxbxTxt'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfHdrtxbxTxt'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcffldHdrTxbx'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcffldHdrTxbx'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcStwUser'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbStwUser'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcSttbTtmbd'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbSttbTtmbd'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcCookieData'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbCookieData'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPgdMotherOldOld'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPgdMotherOldOld'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcBkdMotherOldOld'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbBkdMotherOldOld'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPgdFtnOldOld'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPgdFtnOldOld'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcBkdFtnOldOld'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbBkdFtnOldOld'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPgdEdnOldOld'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPgdEdnOldOld'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcBkdEdnOldOld'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbBkdEdnOldOld'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcSttbfIntlFld'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbSttbfIntlFld'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcRouteSlip'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbRouteSlip'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcSttbSavedBy'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbSttbSavedBy'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcSttbFnm'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbSttbFnm'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlfLst'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlfLst'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlfLfo'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlfLfo'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfTxbxBkd'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfTxbxBkd'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfTxbxHdrBkd'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfTxbxHdrBkd'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcDocUndoWord9'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbDocUndoWord9'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcRgbUse'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbRgbUse'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcUsp'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbUsp'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcUskf'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbUskf'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcupcRgbUse'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcupcRgbUse'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcupcUsp'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcupcUsp'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcSttbGlsyStyle'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbSttbGlsyStyle'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlgosl'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlgosl'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcocx'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcocx'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfBteLvc'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfBteLvc'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['dwLowDateTime'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['dwHighDateTime'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfLvcPre10'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfLvcPre10'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfAsumy'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfAsumy'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfGram'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfGram'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcSttbListNames'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbSttbListNames'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcSttbfUssr'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbSttbfUssr'] = self::_GetInt4d($data, $length);
$length += 4;
}
if($version == self::VERSION_2000){
$this->arrayFib['fcPlcfTch'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfTch'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcRmdThreading'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbRmdThreading'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcMid'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbMid'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcSttbRgtplc'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbSttbRgtplc'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcMsoEnvelope'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbMsoEnvelope'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfLad'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfLad'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcRgDofr'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbRgDofr'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcosl'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcosl'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfCookieOld'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfCookieOld'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPgdMotherOld'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPgdMotherOld'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcBkdMotherOld'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbBkdMotherOld'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPgdFtnOld'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPgdFtnOld'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcBkdFtnOld'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbBkdFtnOld'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPgdEdnOld'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPgdEdnOld'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcBkdEdnOld'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbBkdEdnOld'] = self::_GetInt4d($data, $length);
$length += 4;
}
if($version == self::VERSION_2002){
$this->arrayFib['fcUnused1'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbUnused1'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfPgp'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfPgp'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfuim'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfuim'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlfguidUim'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlfguidUim'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcAtrdExtra'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbAtrdExtra'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlrsid'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlrsid'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcSttbfBkmkFactoid'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbSttbfBkmkFactoid'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfBkfFactoid'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfBkfFactoid'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfcookie'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfcookie'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfBklFactoid'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfBklFactoid'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcFactoidData'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbFactoidData'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcDocUndo'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbDocUndo'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcSttbfBkmkFcc'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbSttbfBkmkFcc'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfBkfFcc'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfBkfFcc'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfBklFcc'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfBklFcc'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcSttbfbkmkBPRepairs'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbSttbfbkmkBPRepairs'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfbkfBPRepairs'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfbkfBPRepairs'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfbklBPRepairs'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfbklBPRepairs'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPmsNew'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPmsNew'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcODSO'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbODSO'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfpmiOldXP'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfpmiOldXP'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfpmiNewXP'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfpmiNewXP'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfpmiMixedXP'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfpmiMixedXP'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcUnused2'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbUnused2'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcffactoid'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcffactoid'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcflvcOldXP'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcflvcOldXP'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcflvcNewXP'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcflvcNewXP'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcflvcMixedXP'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcflvcMixedXP'] = self::_GetInt4d($data, $length);
$length += 4;
}
if($version == self::VERSION_2003){
$this->arrayFib['fcHplxsdr'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbHplxsdr'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcSttbfBkmkSdt'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbSttbfBkmkSdt'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfBkfSdt'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfBkfSdt'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfBklSdt'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfBklSdt'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcCustomXForm'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbCustomXForm'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcSttbfBkmkProt'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbSttbfBkmkProt'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfBkfProt'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfBkfProt'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfBklProt'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfBklProt'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcSttbProtUser'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbSttbProtUser'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcUnused'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbUnused'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfpmiOld'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfpmiOld'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfpmiOldInline'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfpmiOldInline'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfpmiNew'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfpmiNew'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfpmiNewInline'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfpmiNewInline'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcflvcOld'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcflvcOld'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcflvcOldInline'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcflvcOldInline'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcflvcNew'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcflvcNew'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcflvcNewInline'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcflvcNewInline'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPgdMother'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPgdMother'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcBkdMother'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbBkdMother'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcAfdMother'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbAfdMother'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPgdFtn'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPgdFtn'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcBkdFtn'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbBkdFtn'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcAfdFtn'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbAfdFtn'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPgdEdn'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPgdEdn'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcBkdEdn'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbBkdEdn'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcAfdEdn'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbAfdEdn'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcAfd'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbAfd'] = self::_GetInt4d($data, $length);
$length += 4;
}
if($version == self::VERSION_2007){
$this->arrayFib['fcPlcfmthd'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfmthd'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcSttbfBkmkMoveFrom'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbSttbfBkmkMoveFrom'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfBkfMoveFrom'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfBkfMoveFrom'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfBklMoveFrom'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfBklMoveFrom'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcSttbfBkmkMoveTo'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbSttbfBkmkMoveTo'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfBkfMoveTo'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfBkfMoveTo'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfBklMoveTo'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfBklMoveTo'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcUnused1'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbUnused1'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcUnused2'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbUnused2'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcUnused3'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbUnused3'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcSttbfBkmkArto'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbSttbfBkmkArto'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfBkfArto'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfBkfArto'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcPlcfBklArto'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbPlcfBklArto'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcArtoData'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbArtoData'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcUnused4'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbUnused4'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcUnused5'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbUnused5'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcUnused6'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbUnused6'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcOssTheme'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbOssTheme'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['fcColorSchemeMapping'] = self::_GetInt4d($data, $length);
$length += 4;
$this->arrayFib['lcbColorSchemeMapping'] = self::_GetInt4d($data, $length);
$length += 4;
}
return $length;
}
private function readFibContent()
{
#$this->readRecordSTSH();
$this->readRecordPlcfSed();
}
private function readRecordSTSH()
{
print_r('============ readRecordSTSH'.PHP_EOL);
// Table Stream
// fcStshf (4 bytes): An unsigned integer that specifies an offset in the Table Stream. An STSH that specifies the style sheet for this document begins at this offset.
// lcbStshf (4 bytes): An unsigned integer that specifies the size, in bytes, of the STSH that begins at offset fcStshf in the Table Stream. This MUST be a nonzero value.
/*[fcStshf] => 0
[lcbStshf] => 1060*/
$posMem = $this->arrayFib['fcStshf'];
// RECORD "STSH"
// lpstshi (variable): An LPStshi that specifies information about the stylesheet.
// - LPStshi
// - LPStshi : cbStshi
$cbStshi = self::_GetInt2d($this->data1Table, $posMem);
$posMem += 2;
print_r('$cbStshi :'.$cbStshi.PHP_EOL);
// - LPStshi : stshi
// - LPStshi : stshi : stshif (18o)
// - LPStshi : stshi : stshif : cstd
$cstd = self::_GetInt2d($this->data1Table, $posMem);
$posMem += 2;
// - LPStshi : stshi : stshif : cbSTDBaseInFile
$cbSTDBaseInFile = self::_GetInt2d($this->data1Table, $posMem);
$posMem += 2;
// - LPStshi : stshi : stshif : fStdStylenamesWritten (1 bit)
// - LPStshi : stshi : stshif : fReserved (15 bits)
$fStdStylenamesWritten = self::_GetInt1d($this->data1Table, $posMem);
$posMem += 2;
// - LPStshi : stshi : stshif : stiMaxWhenSaved
$stiMaxWhenSaved = self::_GetInt2d($this->data1Table, $posMem);
$posMem += 2;
print_r('$stiMaxWhenSaved :'.$stiMaxWhenSaved.PHP_EOL);
// - LPStshi : stshi : stshif : istdMaxFixedWhenSaved
$istdMaxFixedWhenSaved = self::_GetInt2d($this->data1Table, $posMem);
$posMem += 2;
// - LPStshi : stshi : stshif : nVerBuiltInNamesWhenSaved
$nVerBuiltInNamesWhenSaved = self::_GetInt2d($this->data1Table, $posMem);
$posMem += 2;
// - LPStshi : stshi : stshif : ftcAsci
$ftcAsci = self::_GetInt2d($this->data1Table, $posMem);
$posMem += 2;
// - LPStshi : stshi : stshif : ftcFE
$ftcFE = self::_GetInt2d($this->data1Table, $posMem);
$posMem += 2;
// - LPStshi : stshi : stshif : ftcOther
$ftcOther = self::_GetInt2d($this->data1Table, $posMem);
$posMem += 2;
// - LPStshi : stshi : ftcBi (2o)
$ftcBi = self::_GetInt2d($this->data1Table, $posMem);
$posMem += 2;
// - LPStshi : stshi : StshiLsd
// - LPStshi : stshi : StshiLsd : cbLSD
$cbLSD = self::_GetInt2d($this->data1Table, $posMem);
$posMem += 2;
print_r('$cbLSD :'.$cbLSD.PHP_EOL);
// - LPStshi : stshi : StshiLsd : mpstiilsd
// - LPStshi : stshi : StshiB
// rglpstd (variable): An array of LPStd that specifies the style definitions.
}
private function readRecordPlcfSed(){
// fcPlcfSed (4 bytes): An unsigned integer that specifies an offset in the Table Stream. A PlcfSed begins at this offset and specifies the locations of property lists for each section in the Main Document. If lcbPlcfSed is zero, fcPlcfSed is undefined and MUST be ignored.
// lcbPlcfSed (4 bytes): An unsigned integer that specifies the size, in bytes, of the PlcfSed that begins at offset fcPlcfSed in the Table Stream.
print_r('============ readRecordPlcfSed'.PHP_EOL);
$posMem = $this->arrayFib['fcPlcfSed'];
// PlcfSed
// PlcfSed : aCP
$aCP = array();
$aCP[0] = self::_GetInt4d($this->data1Table, $posMem);
$posMem += 4;
$aCP[1] = self::_GetInt4d($this->data1Table, $posMem);
$posMem += 4;
print_r('$aCP :'.PHP_EOL);
print_r($aCP);
// PlcfSed : aSed
$numSed = ($this->arrayFib['lcbPlcfSed'] - 4) / 12;
$aSed = array();
for($iInc = 1 ; $iInc < $numSed ; ++$iInc){
// ignored
$posMem += 2;
// A signed integer value that specifies the position in the WordDocument Stream at which a Sepx structure is located.
$aSed[$iInc] = self::_GetInt4d($this->data1Table, $posMem);
$posMem += 4;
// ignored
$posMem += 2;
// ignored
$posMem += 4;
}
// page 541 pour la lecture des informations sur la section
}
private function read1Table($data)
{
/*
offset[0] = offsetClx + 1;
int lcb = stream.getInteger(offset);
int countPcd = (lcb - 4)/12;
int countCp = (lcb - countPcd*8)/4;
int offsetPlcpcd = offsetClx + 5;
for(int i=0;i<countPcd;i++)
{
int offsetPcd = offsetPlcpcd + countCp*4 + i*8;
offset[0] = offsetPcd + 2;
int start = stream.getInteger(offset);
int fc = start >> 30;
start = (start << 2) >> 2;
offset[0] = offsetPlcpcd + i*4;
int cpPre = stream.getInteger(offset);
int cpNext = stream.getInteger(offset);
int length = cpNext - cpPre -1;
if(fc == 0)
{
length *= 2;
}
else
{
start = start/2;
}
start += 512;
bytesToString(ogiBytes, content, start, length, fc);
System.out.println(start +", "+ length);
}*/
print_r('============ read1Table'.PHP_EOL);
$clxPosition = $this->arrayFib['fcClx'];
$text = self::_GetInt1d($data, $clxPosition);
print_r('$text : '.$text.PHP_EOL);
$lcb_piece_table = self::_GetInt4d($data, $clxPosition + 1);
$piece_table = $clxPosition + 5;
$piece_count = ($lcb_piece_table - 4) / 12;
print_r('$piece_count : '.$piece_count.PHP_EOL);
$countCp = ($lcb_piece_table - $piece_count*8)/4;
print_r('$countCp : '.$countCp.PHP_EOL);
for($i=0 ; $i < $piece_count ; $i++) {
$piece_start = self::_GetInt4d($data, $piece_table + ($i * 4));
$piece_end = self::_GetInt4d($data, $piece_table + (($i + 1) * 4));
$piece_descriptor = $piece_table + (($piece_count + 1) * 4) + ($i * 8);
$fc = self::_GetInt4d ($data, $piece_descriptor + 2);
$is_ansi = ($fc & 0x40000000) == 0x40000000;
if (!$is_ansi) {
$fc = ($fc & 0xBFFFFFFF);
} else {
$fc = ($fc & 0xBFFFFFFF) >> 1;
}
$piece_size = $piece_end - $piece_start;
print_r('$piece_size : '.$piece_size.PHP_EOL);
if (!$is_ansi) {
$piece_size *= 2;
}
print_r('$piece_size : '.$piece_size.PHP_EOL);
if ($piece_size >= 1) {
$fc+=512;
print_r(chr(self::_GetInt2d($data, $fc + 2)));
print_r(chr(self::_GetInt2d($data, $fc + 4)));
print_r(chr(self::_GetInt2d($data, $fc + 6)));
print_r(chr(self::_GetInt2d($data, $fc + 8)));
print_r(chr(self::_GetInt2d($data, $fc + 10)));
print_r(chr(self::_GetInt2d($data, $fc + 12)));
print_r(chr(self::_GetInt2d($data, $fc + 14)));
print_r(chr(self::_GetInt2d($data, $fc + 16)));
print_r(chr(self::_GetInt2d($data, $fc + 18)));
print_r(chr(self::_GetInt2d($data, $fc + 20)));
print_r(chr(self::_GetInt2d($data, $fc + 22)));
print_r(chr(self::_GetInt2d($data, $fc + 24)));
print_r(chr(self::_GetInt2d($data, $fc + 26)));
print_r(chr(self::_GetInt2d($data, $fc + 28)));
print_r(chr(self::_GetInt2d($data, $fc + 30)));
print_r(chr(self::_GetInt2d($data, $fc + 32)));
print_r(chr(self::_GetInt2d($data, $fc + 34)));
print_r(chr(self::_GetInt2d($data, $fc + 36)));
print_r(chr(self::_GetInt2d($data, $fc + 38)));
print_r(PHP_EOL);
}
$offsetPcd = $piece_table + $countCp*4 + $i*8;
$start = self::_GetInt4d($data, $offsetPcd+2);
print_r('$start : '.$start.PHP_EOL);
$fc = $start >> 30;
$start = ($start << 2) >> 2;
print_r('$fc : '.$fc.PHP_EOL);
print_r('$start : '.$start.PHP_EOL);
$offset = $piece_table + $i*4;
print_r('$offset : '.$offset.PHP_EOL);
$cpPre = self::_GetInt4d($data, $offset);
print_r('$cpPre : '.$cpPre.PHP_EOL);
$cpNext = self::_GetInt4d($data, $offset + 4);
print_r('$cpNext : '.$cpNext.PHP_EOL);
$length = $cpNext - $cpPre -1;
if($fc == 0) {
$length *= 2;
} else {
$start = $start/2;
}
$start += 512;
print_r($start);
print_r(PHP_EOL);
print_r($length);
print_r(PHP_EOL);
print_r(self::_GetInt2d($data, $start + 2));
print_r(PHP_EOL);
print_r(chr(self::_GetInt2d($data, $start + 2)));
print_r(PHP_EOL);
print_r(chr(self::_GetInt2d($data, $start + 4)));
print_r(chr(self::_GetInt2d($data, $start + 6)));
print_r(chr(self::_GetInt2d($data, $start + 8)));
print_r(chr(self::_GetInt2d($data, $start + 10)));
print_r(chr(self::_GetInt2d($data, $start + 12)));
print_r(chr(self::_GetInt2d($data, $start + 14)));
print_r(chr(self::_GetInt2d($data, $start + 16)));
print_r(chr(self::_GetInt2d($data, $start + 18)));
print_r(chr(self::_GetInt2d($data, $start + 20)));
print_r(chr(self::_GetInt2d($data, $start + 22)));
print_r(chr(self::_GetInt2d($data, $start + 24)));
print_r(chr(self::_GetInt2d($data, $start + 26)));
print_r(chr(self::_GetInt2d($data, $start + 28)));
print_r(chr(self::_GetInt2d($data, $start + 30)));
print_r(chr(self::_GetInt2d($data, $start + 32)));
print_r(chr(self::_GetInt2d($data, $start + 34)));
print_r(chr(self::_GetInt2d($data, $start + 36)));
print_r(chr(self::_GetInt2d($data, $start + 38)));
}
/*
$start = self::_GetInt4d($data, 1850);
print_r('$start : '.$start.PHP_EOL);
$end = self::_GetInt4d($data, 1854);
print_r('$end : '.$end.PHP_EOL);*/
print_r(PHP_EOL);
print_r(PHP_EOL);
print_r(PHP_EOL);
//print_r($data);
print_r(PHP_EOL);
//print_r(dechex($data));
print_r(PHP_EOL);
}
private function readData($data)
{
print_r('============ readData'.PHP_EOL);
$text = self::_GetInt1d($data, 0);
print_r(dechex($text));
print_r(PHP_EOL);
print_r(PHP_EOL);
print_r(PHP_EOL);
//print_r($data);
print_r(PHP_EOL);
//print_r(dechex($data));
print_r(PHP_EOL);
}
private function readObjectPool($data)
{
print_r('============ readObjectPool'.PHP_EOL);
print_r(PHP_EOL);
print_r(PHP_EOL);
print_r(PHP_EOL);
//print_r($data);
print_r(PHP_EOL);
//print_r(dechex($data));
print_r(PHP_EOL);
}
/**
* Read 8-bit unsigned integer
*
* @param string $data
* @param int $pos
* @return int
*/
public static function _GetInt1d($data, $pos)
{
return ord($data[$pos]);
}
/**
* Read 16-bit unsigned integer
*
* @param string $data
* @param int $pos
* @return int
*/
public static function _GetInt2d($data, $pos)
{
return ord($data[$pos]) | (ord($data[$pos+1]) << 8);
}
/**
* Read 32-bit signed integer
*
* @param string $data
* @param int $pos
* @return int
*/
public static function _GetInt4d($data, $pos)
{
// FIX: represent numbers correctly on 64-bit system
// http://sourceforge.net/tracker/index.php?func=detail&aid=1487372&group_id=99160&atid=623334
// Hacked by Andreas Rehm 2006 to ensure correct result of the <<24 block on 32 and 64bit systems
$_or_24 = ord($data[$pos + 3]);
if ($_or_24 >= 128) {
// negative number
$_ord_24 = -abs((256 - $_or_24) << 24);
} else {
$_ord_24 = ($_or_24 & 127) << 24;
}
return ord($data[$pos]) | (ord($data[$pos+1]) << 8) | (ord($data[$pos+2]) << 16) | $_ord_24;
}
}