SetaPDF_Core_Type_ObjectStream Class representing an object stream object.

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

Class hierarchy

Implements

Summary

Properties

$_bypassSecHandler

protected boolean SetaPDF_Core_Type_Stream::$_bypassSecHandler = false

Flag indicating that the object should bypass the security handler

$_encrypted

protected boolean SetaPDF_Core_Type_Stream::$_encrypted = false

Flag saying that the stream is encrypted or not

$_filtered

protected boolean SetaPDF_Core_Type_Stream::$_filtered = false

Flag saying that the current stream data is filtered or not

$_isNew

protected bool SetaPDF_Core_Type_ObjectStream::$_isNew = false

Flag telling whether this object stream is a newly created one or read from an existing stream.

$_objectOffsets

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

$_observed

Defines if this object is under observation

$_observers

protected array SetaPDF_Core_Type_AbstractType::$_observers = array()

The Objects to notify on any change

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

The original owning object

Needed if the stream is encrypted

$_parser

The stream parser instance.

$_stream

protected string SetaPDF_Core_Type_Stream::$_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

$metadata

An array for individual metadata.


Static Methods

_ensureType()

protected static SetaPDF_Core_Type_AbstractType::_ensureType (
string $type, mixed $value, string $errorMessage [, $ensure = true ]
): mixed

Ensure that a value is an instance of a specific PDF type.

Parameters
$type : string
 
$value : mixed
 
$errorMessage : string
 
$ensure
 
Exceptions

Throws SetaPDF_Core_Type_Exception

ensureType()

Ensures that the passed value is a SetaPDF_Core_Type_ObjectStream instance.

Parameters
$stream : mixed
 
Exceptions

Throws SetaPDF_Core_Type_Exception

ensureWithType()

Ensures that the passed value is an instance of the passed type.

Parameters
$type : string
 
$value : mixed
 
Exceptions

Throws SetaPDF_Core_Type_Exception

is()

public static SetaPDF_Core_Type_AbstractType::is (
string $type, mixed $value [, bool $ensure = true ]
): bool

Checks if the type of a value is the expected one.

Indirect references will be evaluated if $ensure is set to true.

Parameters
$type : string
 
$value : mixed
 
$ensure : bool
 

writePdfString()

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

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()

public SetaPDF_Core_Type_AbstractType::__sleep (
void
): array

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 SetaPDF_Core_Type_Stream::_applyFilter (
string $stream [, boolean $encode = false [, SetaPDF_Core_Document $pdfDocument = null ]]
): mixed

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

Throws SetaPDF_Exception_NotImplemented

_decrypt()

protected SetaPDF_Core_Type_Stream::_decrypt (
void
): string

Decrypts the stream (if needed).

_getBeforeSaveCallbackName()

_getObjectOffset()

protected SetaPDF_Core_Type_ObjectStream::_getObjectOffset (
integer $objectId
): integer

Get the offset value for a specific object id.

Parameters
$objectId : integer
 
Exceptions

Throws SetaPDF_Core_Document_ObjectNotFoundException

Throws SetaPDF_Core_Type_Exception

Throws SetaPDF_Exception

Throws SetaPDF_Exception_NotImplemented

_getUnfilteredStream()

A proxy method to hold a copy of the unfiltered stream.

Exceptions

Throws SetaPDF_Exception

Throws SetaPDF_Exception_NotImplemented

_preProcess()

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

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

Parameters
$pdfDocument : SetaPDF_Core_Document
 

addObject()

Add an indirect object to this object stream.

Parameters
$object : SetaPDF_Core_Type_IndirectObject
 

appendStream()

public SetaPDF_Core_Type_Stream::appendStream (
string $bytes
): void

Append a stream to the existing stream.

Parameters
$bytes : string
 

attach()

public SetaPDF_Core_Type_Stream::attach (
SplObserver $observer
): void

Add an observer to the object.

Implementation of the Observer Pattern.

Parameters
$observer : SplObserver
 

cleanUp()

Release memory/cycled references.

clear()

public SetaPDF_Core_Type_Stream::clear (
void
): 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::ensure (
[ bool|null $forceObservation = null ]
): SetaPDF_Core_Type_AbstractType

Returns the main value.

This method is used for automatically resolving of indirect references.

Parameters
$forceObservation : bool|null
 

getOffsets()

Get the offsets of all objects in this object stream.

Exceptions

Throws SetaPDF_Core_Type_Exception

Throws SetaPDF_Exception

Throws SetaPDF_Exception_NotImplemented

getOwner()

Get the owner instance.

getOwnerPdfDocument()

Get the document instance.

getStream()

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

Get the plain stream content.

Parameters
$ignoreFaultyStreams : bool
 
$filtered : boolean
 
Exceptions

Throws SetaPDF_Exception

Throws SetaPDF_Exception_NotImplemented

getValue()

Get the dictionary of this stream.

hasCryptFilter()

Checks if a Crypt filter is defined for this stream.

Exceptions

Throws SetaPDF_Core_Type_Exception

isNew()

public SetaPDF_Core_Type_ObjectStream::isNew (
void
): bool

Checks whether this object stream is a newly created one or created from an existing one.

isObserved()

Checks if this object is observed.

isValid()

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

notify()

public SetaPDF_Core_Type_AbstractType::notify (
void
): void

Notifies all attached observers.

Implementation of the Observer Pattern.

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

processObjects()

Create the final stream based on the added objects.

Exceptions

Throws SetaPDF_Core_Type_Exception

Throws SetaPDF_Exception

Throws SetaPDF_Exception_NotImplemented

resolveIndirectObject()

setBypassSecHandler()

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

Set the bypass security handler flag.

Parameters
$bypassSecHandler : boolean
 

setOwner()

Set the owner instance.

Parameters
$owner : SetaPDF_Core_Type_Owner
 

setStream()

public SetaPDF_Core_Type_Stream::setStream (
string $stream
): void

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()

public SetaPDF_Core_Type_Stream::toPdfString (
[ SetaPDF_Core_Document $pdfDocument = null ]
): string

Returns the type as a formatted PDF string.

Parameters
$pdfDocument : SetaPDF_Core_Document
 

toPhp()

public SetaPDF_Core_Type_Stream::toPhp (
void
): array

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

unfilterStream()

Unfilter the stream.

update()

public SetaPDF_Core_Type_ObjectStream::update (
SplSubject $SplSubject
): void

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. It's hard to tell if the whole object stream should be rewritten or only the single modified object.

Parameters
$SplSubject : SplSubject
 

write()

public SetaPDF_Core_Type_Stream::write (
string $bytes
): void

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