public override IndirectReferenceToken WriteToken(IToken token) { if (!Initialized) { InitializePdf(DefaultVersion); } ms.SetLength(0); TokenWriter.WriteToken(token, ms); var contents = ms.ToArray(); if (AttemptDeduplication && hashes.TryGetValue(contents, out var value)) { return(value); } var ir = ReserveObjectNumber(); if (AttemptDeduplication) { hashes.Add(contents, ir); } offsets.Add(ir.Data, Stream.Position); TokenWriter.WriteObject(ir.Data.ObjectNumber, ir.Data.Generation, contents, Stream); return(ir); }
public override IndirectReferenceToken WriteToken(IToken token, IndirectReferenceToken indirectReference) { if (!Initialized) { InitializePdf(DefaultVersion); } ms.SetLength(0); TokenWriter.WriteToken(token, ms); var contents = ms.ToArray(); hashes.Add(contents, indirectReference); offsets.Add(indirectReference.Data, Stream.Position); TokenWriter.WriteObject(indirectReference.Data.ObjectNumber, indirectReference.Data.Generation, contents, Stream); return(indirectReference); }