diff options
Diffstat (limited to 'vcl/source/filter/ipdf/pdfdocument.cxx')
-rw-r--r-- | vcl/source/filter/ipdf/pdfdocument.cxx | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/vcl/source/filter/ipdf/pdfdocument.cxx b/vcl/source/filter/ipdf/pdfdocument.cxx index 493826e38f8f..a93083ce85a8 100644 --- a/vcl/source/filter/ipdf/pdfdocument.cxx +++ b/vcl/source/filter/ipdf/pdfdocument.cxx @@ -8,6 +8,8 @@ */ #include <vcl/filter/pdfdocument.hxx> +#include <pdf/pdfcompat.hxx> +#include <config_features.h> #include <map> #include <memory> @@ -1349,6 +1351,18 @@ void PDFDocument::SetIDObject(size_t nID, PDFObjectElement* pObject) m_aIDObjects[nID] = pObject; } +bool PDFDocument::ReadWithPossibleFixup(SvStream& rStream) +{ + if (Read(rStream)) + return true; + + // Read failed, try a roundtrip through pdfium and then retry. + rStream.Seek(0); + SvMemoryStream aStandardizedStream; + vcl::pdf::convertToHighestSupported(rStream, aStandardizedStream); + return Read(aStandardizedStream); +} + bool PDFDocument::Read(SvStream& rStream) { // Check file magic. |