Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
 public TAcroFormRecord(TPdfSignature aSignature)
 {
     FId       = -1;
     SigFlags  = 0;
     FieldList = new TAcroFormFieldList();
     Signature = aSignature;
     if (Signature != null)
     {
         FieldList.Add(new TAcroSigField(Signature));
         SigFlags = 3;
     }
 }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        internal TPageInfo GetSigPage(TPdfSignature Signature)
        {
            int CurrentPage = TAcroFormRecord.GetSignaturePage(Signature, FList.Count);

            return(FList[CurrentPage]);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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.
        }
Exemplo n.º 7
0
 internal TAcroSigField(TPdfSignature aSignature) : base()
 {
     Signature = aSignature;
 }