public File( IInputStream stream ) { Initialize(); reader = new Reader(stream, this); try // [FIX:45] File constructor didn't dispose reader on error. { Reader.FileInfo info = reader.ReadInfo(); version = info.Version; trailer = PrepareTrailer(info.Trailer); if (trailer.ContainsKey(PdfName.Encrypt)) // Encrypted file. { throw new NotImplementedException("Encrypted files are currently not supported."); } indirectObjects = new IndirectObjects(this, info.XrefEntries); document = new Document(trailer[PdfName.Root]); Configuration.XRefMode = (PdfName.XRef.Equals(trailer[PdfName.Type]) ? XRefModeEnum.Compressed : XRefModeEnum.Plain); } catch (Exception) { reader.Dispose(); throw; } }
public File( IInputStream stream ) { reader = new Reader(stream, this); Reader.FileInfo info = reader.ReadInfo(); version = info.Version; trailer = info.Trailer; if (trailer.ContainsKey(PdfName.Encrypt)) // Encrypted file. { throw new NotImplementedException("Encrypted files are currently not supported."); } indirectObjects = new IndirectObjects(this, info.XrefEntries); document = new Document(trailer[PdfName.Root]); document.Configuration.XrefMode = (PdfName.XRef.Equals(trailer[PdfName.Type]) ? Document.Config.XRefModeEnum.Compressed : Document.Config.XRefModeEnum.Plain); }
public File(IInputStream stream) { Initialize(); reader = new Reader(stream, this); try // [FIX:45] File constructor didn't dispose reader on error. { Reader.FileInfo info = reader.ReadInfo(); version = info.Version; trailer = PrepareTrailer(info.Trailer); indirectObjects = new IndirectObjects(this, info.XrefEntries); reader.PrepareDecryption(); var documentReference = trailer[PdfName.Root]; if (documentReference.Resolve() is PdfDictionary) { document = new Document(documentReference); } else { foreach (var inderectObject in indirectObjects) { var entry = inderectObject.Resolve(); if (entry is PdfDictionary entryDictionary && entryDictionary[PdfName.Pages] != null) { document = new Document(entry.Reference); } } } Configuration.XRefMode = (PdfName.XRef.Equals(trailer[PdfName.Type]) ? XRefModeEnum.Compressed : XRefModeEnum.Plain); } catch (Exception) { reader.Dispose(); throw; } }