You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
PdfReaderException "Name expected" in ReadDictionary on invalid pdfTeX-generated PDFs containing dictionary entries without valid key #376
Note: The title reflects the initial hypothesis. The actual root cause is not related to /DA annotation entries or URI strings with unescaped parentheses. The real trigger is bare string values with no preceding /Key in the pdfTeX document info dictionary (PTEX.FullBanner). See the root cause description below.
Expected Behavior
PdfReader.Open(stream, PdfDocumentOpenMode.Modify) and PdfReader.Open(stream, PdfDocumentOpenMode.Import) should successfully open PDF 1.3 files produced by pdfTeX/TeX Live that include a document info dictionary containing bare string values without a preceding /Key name - a pattern pdfTeX has emitted for decades via its PTEX.FullBanner metadata entry.
These files open without error in Adobe Acrobat, Chrome, Edge, and every other PDF reader tested.
Actual Behavior
Both open modes throw PdfReaderException: Name expected. during Parser.ReadDictionary, called from Parser.ReadAllIndirectObjects. The exception is thrown when parsing the document info dictionary, which contains (PTEX.FullBanner) and a following string as bare values with no preceding /Name key:
<< /ModDate (D:20260101120000Z) /Creator (LaTeX with hyperref)
/CreationDate (D:20260101120000Z) (PTEX.FullBanner)
(This is pdfTeX, Version 3.141592653-2.6-1.40.29 \(TeX Live 2026\) kpathsea version 6.4.2)
>>
Per PDF spec §7.3.7, a dictionary entry requires a name key followed by a value. These orphaned strings are non-conforming, but all other readers silently skip them. PdfSharp throws instead.
No option in PdfReaderOptions suppresses this error, so there is no workaround within the library.
Affected versions: 6.2.4 and 7.0.0-preview-1.
Stack trace:
at PdfSharp.Internal.ParserDiagnostics.ThrowParserException(String message)
at PdfSharp.Pdf.IO.Parser.ReadDictionary(PdfDictionary dict, Boolean includeReferences)
at PdfSharp.Pdf.IO.Parser.ReadObjectInternal(...)
at PdfSharp.Pdf.IO.Parser.ReadIndirectObject(...)
at PdfSharp.Pdf.IO.Parser.ReadAllIndirectObjects()
at PdfSharp.Pdf.IO.PdfReader.OpenFromStream(...)
at PdfSharp.Pdf.IO.PdfReader.Open(Stream stream, PdfDocumentOpenMode openMode, PdfReaderOptions options)
Steps to Reproduce the Behavior
usingPdfSharp.Pdf.IO;usingvarstream=File.OpenRead("reproducer.pdf");// attachedusingvarpdf=PdfReader.Open(stream,PdfDocumentOpenMode.Import);// throws: Name expected
The attached reproducer.pdf is a minimal self-contained file (5 objects, ~600 bytes) with no confidential content. It contains a single readable page with descriptive text explaining the bug, and a document info dictionary that matches the exact pdfTeX output pattern.
Suggested fix: When ReadDictionary encounters a token that is not a name where a key is expected, skip to the next / or >> boundary and continue rather than throwing unconditionally. Alternatively, expose a PdfReaderOptions.MalformedDictionaryEntry suppression flag analogous to the existing ReferenceToUndefinedObject option.
changed the title [-]PdfReaderException "Name expected" in ReadDictionary on valid pdfTeX-generated PDFs containing /DA annotation entries`[/-][+]PdfReaderException "Name expected" in ReadDictionary on invalid pdfTeX-generated PDFs containing dictionary entries without valid key[/+]on Jul 16, 2026
Activity
[-]PdfReaderException "Name expected" in ReadDictionary on valid pdfTeX-generated PDFs containing /DA annotation entries`[/-][+]PdfReaderException "Name expected" in ReadDictionary on invalid pdfTeX-generated PDFs containing dictionary entries without valid key[/+]