void CreateEncrypt(PdfElement elem) { var cf = elem.Get <PdfElement>("CF"); if (cf != null) { var stdCf = cf.Get <PdfElement>("StdCF"); if (stdCf != null) { } } var pValue = elem.Get <PdfInteger>("P").Value; var vValue = elem.Get <PdfInteger>("V").Value; var rValue = elem.Get <PdfInteger>("R").Value; var oValue = elem.Get <PdfString>("O").ToISOBytes(); var uValue = elem.Get <PdfString>("U").ToISOBytes(); var filter = elem.Get <PdfName>("Filter")?.Name; EncryptAlg cryptoMode = EncryptAlg.STANDARD_ENCRYPTION_128; switch (rValue) { case 4: if (vValue != 4) { throw new PdfException($"Invalid encrypt. V={vValue}, P={vValue}"); } var cfObj = elem.Get <PdfDictionary>("CF"); var stdCfObj = cfObj.Get <PdfDictionary>("StdCF"); if (stdCfObj != null) { if (stdCfObj.Get <PdfName>("CFM")?.Name == "V2") { cryptoMode = EncryptAlg.STANDARD_ENCRYPTION_128; } } break; default: throw new NotImplementedException($"Decrypt value {rValue}"); } _decryptor = new PdfEncryption(); _decryptor.SetCryptoMode(cryptoMode, 0); if (filter == "Standard") { if (rValue != 5) { _decryptor.SetupByOwnerPassword(_documentId, uValue, oValue, pValue); Int32 checkLen = (rValue == 3 || rValue == 4) ? 16 : 32; if (!EqualsArray(uValue, _decryptor.UserKey, checkLen)) { _decryptor.SetupByUserPassword(_documentId, oValue, pValue); } } } }
void ParseObjStream(PdfElement elem) { PdfStream stream = elem.Get <PdfStream>("_stream"); var ms = new MemoryStream(stream.Bytes); using (var br = new BinaryReader(ms)) { PdfReader rdr = PdfReader.Create(br); foreach (var obj in rdr.ReadObjStream()) { var name = $"{obj.Item1} 0"; if (obj.Item2 is PdfDictionary objDict) { AddObject(name, objDict); } } } }
public void AddObject(String name, PdfDictionary dict) { var type = dict.Get <PdfName>("Type"); var elem = PdfElement.Create(type, dict, this); _objects.Add(name, elem); if (type != null) { switch (elem) { case PdfCatalog catalog: _catalog = catalog; break; case PdfXRef xref: _xRefs.Add(xref); break; case PdfPages pages: foreach (var pageRef in pages.Kids()) { _pageRefs.Add(pageRef); } break; case PdfPage page: _pages.Add(name, page); break; case PdfFont font: _fonts.Add(name, font); break; case PdfExtGState extGState: _extGState = extGState; break; } } }
protected PdfElement(PdfElement elem) { _dict = elem._dict; }
public PdfResource(PdfElement elem, PdfFile file) : base(elem) { _file = file; }
public PdfContentBlock(PdfElement elem, PdfFile file, PdfPage page) : base(elem) { _file = file; _page = page; }