diff --git a/src/UglyToad.PdfPig.Tests/Parser/Parts/FileHeaderParserTests.cs b/src/UglyToad.PdfPig.Tests/Parser/Parts/FileHeaderParserTests.cs
index 374b8396..6a50d0c6 100644
--- a/src/UglyToad.PdfPig.Tests/Parser/Parts/FileHeaderParserTests.cs
+++ b/src/UglyToad.PdfPig.Tests/Parser/Parts/FileHeaderParserTests.cs
@@ -51,7 +51,7 @@
var result = FileHeaderParser.Parse(scanner.scanner, scanner.bytes, false, log);
Assert.Equal(1.2m, result.Version);
- Assert.Equal(TestEnvironment.IsUnixPlatform ? 7 : 9, result.OffsetInFile);
+ Assert.Equal(TestEnvironment.IsSingleByteNewLine(input) ? 7 : 9, result.OffsetInFile);
}
[Fact]
@@ -66,38 +66,42 @@
[Fact]
public void HeaderPrecededByJunkNonLenientDoesNotThrow()
- {
- var scanner = StringBytesTestConverter.Scanner(@"one
- %PDF-1.2");
+ {
+ var input = @"one
+ %PDF-1.2";
+ var scanner = StringBytesTestConverter.Scanner(input);
var result = FileHeaderParser.Parse(scanner.scanner, scanner.bytes, false, log);
Assert.Equal(1.2m, result.Version);
- Assert.Equal(TestEnvironment.IsUnixPlatform ? 12 : 13, result.OffsetInFile);
+ Assert.Equal(TestEnvironment.IsSingleByteNewLine(input) ? 12 : 13, result.OffsetInFile);
}
[Fact]
public void HeaderPrecededByJunkLenientReads()
- {
- var scanner = StringBytesTestConverter.Scanner(@"one
- %PDF-1.7");
+ {
+ var input = @"one
+ %PDF-1.7";
+ var scanner = StringBytesTestConverter.Scanner(input);
var result = FileHeaderParser.Parse(scanner.scanner, scanner.bytes, true, log);
Assert.Equal(1.7m, result.Version);
- Assert.Equal(TestEnvironment.IsUnixPlatform ? 12 : 13, result.OffsetInFile);
+ Assert.Equal(TestEnvironment.IsSingleByteNewLine(input) ? 12 : 13, result.OffsetInFile);
}
[Fact]
public void HeaderPrecededByJunkDoesNotThrow()
- {
- var scanner = StringBytesTestConverter.Scanner(@"one two
-three %PDF-1.6");
+ {
+ var s = @"one two
+three %PDF-1.6";
+
+ var scanner = StringBytesTestConverter.Scanner(s);
var result = FileHeaderParser.Parse(scanner.scanner, scanner.bytes, true, log);
Assert.Equal(1.6m, result.Version);
- Assert.Equal(TestEnvironment.IsUnixPlatform ? 14 : 15, result.OffsetInFile);
+ Assert.Equal(TestEnvironment.IsSingleByteNewLine(s) ? 14 : 15, result.OffsetInFile);
}
[Fact]
diff --git a/src/UglyToad.PdfPig.Tests/TestEnvironment.cs b/src/UglyToad.PdfPig.Tests/TestEnvironment.cs
index abc44914..17545a27 100644
--- a/src/UglyToad.PdfPig.Tests/TestEnvironment.cs
+++ b/src/UglyToad.PdfPig.Tests/TestEnvironment.cs
@@ -4,6 +4,7 @@
public static class TestEnvironment
{
- public static readonly bool IsUnixPlatform = Environment.NewLine.Length == 1;
+ public static bool IsSingleByteNewLine(string s) => s.IndexOf('\r') < 0;
+
}
}
diff --git a/src/UglyToad.PdfPig/Content/Catalog.cs b/src/UglyToad.PdfPig/Content/Catalog.cs
index 61906602..9bbdd71f 100644
--- a/src/UglyToad.PdfPig/Content/Catalog.cs
+++ b/src/UglyToad.PdfPig/Content/Catalog.cs
@@ -29,7 +29,12 @@
///
/// The page tree for this document containing all pages, page numbers and their dictionaries.
///
- public PageTreeNode PageTree { get; }
+ public PageTreeNode PageTree { get; }
+
+ ///
+ /// Number of discovered pages.
+ ///
+ public int? NumberOfDiscoveredPages => pagesByNumber?.Count;
///
/// Create a new .
diff --git a/src/UglyToad.PdfPig/Content/Pages.cs b/src/UglyToad.PdfPig/Content/Pages.cs
index 8d25b2db..3bd55c09 100644
--- a/src/UglyToad.PdfPig/Content/Pages.cs
+++ b/src/UglyToad.PdfPig/Content/Pages.cs
@@ -21,11 +21,12 @@
this.pdfScanner = pdfScanner ?? throw new ArgumentNullException(nameof(pdfScanner));
Count = catalog.PagesDictionary.GetIntOrDefault(NameToken.Count);
- var CountOfPagesByPagesTree = catalog.PageTree.Children.Count;
- if (Count != CountOfPagesByPagesTree)
+ var CountOfPagesByPagesTree = catalog.PageTree.Children.Count;
+ var numberOfDiscoveredPages = catalog.NumberOfDiscoveredPages;
+ if (numberOfDiscoveredPages is null == false && Count != numberOfDiscoveredPages)
{
- //log.Warning($"Dicrionary Page Count {Count} different to discovered pages {CountOfPagesByPagesTree}. Using {CountOfPagesByPagesTree}.");
- Count = CountOfPagesByPagesTree;
+ //log.Warning($"Dictionary Page Count {Count} different to discovered pages {numberOfDiscoveredPages}. Using {numberOfDiscoveredPages}.");
+ Count = numberOfDiscoveredPages.Value;
}
}