ladybird/Userland/Libraries/LibPDF
Rodrigo Tobar a533ea7ae6 LibPDF: Improve stream parsing
When parsing streams we rely on a /Length item being defined in the
stream's dictionary to know how much data comprises the stream. Its
value is usually a direct value, but it can be indirect. There was
however a contradiction in the code: the condition that allowed it to
read and use the /Length value required it to be a direct value, but the
actual code using the value would have worked with indirect ones. This
meant that indirect /Length values triggered the fallback, "manual"
stream parsing code.

On the other hand, this latter code was also buggy, because it relied on
the "endstream" keyword to appear on a separate line, which isn't always
the case.

This commit both fixes the bug in the manual stream parsing scenario,
while also allowing for indirect /Length values to be used to parse
streams more directly and avoid the manual approach. The main caveat to
this second change is that for a brief period of time the Document is
not able to resolve references (i.e., before the xref table itself is
not parsed). Any parsing happening before that (e..g, the linearization
dictionary) must therefore use the manual stream parsing approach.
2023-02-08 19:47:15 +01:00
..
Fonts LibPDF: Simplify Encoding to align with simple font requirements 2023-02-02 14:50:38 +01:00
CMakeLists.txt LibPDF: Add initial CFF parsing 2023-01-25 15:40:11 +01:00
ColorSpace.cpp AK+Everywhere: Rename FlyString to DeprecatedFlyString 2023-01-09 23:00:24 +00:00
ColorSpace.h AK+Everywhere: Rename FlyString to DeprecatedFlyString 2023-01-09 23:00:24 +00:00
CommonNames.cpp AK+Everywhere: Rename FlyString to DeprecatedFlyString 2023-01-09 23:00:24 +00:00
CommonNames.h LibPDF: Load Type1C fonts when found 2023-01-25 15:40:11 +01:00
Document.cpp AK+Everywhere: Rename FlyString to DeprecatedFlyString 2023-01-09 23:00:24 +00:00
Document.h LibPDF: Improve stream parsing 2023-02-08 19:47:15 +01:00
DocumentParser.cpp AK: Remove the fallible constructor from FixedMemoryStream 2023-02-08 17:44:32 +00:00
DocumentParser.h LibPDF: Improve stream parsing 2023-02-08 19:47:15 +01:00
Encoding.cpp LibPDF: Simplify Encoding to align with simple font requirements 2023-02-02 14:50:38 +01:00
Encoding.h LibPDF: Simplify Encoding to align with simple font requirements 2023-02-02 14:50:38 +01:00
Encryption.cpp LibPDF: Fix calculation of encryption key 2023-01-04 11:10:37 -05:00
Encryption.h AK+Everywhere: Rename String to DeprecatedString 2022-12-06 08:54:33 +01:00
Error.h LibPDF: Add Errors class that accumulate multiple errors 2022-12-16 10:04:23 +01:00
Filter.cpp LibGfx: Re-structure the whole initialization pattern for image decoders 2023-01-20 15:13:31 +00:00
Filter.h AK+Everywhere: Rename FlyString to DeprecatedFlyString 2023-01-09 23:00:24 +00:00
Forward.h Everywhere: Remove unused includes of AK/StdLibExtras.h 2023-01-02 20:27:20 -05:00
Interpolation.cpp LibPDF: Add first interpolation methods 2022-12-10 10:49:03 +01:00
Interpolation.h LibPDF: Add first interpolation methods 2022-12-10 10:49:03 +01:00
Object.h AK+Everywhere: Rename FlyString to DeprecatedFlyString 2023-01-09 23:00:24 +00:00
ObjectDerivatives.cpp AK+Everywhere: Rename FlyString to DeprecatedFlyString 2023-01-09 23:00:24 +00:00
ObjectDerivatives.h AK+Everywhere: Rename FlyString to DeprecatedFlyString 2023-01-09 23:00:24 +00:00
Operator.h Everywhere: Rename to_{string => deprecated_string}() where applicable 2022-12-06 08:54:33 +01:00
Parser.cpp LibPDF: Improve stream parsing 2023-02-08 19:47:15 +01:00
Parser.h AK+Everywhere: Rename String to DeprecatedString 2022-12-06 08:54:33 +01:00
Reader.cpp LibPDF: Parse floating point numbers that omit a leading zero correctly 2022-10-16 17:44:54 +02:00
Reader.h LibPDF: Add Reader::try_read for easier error propagation 2023-01-25 15:40:11 +01:00
Reference.h LibPDF: Extract reference bitpacking into dedicated class 2021-09-20 17:39:36 +04:30
Renderer.cpp LibPDF: Fix clipping of painting operations 2023-02-04 12:29:57 +01:00
Renderer.h LibPDF: Switch to best-effort PDF rendering 2022-12-16 10:04:23 +01:00
Value.cpp Everywhere: Stop shoving things into ::std and mentioning them as such 2022-12-14 11:44:32 +01:00
Value.h Everywhere: Stop shoving things into ::std and mentioning them as such 2022-12-14 11:44:32 +01:00
XRefTable.h Everywhere: Rename to_{string => deprecated_string}() where applicable 2022-12-06 08:54:33 +01:00