diff --git a/PdfFile/PdfWriter_empty.cpp b/PdfFile/PdfWriter_empty.cpp index e521e656f1..e9d1215bb5 100644 --- a/PdfFile/PdfWriter_empty.cpp +++ b/PdfFile/PdfWriter_empty.cpp @@ -6,7 +6,7 @@ CPdfWriter::~CPdfWriter() {} int CPdfWriter::SaveToFile(const std::wstring& wsPath) { return 0; } void CPdfWriter::SetPassword(const std::wstring& wsPassword) {} void CPdfWriter::SetDocumentID(const std::wstring& wsDocumentID) {} -void CPdfWriter::SetCore(const std::wstring& wsCore) {} +void CPdfWriter::SetDocumentInfo(const std::wstring& wsTitle, const std::wstring& wsCreator, const std::wstring& wsSubject, const std::wstring& wsKeywords) {} HRESULT CPdfWriter::NewPage() { return 0; } HRESULT CPdfWriter::get_Height(double* dHeight) { return 0; } HRESULT CPdfWriter::put_Height(const double& dHeight) { return 0; } diff --git a/PdfFile/SrcReader/GfxClip.h b/PdfFile/SrcReader/GfxClip.h index 506274e74c..e3c5e4b812 100644 --- a/PdfFile/SrcReader/GfxClip.h +++ b/PdfFile/SrcReader/GfxClip.h @@ -296,6 +296,7 @@ public: GfxClip() { m_pTextClip = new GfxTextClip(); + m_bChanged = true; } ~GfxClip() diff --git a/PdfFile/SrcReader/RendererOutputDev.cpp b/PdfFile/SrcReader/RendererOutputDev.cpp index 303e186013..fbfe0e9597 100644 --- a/PdfFile/SrcReader/RendererOutputDev.cpp +++ b/PdfFile/SrcReader/RendererOutputDev.cpp @@ -4183,7 +4183,10 @@ namespace PdfReader ImageStream *pImageStream = new ImageStream(pStream, nWidth, nComponentsCount, pColorMap->getBits()); pImageStream->reset(); - unsigned char unAlpha = m_bTransparentGroup ? ((m_bIsolatedTransparentGroup || m_bTransparentGroupSoftMask) ? 0 : 255.0 * pGState->getFillOpacity()) : 255; + bool bTransperent = false; + for (const bool& b : m_arrTransparentGroupSoftMask) + bTransperent = b || bTransperent; + unsigned char unAlpha = m_bTransparentGroup ? ((m_bIsolatedTransparentGroup && bTransperent) ? 0 : 255.0 * pGState->getFillOpacity()) : 255; int nStride = pImageStream->getVals(); int nComps = pImageStream->getComps(); @@ -4849,7 +4852,11 @@ namespace PdfReader } if (m_sClip[i].GetPathNum() > 0) - break; + { + if (!m_sClip[i].IsChanged()) + break; + m_sClip[i].SetChanged(false); + } } m_bClipChanged = false;