diff --git a/src/UglyToad.PdfPig/Writer/PdfMerger.cs b/src/UglyToad.PdfPig/Writer/PdfMerger.cs index c198c9e1..8d6e04cc 100644 --- a/src/UglyToad.PdfPig/Writer/PdfMerger.cs +++ b/src/UglyToad.PdfPig/Writer/PdfMerger.cs @@ -234,13 +234,25 @@ pageReferences.Add(new IndirectReferenceToken(newEntry.Number)); } - var pagesDictionary = new DictionaryToken(new Dictionary + var newPagesNode = new Dictionary { { NameToken.Type, NameToken.Pages }, { NameToken.Kids, new ArrayToken(pageReferences) }, { NameToken.Count, new NumericToken(pageReferences.Count) }, { NameToken.Parent, treeParentReference } - }); + }; + + foreach (var pair in treeNode.NodeDictionary.Data) + { + if (IgnoreKeyForPagesNode(pair)) + { + continue; + } + + newPagesNode[NameToken.Create(pair.Key)] = CopyToken(pair.Value, tokenScanner); + } + + var pagesDictionary = new DictionaryToken(newPagesNode); return context.WriteObject(memory, pagesDictionary, currentNodeReserved); } @@ -342,6 +354,14 @@ stream.Write(bytes, 0, bytes.Length); stream.WriteNewLine(); } + + private static bool IgnoreKeyForPagesNode(KeyValuePair token) + { + return string.Equals(token.Key, NameToken.Type.Data, StringComparison.OrdinalIgnoreCase) + || string.Equals(token.Key, NameToken.Kids.Data, StringComparison.OrdinalIgnoreCase) + || string.Equals(token.Key, NameToken.Count.Data, StringComparison.OrdinalIgnoreCase) + || string.Equals(token.Key, NameToken.Parent.Data, StringComparison.OrdinalIgnoreCase); + } } } } \ No newline at end of file