public static byte[] GetContentBytesFromContentObject(PdfObject contentObject)
{
byte[] result;
switch (contentObject.Type)
{
case PdfObject.INDIRECT:
PRIndirectReference refi = (PRIndirectReference) contentObject;
PdfObject directObject = PdfReader.GetPdfObject(refi);
result = GetContentBytesFromContentObject(directObject);
break;
case PdfObject.STREAM:
PRStream stream = (PRStream) PdfReader.GetPdfObject(contentObject);
result = PdfReader.GetStreamBytes(stream);
break;
case PdfObject.ARRAY:
// Stitch together all content before calling ProcessContent(), because
// ProcessContent() resets state.
MemoryStream allBytes = new MemoryStream();
PdfArray contentArray = (PdfArray) contentObject;
ListIterator<PdfObject> iter = contentArray.GetListIterator();
while (iter.HasNext()) {
PdfObject element = iter.Next();
byte[] b;
allBytes.Write(b = GetContentBytesFromContentObject(element), 0, b.Length);
allBytes.WriteByte((byte)' ');
}
result = allBytes.ToArray();
break;
default:
String msg = "Unable to handle Content of type " + contentObject.GetType();
throw new InvalidOperationException(msg);
}
return result;
}