public GetPageContent ( int pageNum, |
||
pageNum | int | |
file | ||
리턴 | byte[] |
public byte[] GetPageContent(int pageNum, RandomAccessFileOrArray file) {
PdfDictionary page = GetPageNRelease(pageNum);
if (page == null)
return null;
PdfObject contents = GetPdfObjectRelease(page.Get(PdfName.CONTENTS));
if (contents == null)
return new byte[0];
MemoryStream bout = null;
if (contents.IsStream()) {
return GetStreamBytes((PRStream)contents, file);
}
else if (contents.IsArray()) {
PdfArray array = (PdfArray)contents;
bout = new MemoryStream();
for (int k = 0; k < array.Size; ++k) {
PdfObject item = GetPdfObjectRelease(array[k]);
if (item == null || !item.IsStream())
continue;
byte[] b = GetStreamBytes((PRStream)item, file);
bout.Write(b, 0, b.Length);
if (k != array.Size - 1)
bout.WriteByte((byte)'\n');
}
return bout.ToArray();
}
else
return new byte[0];
}
PdfReader::GetPageContent ( int pageNum ) : byte[] |
/// <summary> /// Removes layers from a PDF document </summary> /// <param name="reader"> a PdfReader containing a PDF document </param> /// <param name="layers"> a sequence of names of OCG layers </param> /// <exception cref="IOException"> </exception> public virtual void RemoveLayers(PdfReader reader, params string[] layers) { int n = reader.NumberOfPages; for (int i = 1; i <= n; i++) reader.SetPageContent(i, reader.GetPageContent(i)); ICollection<string> ocgs = new HashSet2<string>(); for (int i = 0; i < layers.Length; i++) { ocgs.Add(layers[i]); } OCGParser parser = new OCGParser(ocgs); for (int i = 1; i <= n; i++) { PdfDictionary page = reader.GetPageN(i); Parse(parser, page); page.Remove(new PdfName("PieceInfo")); RemoveAnnots(page, ocgs); RemoveProperties(page, ocgs); } PdfDictionary root = reader.Catalog; PdfDictionary ocproperties = root.GetAsDict(PdfName.OCPROPERTIES); if (ocproperties != null) { RemoveOCGsFromArray(ocproperties, PdfName.OCGS, ocgs); PdfDictionary d = ocproperties.GetAsDict(PdfName.D); if (d != null) { RemoveOCGsFromArray(d, PdfName.ON, ocgs); RemoveOCGsFromArray(d, PdfName.OFF, ocgs); RemoveOCGsFromArray(d, PdfName.LOCKED, ocgs); RemoveOCGsFromArray(d, PdfName.RBGROUPS, ocgs); RemoveOCGsFromArray(d, PdfName.ORDER, ocgs); RemoveOCGsFromArray(d, PdfName.AS, ocgs); } } reader.RemoveUnusedObjects(); }