Skip to content

Commit 6bf4ecf

Browse files
borislucas-devBezrukovM
authored andcommitted
Ignore invalid catalog version on document load
Some invalid values in the optional Version field of the Catalog caused an exception on PDFDocument construction. It is now ignored and the document is created successfully. Closes 65.
1 parent 9c36eb2 commit 6bf4ecf

File tree

3 files changed

+14
-3
lines changed

3 files changed

+14
-3
lines changed

kernel/src/main/java/com/itextpdf/kernel/pdf/PdfDocument.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1941,9 +1941,12 @@ protected void open(PdfVersion newPdfVersion) {
19411941
if (catalog.getPdfObject().containsKey(PdfName.Version)) {
19421942
// The version of the PDF specification to which the document conforms (for example, 1.4)
19431943
// if later than the version specified in the file's header
1944-
PdfVersion catalogVersion = PdfVersion.fromPdfName(catalog.getPdfObject().getAsName(PdfName.Version));
1945-
if (catalogVersion.compareTo(pdfVersion) > 0) {
1946-
pdfVersion = catalogVersion;
1944+
try {
1945+
PdfVersion catalogVersion = PdfVersion.fromPdfName(catalog.getPdfObject().getAsName(PdfName.Version));
1946+
if (catalogVersion.compareTo(pdfVersion) > 0) {
1947+
pdfVersion = catalogVersion;
1948+
}
1949+
} catch (IllegalArgumentException ignored){
19471950
}
19481951
}
19491952
PdfStream xmpMetadataStream = catalog.getPdfObject().getAsStream(PdfName.Metadata);

kernel/src/test/java/com/itextpdf/kernel/pdf/PdfDocumentTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -524,6 +524,14 @@ public void removePageWithInvalidOutlineTest() throws IOException, InterruptedEx
524524
Assert.assertNull(new CompareTool().compareByContent(destination, cmp, DESTINATION_FOLDER, "diff_"));
525525
}
526526

527+
@Test
528+
public void openDocumentWithInvalidCatalogVersionTest() throws IOException {
529+
PdfReader reader = new PdfReader(SOURCE_FOLDER + "sample-with-invalid-catalog-version.pdf");
530+
PdfDocument pdfDocument = new PdfDocument(reader);
531+
Assert.assertNotNull(pdfDocument);
532+
}
533+
534+
527535
private static class IgnoreTagStructurePdfDocument extends PdfDocument {
528536

529537
IgnoreTagStructurePdfDocument(PdfReader reader) {

0 commit comments

Comments
 (0)