ststeiger / PdfSharpCore

Port of the PdfSharp library to .NET Core - largely removed GDI+ (only missing GetFontData - which can be replaced with freetype2)
Other
1.05k stars 234 forks source link

System.FormatException : Input string was not in a correct format. #352

Open maciejsobocinski opened 1 year ago

maciejsobocinski commented 1 year ago

Hi,

I'm getting the following exception when trying to open certain Pdfs:

System.FormatException : Input string was not in a correct format. at System.Number.ThrowOverflowOrFormatException(ParsingStatus status, TypeCode type) at PdfSharpCore.Pdf.IO.Lexer.ScanNumber() at PdfSharpCore.Pdf.IO.Lexer.ScanNextToken() at PdfSharpCore.Pdf.IO.Parser.ParseObject(Symbol stop) at PdfSharpCore.Pdf.IO.Parser.ReadArray(PdfArray array, Boolean includeReferences) at PdfSharpCore.Pdf.IO.Parser.ParseObject(Symbol stop) at PdfSharpCore.Pdf.IO.Parser.ReadDictionary(PdfDictionary dict, Boolean includeReferences) at PdfSharpCore.Pdf.IO.Parser.ReadObject(PdfObject pdfObject, PdfObjectID objectID, Boolean includeReferences, Boolean fromObjecStream) at PdfSharpCore.Pdf.IO.PdfReader.Open(Stream stream, String password, PdfDocumentOpenMode openmode, PdfPasswordProvider passwordProvider, PdfReadAccuracy accuracy) at PdfSharpCore.Pdf.IO.PdfReader.Open(Stream stream, String password, PdfDocumentOpenMode openmode, PdfReadAccuracy accuracy) at PdfSharpCore.Pdf.IO.PdfReader.Open(Stream stream, PdfDocumentOpenMode openmode)

Stepping into PdfSharp it fails on this line inside of Lexer.cs:

long num = long.Parse(this._token.ToString(), (IFormatProvider) CultureInfo.InvariantCulture);

_token at the time is "-". _curChar is "110 'n'" which breaks out of the while (true) loop leaving _token not a valid long

Thanks!

Excellent18rus commented 6 months ago

Ветку поднимаю, проблема один в один хочу открыть PDF из Stream , а он мне ошибку.

var pdf = PdfSharpCore.Pdf.IO.PdfReader.Open(body, PdfSharpCore.Pdf.IO.PdfDocumentOpenMode.Import);

{"type":"System.FormatException", "m":"Input string was not in a correct format.", "stack":"at System.Number.ThrowOverflowOrFormatException(ParsingStatus status, TypeCode type)\r\n at PdfSharpCore.Pdf.IO.Lexer.ScanNumber()\r\n at PdfSharpCore.Pdf.IO.Lexer.ScanNextToken()\r\n at PdfSharpCore.Pdf.IO.Parser.ReadInteger(Boolean canBeIndirect)\r\n at PdfSharpCore.Pdf.IO.Parser.ReadInteger()\r\n at PdfSharpCore.Pdf.IO.Parser.ReadObjectNumber(Int32 position)\r\n at PdfSharpCore.Pdf.IO.Parser.ReadXRefStream(PdfCrossReferenceTable xrefTable)\r\n at PdfSharpCore.Pdf.IO.Parser.ReadXRefTableAndTrailer(PdfCrossReferenceTable xrefTable, PdfReadAccuracy accuracy)\r\n at PdfSharpCore.Pdf.IO.Parser.ReadTrailer(PdfReadAccuracy accuracy)\r\n at PdfSharpCore.Pdf.IO.PdfReader.Open(Stream stream, String password, PdfDocumentOpenMode openmode, PdfPasswordProvider passwordProvider, PdfReadAccuracy accuracy)\r\n at PdfSharpCore.Pdf.IO.PdfReader.Open(Stream stream, String password, PdfDocumentOpenMode openmode, PdfReadAccuracy accuracy)\r\n at PdfSharpCore.Pdf.IO.PdfReader.Open(Stream stream, PdfDocumentOpenMode openmode)\r\n

была версия библиотки 1.3.45.0, обновил до 1.3.63 net.standart 2.0 ситуация не изменилась.