| Index: fpdfsdk/fpdf_flatten.cpp
|
| diff --git a/fpdfsdk/fpdf_flatten.cpp b/fpdfsdk/fpdf_flatten.cpp
|
| index f7d82773e1476e2bd88893dfa5f37642183a9dfe..6cffbe0b3120dd2490ff89fe41808711f2e701c3 100644
|
| --- a/fpdfsdk/fpdf_flatten.cpp
|
| +++ b/fpdfsdk/fpdf_flatten.cpp
|
| @@ -397,8 +397,6 @@ DLLEXPORT int STDCALL FPDFPage_Flatten(FPDF_PAGE page, int nFlag) {
|
| continue;
|
|
|
| CPDF_Dictionary* pAPDic = pAPStream->GetDict();
|
| - CFX_Matrix matrix = pAPDic->GetMatrixFor("Matrix");
|
| -
|
| CFX_FloatRect rcStream;
|
| if (pAPDic->KeyExist("Rect"))
|
| rcStream = pAPDic->GetRectFor("Rect");
|
| @@ -409,13 +407,15 @@ DLLEXPORT int STDCALL FPDFPage_Flatten(FPDF_PAGE page, int nFlag) {
|
| continue;
|
|
|
| CPDF_Object* pObj = pAPStream;
|
| + if (pObj->IsInline()) {
|
| + pObj = pObj->Clone();
|
| + pDocument->AddIndirectObject(pObj);
|
| + }
|
|
|
| - if (pObj) {
|
| - CPDF_Dictionary* pObjDic = pObj->GetDict();
|
| - if (pObjDic) {
|
| - pObjDic->SetNameFor("Type", "XObject");
|
| - pObjDic->SetNameFor("Subtype", "Form");
|
| - }
|
| + CPDF_Dictionary* pObjDic = pObj->GetDict();
|
| + if (pObjDic) {
|
| + pObjDic->SetNameFor("Type", "XObject");
|
| + pObjDic->SetNameFor("Subtype", "Form");
|
| }
|
|
|
| CPDF_Dictionary* pXObject = pNewXORes->GetDictFor("XObject");
|
| @@ -426,15 +426,14 @@ DLLEXPORT int STDCALL FPDFPage_Flatten(FPDF_PAGE page, int nFlag) {
|
|
|
| CFX_ByteString sFormName;
|
| sFormName.Format("F%d", i);
|
| - pXObject->SetReferenceFor(sFormName, pDocument,
|
| - pDocument->AddIndirectObject(pObj));
|
| + pXObject->SetReferenceFor(sFormName, pDocument, pObj->GetObjNum());
|
|
|
| CPDF_StreamAcc acc;
|
| acc.LoadAllData(pNewXObject);
|
|
|
| const uint8_t* pData = acc.GetData();
|
| CFX_ByteString sStream(pData, acc.GetSize());
|
| -
|
| + CFX_Matrix matrix = pAPDic->GetMatrixFor("Matrix");
|
| if (matrix.IsIdentity()) {
|
| matrix.a = 1.0f;
|
| matrix.b = 0.0f;
|
|
|