@@ -136,5 +136,49 @@ public virtual void AnnotationAppearanceTest() {
136
136
pdfDocument . Close ( ) ;
137
137
NUnit . Framework . Assert . AreEqual ( 1 , objs . Count ) ;
138
138
}
139
+
140
+ [ NUnit . Framework . Test ]
141
+ public virtual void SetModifiedFlagTest ( ) {
142
+ TestSetModified ( false ) ;
143
+ }
144
+
145
+ [ NUnit . Framework . Test ]
146
+ public virtual void SetModifiedFlagAppendModeTest ( ) {
147
+ TestSetModified ( true ) ;
148
+ }
149
+
150
+ private static void TestSetModified ( bool isAppendMode ) {
151
+ String [ ] expectedKeys = new String [ ] { "new_key1" , "new_key2" , "new_key3" } ;
152
+ MemoryStream sourceFile = CreateDocumentInMemory ( ) ;
153
+ MemoryStream modifiedFile = new MemoryStream ( ) ;
154
+ PdfReader reader = new PdfReader ( new MemoryStream ( sourceFile . ToArray ( ) ) ) ;
155
+ PdfDocument pdfDoc = isAppendMode ? new PdfDocument ( reader , new PdfWriter ( modifiedFile ) , new StampingProperties
156
+ ( ) . UseAppendMode ( ) ) : new PdfDocument ( reader , new PdfWriter ( modifiedFile ) ) ;
157
+ PdfNameTree nameTree = pdfDoc . GetCatalog ( ) . GetNameTree ( PdfName . Dests ) ;
158
+ IDictionary < String , PdfObject > names = nameTree . GetNames ( ) ;
159
+ List < String > keys = new List < String > ( names . Keys ) ;
160
+ for ( int i = 0 ; i < keys . Count ; i ++ ) {
161
+ names . Put ( expectedKeys [ i ] , names . Get ( keys [ i ] ) ) ;
162
+ names . JRemove ( keys [ i ] ) ;
163
+ }
164
+ nameTree . SetModified ( ) ;
165
+ pdfDoc . Close ( ) ;
166
+ reader = new PdfReader ( new MemoryStream ( modifiedFile . ToArray ( ) ) ) ;
167
+ pdfDoc = new PdfDocument ( reader ) ;
168
+ nameTree = pdfDoc . GetCatalog ( ) . GetNameTree ( PdfName . Dests ) ;
169
+ ICollection < String > actualKeys = nameTree . GetNames ( ) . Keys ;
170
+ NUnit . Framework . Assert . AreEqual ( expectedKeys , actualKeys . ToArray ( ) ) ;
171
+ }
172
+
173
+ private static MemoryStream CreateDocumentInMemory ( ) {
174
+ MemoryStream boas = new MemoryStream ( ) ;
175
+ PdfDocument pdfDoc = new PdfDocument ( new PdfWriter ( boas ) ) ;
176
+ pdfDoc . AddNewPage ( ) ;
177
+ pdfDoc . GetCatalog ( ) . GetNameTree ( PdfName . Dests ) . AddEntry ( "key1" , new PdfArray ( new float [ ] { 0 , 0 , 0 , 0 } ) ) ;
178
+ pdfDoc . GetCatalog ( ) . GetNameTree ( PdfName . Dests ) . AddEntry ( "key2" , new PdfArray ( new float [ ] { 1 , 1 , 1 , 1 } ) ) ;
179
+ pdfDoc . GetCatalog ( ) . GetNameTree ( PdfName . Dests ) . AddEntry ( "key3" , new PdfArray ( new float [ ] { 2 , 2 , 2 , 2 } ) ) ;
180
+ pdfDoc . Close ( ) ;
181
+ return boas ;
182
+ }
139
183
}
140
184
}
0 commit comments