diff options
Diffstat (limited to 'vcl/source/gdi/pdfwriter_impl.cxx')
-rw-r--r-- | vcl/source/gdi/pdfwriter_impl.cxx | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/vcl/source/gdi/pdfwriter_impl.cxx b/vcl/source/gdi/pdfwriter_impl.cxx index 2c94de56c183..a6ced4d62952 100644 --- a/vcl/source/gdi/pdfwriter_impl.cxx +++ b/vcl/source/gdi/pdfwriter_impl.cxx @@ -12003,10 +12003,11 @@ void PDFWriterImpl::writeReferenceXObject(ReferenceXObjectEmit& rEmit) aLine.append(aSize.Height()); aLine.append(" ]"); + if (!g_bDebugDisableCompression) + aLine.append(" /Filter/FlateDecode"); aLine.append(" /Length "); - sal_Int32 nLength = 0; - OStringBuffer aStream; + SvMemoryStream aStream; for (auto pContent : aContentStreams) { filter::PDFStreamElement* pPageStream = pContent->GetStream(); @@ -12035,21 +12036,19 @@ void PDFWriterImpl::writeReferenceXObject(ReferenceXObjectEmit& rEmit) continue; } - nLength += aMemoryStream.GetSize(); - aStream.append(static_cast<const sal_Char*>(aMemoryStream.GetData()), aMemoryStream.GetSize()); + aStream.WriteBytes(aMemoryStream.GetData(), aMemoryStream.GetSize()); } else - { - nLength += rPageStream.GetSize(); - aStream.append(static_cast<const sal_Char*>(rPageStream.GetData()), rPageStream.GetSize()); - } + aStream.WriteBytes(rPageStream.GetData(), rPageStream.GetSize()); } + compressStream(&aStream); + sal_Int32 nLength = aStream.Tell(); aLine.append(nLength); aLine.append(">>\nstream\n"); // Copy the original page streams to the form XObject stream. - aLine.append(aStream.makeStringAndClear()); + aLine.append(static_cast<const sal_Char*>(aStream.GetData()), aStream.GetSize()); aLine.append("\nendstream\nendobj\n\n"); if (!updateObject(nWrappedFormObject)) return; |