diff options
Diffstat (limited to 'fpdfsdk/fpdf_flatten.cpp')
-rw-r--r-- | fpdfsdk/fpdf_flatten.cpp | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/fpdfsdk/fpdf_flatten.cpp b/fpdfsdk/fpdf_flatten.cpp index ea701d9e1e..de396667f5 100644 --- a/fpdfsdk/fpdf_flatten.cpp +++ b/fpdfsdk/fpdf_flatten.cpp @@ -251,7 +251,6 @@ FPDF_EXPORT int FPDF_CALLCONV FPDFPage_Flatten(FPDF_PAGE page, int nFlag) { if (iRet == FLATTEN_NOTHINGTODO || iRet == FLATTEN_FAIL) return iRet; - CFX_FloatRect rcOriginalCB; CFX_FloatRect rcMerger = CalculateRect(&RectArray); CFX_FloatRect rcOriginalMB = pPageDict->GetRectFor(pdfium::page_object::kMediaBox); @@ -261,20 +260,19 @@ FPDF_EXPORT int FPDF_CALLCONV FPDFPage_Flatten(FPDF_PAGE page, int nFlag) { if (rcOriginalMB.IsEmpty()) rcOriginalMB = CFX_FloatRect(0.0f, 0.0f, 612.0f, 792.0f); + CFX_FloatRect rcOriginalCB; + if (pPageDict->KeyExist(pdfium::page_object::kCropBox)) + rcOriginalCB = pPageDict->GetRectFor(pdfium::page_object::kCropBox); + if (rcOriginalCB.IsEmpty()) + rcOriginalCB = rcOriginalMB; + rcMerger.left = std::max(rcMerger.left, rcOriginalMB.left); rcMerger.right = std::min(rcMerger.right, rcOriginalMB.right); rcMerger.bottom = std::max(rcMerger.bottom, rcOriginalMB.bottom); rcMerger.top = std::min(rcMerger.top, rcOriginalMB.top); - if (pPageDict->KeyExist("ArtBox")) - rcOriginalCB = pPageDict->GetRectFor("ArtBox"); - else - rcOriginalCB = rcOriginalMB; - - if (!rcOriginalMB.IsEmpty()) - pPageDict->SetRectFor(pdfium::page_object::kMediaBox, rcOriginalMB); - if (!rcOriginalCB.IsEmpty()) - pPageDict->SetRectFor("ArtBox", rcOriginalCB); + pPageDict->SetRectFor(pdfium::page_object::kMediaBox, rcOriginalMB); + pPageDict->SetRectFor(pdfium::page_object::kCropBox, rcOriginalCB); CPDF_Dictionary* pRes = pPageDict->GetDictFor(pdfium::page_object::kResources); @@ -314,8 +312,7 @@ FPDF_EXPORT int FPDF_CALLCONV FPDFPage_Flatten(FPDF_PAGE page, int nFlag) { pNewOXbjectDic->SetNewFor<CPDF_Name>("Type", "XObject"); pNewOXbjectDic->SetNewFor<CPDF_Name>("Subtype", "Form"); pNewOXbjectDic->SetNewFor<CPDF_Number>("FormType", 1); - CFX_FloatRect rcBBox = pPageDict->GetRectFor(pdfium::page_object::kArtBox); - pNewOXbjectDic->SetRectFor("BBox", rcBBox); + pNewOXbjectDic->SetRectFor("BBox", rcOriginalCB); } for (size_t i = 0; i < ObjectArray.size(); ++i) { |