- Oct 21, 2018
-
-
Albert Astals Cid authored
-
Albert Astals Cid authored
-
Albert Astals Cid authored
-
PDF/A as can be tested with VeraPDF requires: - Second line needs to be a comment line with four characters with byte encoding above 127 - "obj" needs to be followed by a new line - "endobj" needs to start on a new line
-
Albert Astals Cid authored
-
- Oct 19, 2018
-
-
Christian Persch authored
poppler-glib exported lots of internal C++ symbols that are not in the public API, nor have any ABI guarantees. Mark all public functions with POPPLER_PUBLIC, and use symbol visibility to hide everything else.
-
Christian Persch authored
pdf-inspector doesn't use libpoppler-glib, but linked to it. Changing it to link only to libpoppler revealed that it used lots of symbols from poppler-glib that poppler-glib should not export. Fix that by adding the necessary sources to the pdf-inspector sources and linking to the libraries needed by these sources (freetype, pthreads).
-
Evangelos Rigas authored
Export PDFSubtype, PDFSubtypePart, and PDFSubtypeConformance to GLib as enums and add function to get the GTS string based on the PDF Subtype. Add PDF Subtype documentation reference in glib.
-
- Oct 17, 2018
-
-
Albert Astals Cid authored
oss-fuzz/11020
-
- Oct 16, 2018
-
-
Marek Kasik authored
Check whether an embedded file is actually present in the PDF and show warning in that case. https://bugs.freedesktop.org/show_bug.cgi?id=106137 poppler/poppler#236
-
Albert Astals Cid authored
-
Albert Astals Cid authored
oss-fuzz/11006
-
- Oct 15, 2018
-
-
Tobias Deiminger authored
An application using ArthurBackend can be subject to multi threading. So better use a copy of XRef during rendering, just the same as it's already done when using SplashBackend.
-
- Oct 12, 2018
-
-
The majority of the code in addIntersection can be optimized away for vertical (x0 == x1) and horizontal (count == 0) segments, thus the inlined code is less than the function call setup alone. This leaves diagonal segments as the only remaining call site, i.e. inlining here is a net win as well. Reduces runtime for #57 (fdo#96728, runsforever-poppler.pdf) from 1442 seconds to 1239 seconds (86%), and #24 (fdo#78728, surf-types.pdf) from ~ 5.0 seconds to 4.7 seconds.
-
"seg->x0 - seg->y0 * seg->dxdy" is constant and can be moved out of the loop. The next start point is the old end point. Thus, only the new x coordinate has to clamped (segXMin <= xx1 <= segXMax), also do the 'floor' operation just once per loop. According to valgrind/callgrind, this reduces instruction count in computeIntersections() for #24 (fdo#78728) by 6%. No change for fdo#96728.
-
For horizontal segments, count is always 0. For vertical/diagonal segments, the count depends on the winding rule (EvenOdd/NonZero) and the direction, but is constant for each segment. Reduces runtime for #57 (fdo#96728) from 1773 seconds to 1442 seconds (81%).
-
XRef::constructXRef was invented to support old style XRef tables. Sadly it won't work for XRef streams. If applied anyway, it corrupts our existing XRef::entries array. Better skip reconstruction for the XRef-stream-case in XRef::readXRefUntil (just like XRef::fetch already does). Fixes #139.
-
- Oct 10, 2018
-
-
Adam Reichold authored
GCC recommends not using them for a long time and its documentation says: > These #pragmas have been superceded as of GCC 2.7.2 by COMDAT support > and the “key method” heuristic mentioned in Vague Linkage. > Using them can actually cause your program to grow due to > unnecessary out-of-line copies of inline functions. Also nobody seems to set USE_GCC_PRAGMAS and sometimes they were guarded by just __GNUC__ which upsets Clang.
-
- Oct 09, 2018
-
-
Adam Reichold authored
-
Adam Reichold authored
-
Adam Reichold authored
Fix memory leak in Catalog by tracking pages (and page refs) using std::vector and std::unique_ptr instead of manually allocating them. oss-fuzz/10119
-
- Oct 08, 2018
-
-
Oliver Sander authored
-
Oliver Sander authored
-
Oliver Sander authored
-
Oliver Sander authored
-
Oliver Sander authored
-
Port AnnotPath to use std::vector<AnnotCoord> instead of std::unique_ptr<AnnotCoord> to further avoid manual memory management.
-
Oliver Sander authored
No need to set a std::unique_ptr to nullptr right before it goes out of scope.
-
-
- Oct 07, 2018
-
-
Adam Reichold authored
-
-
-
Adam Reichold authored
Remove HtmlFont::pos and always track a font name to allow handling of unknown font families with known style suffixes.
-
- Oct 06, 2018
-
-
Albert Astals Cid authored
-
Albert Astals Cid authored
We find every so often that the windows build breaks since there's a few ifdef for windows, so CI it Has some mv because the openjpeg2 packages are a bit broken and removes a SYSTEM because i think something in their packages is also broken since i don't need to remove that when i build on my arch linux with mingw64
-
- Oct 05, 2018
-
-
For complex paths, a significant amount of time is spent in SplashXPathScanner::computeIntersections, more specifically with sorting the spans in y/x order. Instead of using one large array for all spans, use a 2-dimensional structure. As the number of y positions is known upfront, it is possible to create an array for the y dimension and insert the spans directly at the appropriate position. For Y rows with X spans per row, this reduces the complexity for sorting from O( Y*X log Y*X) to O( Y * X log X), i.e. a reduction by log Y. For the documents from #57 (fdo#96728) and #24 (fdo#78728), the runtime/memory is significantly reduced (according to /usr/bin/time -v): (1) $> pdftoppm -r 18 -aa no runsforever-poppler.pdf (2) $> pdftoppm surf-types.pdf Before/After runsforever-poppler | surf-types User time (seconds): 2979.80 / 2348.08 | 9.45 / 7.76 Maximum resident set size (kbytes): 51208 / 46288 | 18084 / 14076
-
Instead of implicitly clamping by setting interIdx == interEnd, calculate the first and last y position outside the loop, and use these as loop bounds.
-
Iterating through spans is independent of the spans itself. Moving the iteration to a seperate class allows to keep the iteration state out of SplashXPathScanner, and also allows to move invariant code out of getNextSpan(...).
-
Albert Astals Cid authored
All the forward declarations we have are saying class and both MSVC and clang are unhappy about it
-
Albert Astals Cid authored
-