# org.pdfclown.files.IndirectObjects Class Reference

Collection of the alive indirect objects available inside the file. More...

List of all members.

## Public Member Functions
void | Add (PdfIndirectObject obj)
| Registers an external indirect object.
PdfIndirectObject | Add (PdfDataObject obj)
| Registers an internal data object.
PdfIndirectObject | AddExternal (PdfIndirectObject obj, Cloner cloner)
| Registers an external indirect object.
PdfIndirectObject | AddExternal (PdfIndirectObject obj)
| Registers an external indirect object.
void | Clear ()
bool | Contains (PdfIndirectObject obj)
void | CopyTo (PdfIndirectObject[] objs, int index)
IEnumerator< PdfIndirectObject > | GetEnumerator ()
int | IndexOf (PdfIndirectObject obj)
void | Insert (int index, PdfIndirectObject obj)
bool | IsEmpty ()
bool | Remove (PdfIndirectObject obj)
void | RemoveAt (int index)
## Properties
int | Count`[get]`
| Gets the number of entries available (both in-use and free) in the collection.
File | File`[get]`
| Gets the file associated to this collection.
bool | IsReadOnly`[get]`
PdfIndirectObject | this [int index]`[get, set]`

##

Collection of the alive indirect objects available inside the file.

According to the PDF spec, indirect object entries may be free (no data object associated) or in-use (data object associated).

We can effectively subdivide indirect objects in two possibly-overriding collections: the original indirect objects (coming from the associated preexisting file) and the newly-registered indirect objects (coming from new data objects or original indirect objects manipulated during the current session).

To ensure that the modifications applied to an original indirect object are committed to being persistent is critical that the modified original indirect object is newly-registered (practically overriding the original indirect object).

Alive indirect objects encompass all the newly-registered ones plus not-overridden original ones.

## Member Function Documentation

void org.pdfclown.files.IndirectObjects.Add | ( | PdfIndirectObject | obj | ) |

Registers an external indirect object.

External indirect objects come from alien PDF files; therefore, this is a powerful way to import contents from a file into another one.

To register and get an external indirect object, use AddExternal(PdfIndirectObject)

Returns:
  Whether the indirect object was successfully registered.

PdfIndirectObject org.pdfclown.files.IndirectObjects.Add | ( | PdfDataObject | obj | ) |

Registers an internal data object.

To register an external indirect object, use AddExternal(PdfIndirectObject).

Returns:
  Indirect object corresponding to the registered data object.

PdfIndirectObject org.pdfclown.files.IndirectObjects.AddExternal | ( | PdfIndirectObject | obj,
|  | Cloner | cloner |
| ) |  |  |

Registers an external indirect object.

External indirect objects come from alien PDF files; therefore, this is a powerful way to import contents from a file into another one.

To register an internal data object, use Add(PdfDataObject).

External indirect object to import.

Import rules.

Returns:
  Indirect object imported from the external indirect object.

References org.pdfclown.objects.PdfObject.Accept(), org.pdfclown.objects.Cloner.Context, org.pdfclown.objects.PdfIndirectObject.DataObject, and org.pdfclown.objects.PdfIndirectObject.GetHashCode().

PdfIndirectObject org.pdfclown.files.IndirectObjects.AddExternal | ( | PdfIndirectObject | obj | ) |

Registers an external indirect object.

External indirect objects come from alien PDF files; therefore, this is a powerful way to import contents from a file into another one.

To register an internal data object, use Add(PdfDataObject).

External indirect object to import.

Returns:
  Indirect object imported from the external indirect object.

References org.pdfclown.files.IndirectObjects.AddExternal(), and org.pdfclown.files.File.Cloner.

Referenced by org.pdfclown.files.IndirectObjects.AddExternal().

void org.pdfclown.files.IndirectObjects.Clear | ( |  | ) |

bool org.pdfclown.files.IndirectObjects.Contains | ( | PdfIndirectObject | obj | ) |

References org.pdfclown.objects.PdfReference.ObjectNumber, and org.pdfclown.objects.PdfIndirectObject.Reference.

void org.pdfclown.files.IndirectObjects.CopyTo | ( | PdfIndirectObject[] | objs,
|  | int | index |
| ) |  |  |

IEnumerator<PdfIndirectObject> org.pdfclown.files.IndirectObjects.GetEnumerator | ( |  | ) |

int org.pdfclown.files.IndirectObjects.IndexOf | ( | PdfIndirectObject | obj | ) |

References org.pdfclown.objects.PdfIndirectObject.File, org.pdfclown.objects.PdfReference.ObjectNumber, and org.pdfclown.objects.PdfIndirectObject.Reference.

void org.pdfclown.files.IndirectObjects.Insert | ( | int | index,
|  | PdfIndirectObject | obj |
| ) |  |  |

bool org.pdfclown.files.IndirectObjects.IsEmpty | ( |  | ) |

References org.pdfclown.objects.PdfIndirectObject.IsInUse().

bool org.pdfclown.files.IndirectObjects.Remove | ( | PdfIndirectObject | obj | ) |

References org.pdfclown.objects.PdfReference.ObjectNumber, and org.pdfclown.objects.PdfIndirectObject.Reference.

void org.pdfclown.files.IndirectObjects.RemoveAt | ( | int | index | ) |

Referenced by org.pdfclown.objects.PdfIndirectObject.Delete(), and org.pdfclown.tools.Optimizer.RemoveOrphanedObjects().

## Property Documentation

int org.pdfclown.files.IndirectObjects.Count`[get]`

Gets the number of entries available (both in-use and free) in the collection.

Returns:
  The number of entries available in the collection.

Referenced by org.pdfclown.tools.Optimizer.RemoveOrphanedObjects(), and org.pdfclown.tokens.CompressedWriter.WriteStandard().

File org.pdfclown.files.IndirectObjects.File`[get]`

Gets the file associated to this collection.

bool org.pdfclown.files.IndirectObjects.IsReadOnly`[get]`

PdfIndirectObject org.pdfclown.files.IndirectObjects.this[int index]`[get, set]`

Copyright 2006-2013 Stefano Chizzolini. For more information, please visit PDF Clown home page.