SetaPDF_Core_Type_ObjectStream Class representing an object stream object.

File: /SetaPDF/Core/Type/ObjectStream.php

Class hierarchy

Implements

Summary

Properties

$_bypassSecHandler

Flag saying that this stream should by pass the security handler

$_encrypted

protected boolean SetaPDF_Core_Type_ObjectStream::$_encrypted = false

Flag saying that the stream is encrypted or not

$_filtered

protected boolean SetaPDF_Core_Type_ObjectStream::$_filtered = false

Flag saying that the current stream data is filtered or not

$_objectOffsets

An array of object offsets in the stream keyed by object ids.

$_observed

protected boolean SetaPDF_Core_Type_ObjectStream::$_observed = false

Defines if this object is under observation

$_observers

protected array SetaPDF_Core_Type_ObjectStream::$_observers = array()

This will be the PDF document or another value holding this one. Initially this will be an array.

$_owner

The document instance to which this object stream belongs to.

$_owningObject

$_parser

The stream parser instance.

$_stream

The stream content

$_unfilteredStream

The unfiltered stream content

$_valid

Defines if a inner object had triggered a change to invalid the state of this object stream.

$_value

The dictionary of the stream object


Static Methods

writePdfString()

static public void SetaPDF_Core_Type_AbstractType::writePdfString ( SetaPDF_Core_WriteInterface $writer, mixed $value )

Parses a php value to a pdf string and writes it into a writer.

PHP data type -> PDF data type

Null -> SetaPDF_Core_Type_Null

Boolean -> SetaPDF_Core_Type_Boolean

Integer/Double -> SetaPDF_Core_Type_Numeric

String -> SetaPDF_Core_Type_String or SetaPDF_Core_Type_Name(if the string starts with "/")

Indexed array -> SetaPDF_Core_Type_Array

Associative array -> SetaPDF_Core_Type_Dictionary

Parameters
$writer : SetaPDF_Core_WriteInterface
 
$value : mixed
 
Exceptions

Throws InvalidArgumentException


Methods

__construct()

public SetaPDF_Core_Type_Stream::__construct ( [ SetaPDF_Core_Type_Dictionary $value = null [, string $stream = '' [, SetaPDF_Core_Type_IndirectObject $owningObject = null ]]] )

The constructor.

Parameters
$value : SetaPDF_Core_Type_Dictionary
 
$stream : string
 
$owningObject : SetaPDF_Core_Type_IndirectObject
 

__sleep()

Implementation of __sleep.

We remove the observers from all elements because they will get read if they are waked up in an observed object.

_applyFilter()

protected mixed SetaPDF_Core_Type_Stream::_applyFilter ( string $stream [, boolean $encode = false [, SetaPDF_Core_Document $pdfDocument = null ]] )

Applies filter to the stream.

Parameters
$stream : string
 
$encode : boolean
 
$pdfDocument : SetaPDF_Core_Document

The document, on which the stream will get used. This value is only needed for a crypt filter (to be implemented!)

Exceptions

Throws SetaPDF_Exception, SetaPDF_Exception_NotImplemented

_decrypt()

protected string SetaPDF_Core_Type_Stream::_decrypt ( void )

Decrypts the stream (if needed).

_getObjectOffset()

protected integer SetaPDF_Core_Type_ObjectStream::_getObjectOffset ( integer $objectId )

Get the offset value for a specific object id.

Parameters
$objectId : integer
 
Exceptions

Throws SetaPDF_Core_Document_ObjectNotFoundException

_getParser()

Get the stream parser.

_preProcess()

protected mixed|string SetaPDF_Core_Type_Stream::_preProcess ( SetaPDF_Core_Document $pdfDocument )

Pre-Process the stream for the output in a specific PDF document.

Parameters
$pdfDocument : SetaPDF_Core_Document
 

appendStream()

public void SetaPDF_Core_Type_Stream::appendStream ( string $bytes )

Append a stream to the existing stream.

Parameters
$bytes : string
 

attach()

public void SetaPDF_Core_Type_Stream::attach ( SplObserver $observer )

Add an observer to the object.

Implementation of the Observer Pattern.

Parameters
$observer : SplObserver
 

cleanUp()

Release memory/cycled references.

clear()

public void SetaPDF_Core_Type_Stream::clear ( void )

Clears the stream.

deepClone()

Clone the object recursively in the context of a document.

Parameters
$document : SetaPDF_Core_Document
 

detach()

Detach an observer from the object.

Implementation of the Observer Pattern.

Parameters
$observer : SplObserver
 

detachAll()

Detach all observers from this object.

Be careful with this method!!!

ensure()

public SetaPDF_Core_Type_AbstractType SetaPDF_Core_Type_AbstractType::ensure ( [ boolean|null $forceObservation = null ] )

Returns the main value.

This method is used for automatically resolving of indirect references.

Parameters
$forceObservation : boolean|null
 

getOffsets()

Get the offsets of all objects in this object stream.

getOwner()

Get the owner instance.

getOwnerPdfDocument()

Get the document instance.

getStream()

public string SetaPDF_Core_Type_Stream::getStream ( [ boolean $filtered = false ] )

Get the plain stream content.

Parameters
$filtered : boolean
 

getValue()

Get the dictionary of this stream.

hasCryptFilter()

Checks if an Crypt is defined for this stream.

isObserved()

Checks if this object is observed.

isValid()

Checks wheter an object of this objects stream was changed or not.

notify()

Notifies all attached observers.

Implementation of the Observer Pattern.

Has to be called by any method that changes a value.

resolveIndirectObject()

Resolves an indirect object in this object stream.

Parameters
$objectId : integer
 
Exceptions

Throws SetaPDF_Core_Document_ObjectNotFoundException, SetaPDF_Core_Exception

setBypassSecHandler()

public void SetaPDF_Core_Type_Stream::setBypassSecHandler ( [ boolean $bypassSecHandler = true ] )

Set the bypass security handler flag.

Parameters
$bypassSecHandler : boolean
 

setOwner()

Set the owner instance.

Parameters
$owner : SetaPDF_Core_Type_Owner
 

setStream()

public void SetaPDF_Core_Type_Stream::setStream ( string $stream )

Set the stream content.

Parameters
$stream : string
 

setValue()

Set the PDF dictionary for this stream object.

Parameters
$value : SetaPDF_Core_Type_Dictionary

The value

Exceptions

Throws InvalidArgumentException

See

toPdfString()

Returns the type as a formatted PDF string.

Parameters
$pdfDocument : SetaPDF_Core_Document
 

toPhp()

public array SetaPDF_Core_Type_Stream::toPhp ( void )

Converts the PDF data type to a PHP data type and returns it.

unfilterStream()

Unfilter the stream.

update()

public void SetaPDF_Core_Type_ObjectStream::update ( SplSubject $SplSubject )

Triggered if a value of this object is changed. Forward this to the document in that case.

A stream can only be observed by an indirect object.

So let's check the observers for this type and forward it to its owning document instance until we manage creation of object streams.

Parameters
$SplSubject : SplSubject
 

write()

public void SetaPDF_Core_Type_Stream::write ( string $bytes )

Alias for SetaPDF_Core_Type_Stream::appendStream.

Parameters
$bytes : string
 

writeTo()

Writes the type as a formatted PDF string to the document.

Parameters
$pdfDocument : SetaPDF_Core_Document