@@ -554,6 +554,63 @@ public virtual void ReadSinglePageTest() {
554
554
document . Close ( ) ;
555
555
}
556
556
557
+ [ NUnit . Framework . Test ]
558
+ public virtual void ImplicitPagesTreeRebuildingTest ( ) {
559
+ String inFileName = sourceFolder + "implicitPagesTreeRebuilding.pdf" ;
560
+ String outFileName = destinationFolder + "implicitPagesTreeRebuilding.pdf" ;
561
+ String cmpFileName = sourceFolder + "cmp_implicitPagesTreeRebuilding.pdf" ;
562
+ PdfDocument pdfDocument = new PdfDocument ( new PdfReader ( inFileName ) , new PdfWriter ( outFileName ) ) ;
563
+ pdfDocument . Close ( ) ;
564
+ NUnit . Framework . Assert . IsNull ( new CompareTool ( ) . CompareByContent ( outFileName , cmpFileName , destinationFolder
565
+ ) ) ;
566
+ }
567
+
568
+ [ NUnit . Framework . Test ]
569
+ [ LogMessage ( iText . IO . LogMessageConstant . PAGE_TREE_IS_BROKEN_FAILED_TO_RETRIEVE_PAGE ) ]
570
+ public virtual void BrokenPageTreeWithExcessiveLastPageTest ( ) {
571
+ String inFileName = sourceFolder + "brokenPageTreeNullLast.pdf" ;
572
+ PdfDocument pdfDocument = new PdfDocument ( new PdfReader ( inFileName ) ) ;
573
+ IList < int > pages = JavaUtil . ArraysAsList ( 4 ) ;
574
+ ICollection < int > nullPages = new HashSet < int > ( pages ) ;
575
+ FindAndAssertNullPages ( pdfDocument , nullPages ) ;
576
+ }
577
+
578
+ [ NUnit . Framework . Test ]
579
+ [ LogMessage ( iText . IO . LogMessageConstant . PAGE_TREE_IS_BROKEN_FAILED_TO_RETRIEVE_PAGE ) ]
580
+ public virtual void BrokenPageTreeWithExcessiveMiddlePageTest ( ) {
581
+ String inFileName = sourceFolder + "brokenPageTreeNullMiddle.pdf" ;
582
+ PdfDocument pdfDocument = new PdfDocument ( new PdfReader ( inFileName ) ) ;
583
+ IList < int > pages = JavaUtil . ArraysAsList ( 3 ) ;
584
+ ICollection < int > nullPages = new HashSet < int > ( pages ) ;
585
+ FindAndAssertNullPages ( pdfDocument , nullPages ) ;
586
+ }
587
+
588
+ [ NUnit . Framework . Test ]
589
+ [ LogMessage ( iText . IO . LogMessageConstant . PAGE_TREE_IS_BROKEN_FAILED_TO_RETRIEVE_PAGE , Count = 7 ) ]
590
+ public virtual void BrokenPageTreeWithExcessiveMultipleNegativePagesTest ( ) {
591
+ String inFileName = sourceFolder + "brokenPageTreeNullMultipleSequence.pdf" ;
592
+ PdfDocument pdfDocument = new PdfDocument ( new PdfReader ( inFileName ) ) ;
593
+ IList < int > pages = JavaUtil . ArraysAsList ( 2 , 3 , 4 , 6 , 7 , 8 , 9 ) ;
594
+ ICollection < int > nullPages = new HashSet < int > ( pages ) ;
595
+ FindAndAssertNullPages ( pdfDocument , nullPages ) ;
596
+ }
597
+
598
+ [ NUnit . Framework . Test ]
599
+ [ LogMessage ( iText . IO . LogMessageConstant . PAGE_TREE_IS_BROKEN_FAILED_TO_RETRIEVE_PAGE , Count = 2 ) ]
600
+ public virtual void BrokenPageTreeWithExcessiveRangeNegativePagesTest ( ) {
601
+ String inFileName = sourceFolder + "brokenPageTreeNullRangeNegative.pdf" ;
602
+ PdfDocument pdfDocument = new PdfDocument ( new PdfReader ( inFileName ) ) ;
603
+ IList < int > pages = JavaUtil . ArraysAsList ( 2 , 4 ) ;
604
+ ICollection < int > nullPages = new HashSet < int > ( pages ) ;
605
+ FindAndAssertNullPages ( pdfDocument , nullPages ) ;
606
+ }
607
+
608
+ private static void FindAndAssertNullPages ( PdfDocument pdfDocument , ICollection < int > nullPages ) {
609
+ foreach ( int ? e in nullPages ) {
610
+ NUnit . Framework . Assert . IsNull ( pdfDocument . GetPage ( ( int ) e ) ) ;
611
+ }
612
+ }
613
+
557
614
private int GetAmountOfReadPages ( PdfArray pageIndRefArray ) {
558
615
int amountOfLoadedPages = 0 ;
559
616
for ( int i = 0 ; i < pageIndRefArray . Size ( ) ; i ++ ) {
0 commit comments