mirror of
https://github.com/UglyToad/PdfPig.git
synced 2025-08-20 09:00:07 +08:00
only treat line breaks and spaces as whitespace for stream content
This commit is contained in:
parent
8ef88bb725
commit
f84caa0493
@ -26,11 +26,8 @@ internal static class XrefStreamParser
|
|||||||
var offsetCorrection = 0L;
|
var offsetCorrection = 0L;
|
||||||
|
|
||||||
bytes.Seek(xrefOffset);
|
bytes.Seek(xrefOffset);
|
||||||
if (!scanner.TryReadToken(out NumericToken _)
|
if (!TryReadStreamObjAt(xrefOffset, scanner, out var dictToken)
|
||||||
|| !scanner.TryReadToken(out NumericToken _)
|
|| dictToken == null)
|
||||||
|| !scanner.TryReadToken(out OperatorToken opToken)
|
|
||||||
|| !ReferenceEquals(opToken, OperatorToken.StartObject)
|
|
||||||
|| !scanner.TryReadToken(out DictionaryToken dictToken))
|
|
||||||
{
|
{
|
||||||
log.Debug($"Did not find the stream at {xrefOffset} attempting correction");
|
log.Debug($"Did not find the stream at {xrefOffset} attempting correction");
|
||||||
var recovered = TryRecoverOffset(fileHeaderOffset, xrefOffset, scanner);
|
var recovered = TryRecoverOffset(fileHeaderOffset, xrefOffset, scanner);
|
||||||
@ -241,12 +238,20 @@ internal static class XrefStreamParser
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
var isWhitespaceActive = ReadHelper.IsWhitespace(bytes.CurrentByte);
|
bool IsStreamWhitespace()
|
||||||
|
{
|
||||||
|
return bytes.CurrentByte == (byte)' '
|
||||||
|
|| bytes.CurrentByte == (byte)'\r'
|
||||||
|
|| bytes.CurrentByte == (byte)'\n';
|
||||||
|
}
|
||||||
|
|
||||||
|
var isWhitespaceActive = IsStreamWhitespace();
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
|
|
||||||
// Normalize whitespace.
|
// Normalize whitespace.
|
||||||
if (ReadHelper.IsWhitespace(bytes.CurrentByte))
|
if (IsStreamWhitespace())
|
||||||
{
|
{
|
||||||
buffer.Add((byte)' ');
|
buffer.Add((byte)' ');
|
||||||
|
|
||||||
@ -271,7 +276,7 @@ internal static class XrefStreamParser
|
|||||||
{
|
{
|
||||||
startMarker = bytes.CurrentOffset;
|
startMarker = bytes.CurrentOffset;
|
||||||
|
|
||||||
isWhitespaceActive = ReadHelper.IsWhitespace(bytes.CurrentByte);
|
isWhitespaceActive = IsStreamWhitespace();
|
||||||
}
|
}
|
||||||
else if (buffer.EndsWith("endobj "))
|
else if (buffer.EndsWith("endobj "))
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user