summaryrefslogtreecommitdiff
path: root/vcl/source/gdi/pdfwriter_impl.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'vcl/source/gdi/pdfwriter_impl.cxx')
-rw-r--r--vcl/source/gdi/pdfwriter_impl.cxx17
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;