public override void WriteFont(TPdfStream DataStream, TXRefSection XRef) { base.WriteFont(DataStream, XRef); FontDescriptorId = XRef.GetNewObject(DataStream); //Font descriptor. CIDFontId = XRef.GetNewObject(DataStream); //CID Font. ToUnicodeId = XRef.GetNewObject(DataStream); //ToUnicode ToUnicodeLenId = XRef.GetNewObject(DataStream); //ToUnicodeLength }
public void WriteImage(TPdfStream DataStream, TXRefSection XRef) { TPdfBaseRecord.Write(DataStream, TPdfTokens.GetString(TPdfToken.ImgPrefix) + Id.ToString(CultureInfo.InvariantCulture) + " "); ImgObjId = XRef.GetNewObject(DataStream); TIndirectRecord.CallObj(DataStream, ImgObjId); if (FSMask != null) { SMaskId = XRef.GetNewObject(DataStream); } }
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); }
private void CreateNewPage(TPdfStream DataStream, TXRefSection XRef, TPaperDimensions PageSize) { int PageId = XRef.GetNewObject(DataStream); int ContentId = XRef.GetNewObject(DataStream); PageTree.AddPage(PageId, ContentId, PageSize); TIndirectRecord.SaveHeader(DataStream, ContentId); LengthId = XRef.GetNewObject(DataStream); TStreamRecord.BeginSave(DataStream, LengthId, Compress); DataStream.Compress = Compress; StartStream = DataStream.Position; }
internal void SaveBookmarks(TPdfStream DataStream, TXRefSection XRef, int OutlinesId) { if (OutlinesId < 0) { return; } int FirstId = -1; int LastId = -1; int NextId = XRef.GetNewObject(DataStream); int AllOpenCount = 0; SaveBookmarkObjects(DataStream, XRef, Bookmarks, OutlinesId, NextId, ref FirstId, ref LastId, ref AllOpenCount); XRef.SetObjectOffset(OutlinesId, DataStream); TIndirectRecord.SaveHeader(DataStream, OutlinesId); TDictionaryRecord.BeginDictionary(DataStream); if (FirstId >= 0) { TDictionaryRecord.SaveKey(DataStream, TPdfToken.FirstName, TIndirectRecord.GetCallObj(FirstId)); TDictionaryRecord.SaveKey(DataStream, TPdfToken.LastName, TIndirectRecord.GetCallObj(LastId)); //LastId must be positive if FirstId is positive. } if (AllOpenCount > 0) { TDictionaryRecord.SaveKey(DataStream, TPdfToken.CountName, AllOpenCount); } TDictionaryRecord.EndDictionary(DataStream); TIndirectRecord.SaveTrailer(DataStream); }
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. }
public void WriteGStateObject(TPdfStream DataStream, TXRefSection XRef) { XRef.SetObjectOffset(GStateObjId, DataStream); TIndirectRecord.SaveHeader(DataStream, GStateObjId); TDictionaryRecord.BeginDictionary(DataStream); TDictionaryRecord.SaveKey(DataStream, TPdfToken.TypeName, TPdfTokens.GetString(TPdfToken.ExtGStateName)); TDictionaryRecord.SaveKey(DataStream, Operator, PdfConv.CoordsToString(Alpha / 255.0)); if (SMask != null) { SMaskObjId = XRef.GetNewObject(DataStream); TDictionaryRecord.WriteLine(DataStream, TPdfTokens.GetString(TPdfToken.SMaskName)); TDictionaryRecord.BeginDictionary(DataStream); TDictionaryRecord.SaveKey(DataStream, TPdfToken.TypeName, TPdfTokens.GetString(TPdfToken.MaskName)); TDictionaryRecord.SaveKey(DataStream, TPdfToken.SName, TPdfTokens.GetString(TPdfToken.AlphaName)); TDictionaryRecord.Write(DataStream, TPdfTokens.GetString(TPdfToken.GName) + " "); TIndirectRecord.CallObj(DataStream, SMaskObjId); TDictionaryRecord.EndDictionary(DataStream); } TDictionaryRecord.EndDictionary(DataStream); TIndirectRecord.SaveTrailer(DataStream); if (SMask != null) { WriteSMaskObject(DataStream, XRef); } }
internal int GetFunctionObjId(TPdfStream DataStream, TXRefSection XRef) { if (FunctionObjId == 0) { FunctionObjId = XRef.GetNewObject(DataStream); } return(FunctionObjId); }
internal int GetSigDictionaryId(TPdfStream DataStream, TXRefSection XRef) { if (SigDictionaryId < 0) { SigDictionaryId = XRef.GetNewObject(DataStream); } return(SigDictionaryId); }
internal int GetStreamId(TPdfStream DataStream, TXRefSection XRef) { if (ObjectId == -1) { ObjectId = XRef.GetNewObject(DataStream); } return(ObjectId); }
public static int WriteColorSpace(TPdfStream DataStream, TXRefSection XRef) { int Result = XRef.GetNewObject(DataStream); TPdfBaseRecord.Write(DataStream, TPdfTokens.GetString(TPdfToken.PatternColorSpacePrefix) + " "); TIndirectRecord.CallObj(DataStream, Result); return(Result); }
private static int SaveAPRef(TPdfStream DataStream, TXRefSection XRef) { //AP call int APId = XRef.GetNewObject(DataStream); Write(DataStream, TPdfTokens.GetString(TPdfToken.APName)); BeginDictionary(DataStream); SaveKey(DataStream, TPdfToken.NName, TIndirectRecord.GetCallObj(APId)); EndDictionary(DataStream); return(APId); }
private static void SaveFRM(TPdfStream DataStream, TXRefSection XRef, TPdfVisibleSignature VSig, int FRMId) { string StreamContents = "q 1 0 0 1 0 0 cm /n0 Do Q" + TPdfTokens.NewLine + "q 1 0 0 1 0 0 cm /n2 Do Q"; XRef.SetObjectOffset(FRMId, DataStream); TIndirectRecord.SaveHeader(DataStream, FRMId); BeginDictionary(DataStream); WriteCommonXObject(DataStream, VSig.Rect, StreamContents); int n0Id = XRef.GetNewObject(DataStream); int n2Id = XRef.GetNewObject(DataStream); SaveProcSet(DataStream, XRef, false); SaveResourcesSecondXObject(DataStream, n0Id, n2Id); EndDictionary(DataStream); WriteStream(DataStream, StreamContents); TIndirectRecord.SaveTrailer(DataStream); Saven0(DataStream, XRef, VSig, n0Id); Saven2(DataStream, XRef, VSig, n2Id); }
internal virtual int GetId(TPdfStream DataStream, TXRefSection XRef, bool OnlySignatures) { if (OnlySignatures) { return(-1); } if (FId < 0) { FId = XRef.GetNewObject(DataStream); } return(FId); }
internal int GetId(TPdfStream DataStream, TXRefSection XRef, int MDPId) { if (MDPId < 0) { return(-1); } if (PermsId < 0) { PermsId = XRef.GetNewObject(DataStream); } return(PermsId); }
internal int GetId(TPdfStream DataStream, TXRefSection XRef) { if (FieldList.Count <= 0) { return(-1); //We don't have any forms. } if (FId < 0) { FId = XRef.GetNewObject(DataStream); } ; return(FId); }
internal void SaveToStream(TPdfStream DataStream, TXRefSection XRef, TPdfProperties p) { InfoId = XRef.GetNewObject(DataStream); TIndirectRecord.SaveHeader(DataStream, InfoId); BeginDictionary(DataStream); if (p.Title != null && p.Title.Length > 0) { SaveUnicodeKey(DataStream, TPdfToken.TitleName, p.Title); } if (p.Author != null && p.Author.Length > 0) { SaveUnicodeKey(DataStream, TPdfToken.AuthorName, p.Author); } if (p.Subject != null && p.Subject.Length > 0) { SaveUnicodeKey(DataStream, TPdfToken.SubjectName, p.Subject); } if (p.Keywords != null && p.Keywords.Length > 0) { SaveUnicodeKey(DataStream, TPdfToken.KeywordsName, p.Keywords); } if (p.Creator != null && p.Creator.Length > 0) { SaveUnicodeKey(DataStream, TPdfToken.CreatorName, p.Creator); } string Producer = TPdfTokens.GetString(TPdfToken.Producer); if (!PdfWriter.FTesting) { Producer += Assembly.GetExecutingAssembly().GetName().Version.ToString(); } if (Producer != null && Producer.Length > 0) { SaveUnicodeKey(DataStream, TPdfToken.ProducerName, Producer); } DateTime dt = DateTime.Now; SaveKey(DataStream, TPdfToken.CreationDateName, TDateRecord.GetDate(dt)); EndDictionary(DataStream); TIndirectRecord.SaveTrailer(DataStream); }
private static void SaveAPObj(TPdfStream DataStream, TXRefSection XRef, int APId, TPdfVisibleSignature VSig) { string StreamContents = "q 1 0 0 1 0 0 cm /FRM Do Q"; //AP Object XRef.SetObjectOffset(APId, DataStream); TIndirectRecord.SaveHeader(DataStream, APId); BeginDictionary(DataStream); WriteCommonXObject(DataStream, VSig.Rect, StreamContents); int FRMId = XRef.GetNewObject(DataStream); SaveProcSet(DataStream, XRef, false); SaveResourcesFirstXObject(DataStream, XRef, FRMId); EndDictionary(DataStream); WriteStream(DataStream, StreamContents); TIndirectRecord.SaveTrailer(DataStream); SaveFRM(DataStream, XRef, VSig, FRMId); }
internal void WriteFont(TPdfStream DataStream, TXRefSection XRef, bool Compress) { if (AlreadySaved || ObjectId == -1) { return; } AlreadySaved = true; int EmbeddedLenId = XRef.GetNewObject(DataStream); //Stream Length XRef.SetObjectOffset(ObjectId, DataStream); TIndirectRecord.SaveHeader(DataStream, ObjectId); byte[] FontData = TrueTypeData.SubsetFontData(SubsetCMap); TStreamRecord.BeginSave(DataStream, EmbeddedLenId, Compress, FontData.Length); long StartStream = DataStream.Position; bool Compressing = DataStream.Compress; try { DataStream.Compress = Compress; DataStream.Write(FontData); } finally { DataStream.Compress = Compressing; } long EndStream = DataStream.Position; TStreamRecord.EndSave(DataStream); TIndirectRecord.SaveTrailer(DataStream); XRef.SetObjectOffset(EmbeddedLenId, DataStream); TIndirectRecord.SaveHeader(DataStream, EmbeddedLenId); TPdfBaseRecord.WriteLine(DataStream, (EndStream - StartStream).ToString(CultureInfo.InvariantCulture)); TIndirectRecord.SaveTrailer(DataStream); }
public override void WriteFont(TPdfStream DataStream, TXRefSection XRef) { base.WriteFont(DataStream, XRef); FontDescriptorId = XRef.GetNewObject(DataStream); //Font descriptor. }
public void WritePattern(TPdfStream DataStream, TXRefSection XRef) { TPdfBaseRecord.Write(DataStream, TPdfTokens.GetString(PatternPrefix) + PatternId.ToString(CultureInfo.InvariantCulture) + " "); PatternObjId = XRef.GetNewObject(DataStream); TIndirectRecord.CallObj(DataStream, PatternObjId); }
internal override int GetId(TPdfStream DataStream, TXRefSection XRef) { base.GetId(DataStream, XRef); ActionId = XRef.GetNewObject(DataStream); return(FId); }
internal virtual int GetId(TPdfStream DataStream, TXRefSection XRef) { FId = XRef.GetNewObject(DataStream); return(FId); }
public void WriteGState(TPdfStream DataStream, TXRefSection XRef) { TPdfBaseRecord.Write(DataStream, GStateName + " "); GStateObjId = XRef.GetNewObject(DataStream); TIndirectRecord.CallObj(DataStream, GStateObjId); }
internal void SaveBookmarkObjects(TPdfStream DataStream, TXRefSection XRef, TBookmarkList bmks, int ParentId, int ObjectId, ref int FirstId, ref int LastId, ref int AllOpenCount) { int PreviousId = -1; for (int i = 0; i < bmks.Count; i++) { TBookmark b = bmks[i]; AllOpenCount++; int NextId = -1; if (i < bmks.Count - 1) { NextId = XRef.GetNewObject(DataStream); } LastId = ObjectId; if (FirstId == -1) { FirstId = ObjectId; } int FirstChildId = -1; int LastChildId = -1; int ChildOpenCount = 0; if (b.FChildren.Count > 0) { FirstChildId = XRef.GetNewObject(DataStream); int ChildLastId = -1; SaveBookmarkObjects(DataStream, XRef, b.FChildren, ObjectId, FirstChildId, ref FirstId, ref ChildLastId, ref ChildOpenCount); if (!b.ChildrenCollapsed) { AllOpenCount += ChildOpenCount; } LastChildId = ChildLastId; } XRef.SetObjectOffset(ObjectId, DataStream); TIndirectRecord.SaveHeader(DataStream, ObjectId); TDictionaryRecord.BeginDictionary(DataStream); TDictionaryRecord.SaveUnicodeKey(DataStream, TPdfToken.TitleName, b.Title); TDictionaryRecord.SaveKey(DataStream, TPdfToken.ParentName, TIndirectRecord.GetCallObj(ParentId)); if (PreviousId >= 0) { TDictionaryRecord.SaveKey(DataStream, TPdfToken.PrevName, TIndirectRecord.GetCallObj(PreviousId)); } if (NextId >= 0) { TDictionaryRecord.SaveKey(DataStream, TPdfToken.NextName, TIndirectRecord.GetCallObj(NextId)); } if (FirstChildId >= 0) { TDictionaryRecord.SaveKey(DataStream, TPdfToken.FirstName, TIndirectRecord.GetCallObj(FirstChildId)); } if (LastChildId >= 0) { TDictionaryRecord.SaveKey(DataStream, TPdfToken.LastName, TIndirectRecord.GetCallObj(LastChildId)); } if (ChildOpenCount > 0) { if (b.ChildrenCollapsed) { TDictionaryRecord.SaveKey(DataStream, TPdfToken.CountName, -ChildOpenCount); } else { TDictionaryRecord.SaveKey(DataStream, TPdfToken.CountName, ChildOpenCount); } } if (b.Destination != null) { TDictionaryRecord.SaveKey(DataStream, TPdfToken.DestName, GetDestStr(b.Destination)); } if (b.TextColor.R != 0 || b.TextColor.G != 0 || b.TextColor.B != 0) { TDictionaryRecord.SaveKey(DataStream, TPdfToken.CName, TPdfTokens.GetString(TPdfToken.OpenArray) + PdfConv.ToString(b.TextColor) + TPdfTokens.GetString(TPdfToken.CloseArray)); } if (b.TextStyle != TBookmarkStyle.None) { int k = 0; if ((b.TextStyle & TBookmarkStyle.Italic) != 0) { k |= 1; } if ((b.TextStyle & TBookmarkStyle.Bold) != 0) { k |= 2; } TDictionaryRecord.SaveKey(DataStream, TPdfToken.FName, k); } TDictionaryRecord.EndDictionary(DataStream); TIndirectRecord.SaveTrailer(DataStream); PreviousId = ObjectId; ObjectId = NextId; } }
public virtual void WriteFont(TPdfStream DataStream, TXRefSection XRef) { TPdfBaseRecord.Write(DataStream, TPdfTokens.GetString(TPdfToken.FontPrefix) + Id.ToString(CultureInfo.InvariantCulture) + " "); FontObjId = XRef.GetNewObject(DataStream); TIndirectRecord.CallObj(DataStream, FontObjId); }