internal TPdfStream(Stream aDataStream, TPdfSignature aSignature) { EndTextData = TPdfBaseRecord.Coder.GetBytes(TPdfTokens.GetString(TPdfToken.CommandEndText) + TPdfTokens.NewLine); Signature = aSignature; if (Signature != null) { if (Signature.SignerFactory != null) { Signer = Signature.SignerFactory.CreateSigner(); } else { PdfMessages.ThrowException(PdfErr.ErrUnassingedSignerFactory); } } if (Signer == null) { FDataStream = aDataStream; } else { FDataStream = new TSignedStream(aDataStream, Signer); //When signing we use a special stream that will compute the hash. } SignedStream = FDataStream as TSignedStream; }
public TAcroFormRecord(TPdfSignature aSignature) { FId = -1; SigFlags = 0; FieldList = new TAcroFormFieldList(); Signature = aSignature; if (Signature != null) { FieldList.Add(new TAcroSigField(Signature)); SigFlags = 3; } }
internal static int GetSignaturePage(TPdfSignature Signature, int PageCount) { int Result = 0; TPdfVisibleSignature VSig = Signature as TPdfVisibleSignature; if (VSig != null) { Result = VSig.Page - 1; } if (Result < 0 || Result >= PageCount) { Result = PageCount - 1; } return(Result); }
internal TPageInfo GetSigPage(TPdfSignature Signature) { int CurrentPage = TAcroFormRecord.GetSignaturePage(Signature, FList.Count); return(FList[CurrentPage]); }
internal void BeginSave(TPdfStream DataStream, TXRefSection XRef, TPaperDimensions PageSize, TPdfSignature Signature, string aFallbackFontList, TFontEvents FontEvents) { CatalogId = XRef.GetNewObject(DataStream); int PageTreeId = XRef.GetNewObject(DataStream); PageTree = new TPageTreeRecord(PageTreeId, aFallbackFontList, Compress, FontEvents); Info = new TInfoRecord(); AcroForm = new TAcroFormRecord(Signature); Perms = new TPermsRecord(); CreateNewPage(DataStream, XRef, PageSize); }
internal void EndSave(TPdfStream DataStream, TXRefSection XRef, TPdfProperties Properties, TPdfSignature Signature) { FinishPage(DataStream, XRef); TPdfToken P = TPdfToken.None; switch (PageLayout) { case TPageLayout.Outlines: P = TPdfToken.UseOutlinesName; break; case TPageLayout.Thumbs: P = TPdfToken.UseThumbsName; break; case TPageLayout.FullScreen: P = TPdfToken.FullScreenName; break; } int OutlinesId = -1; if (Bookmarks.Count > 0) { OutlinesId = XRef.GetNewObject(DataStream); } TDocumentCatalogRecord.SaveToStream(DataStream, XRef, CatalogId, PageTree.Id, OutlinesId, AcroForm.GetId(DataStream, XRef), Perms.GetId(DataStream, XRef, AcroForm.SignatureFieldId(DataStream, XRef)), P); PageTree.SaveToStream(DataStream, XRef, AcroForm); SaveBookmarks(DataStream, XRef, OutlinesId); Info.SaveToStream(DataStream, XRef, Properties); Perms.SaveToStream(DataStream, XRef, AcroForm.SignatureFieldId(DataStream, XRef)); AcroForm.SaveToStream(DataStream, XRef, PageTree.GetSigPage(Signature)); //We save it last because it needs to keep everything after it in memory for signing it. }
internal TAcroSigField(TPdfSignature aSignature) : base() { Signature = aSignature; }