diff options
-rw-r--r-- | fpdfsdk/fpdf_flatten.cpp | 21 | ||||
-rw-r--r-- | fpdfsdk/fpdf_ppo.cpp | 8 |
2 files changed, 10 insertions, 19 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) { diff --git a/fpdfsdk/fpdf_ppo.cpp b/fpdfsdk/fpdf_ppo.cpp index 8f0b0c3d79..fd270d997c 100644 --- a/fpdfsdk/fpdf_ppo.cpp +++ b/fpdfsdk/fpdf_ppo.cpp @@ -185,12 +185,6 @@ CFX_FloatRect GetCropBox(const CPDF_Dictionary* pPageDict) { return GetMediaBox(pPageDict); } -CFX_FloatRect GetTrimBox(const CPDF_Dictionary* pPageDict) { - if (pPageDict->KeyExist("TrimBox")) - return pPageDict->GetRectFor("TrimBox"); - return GetCropBox(pPageDict); -} - const CPDF_Object* GetPageOrganizerPageContent( const CPDF_Dictionary* pPageDict) { return pPageDict @@ -702,7 +696,7 @@ uint32_t CPDF_NPageToOneExporter::MakeXObject( pNewXObjectDict->SetNewFor<CPDF_Name>("Type", "XObject"); pNewXObjectDict->SetNewFor<CPDF_Name>("Subtype", "Form"); pNewXObjectDict->SetNewFor<CPDF_Number>("FormType", 1); - pNewXObjectDict->SetRectFor("BBox", GetTrimBox(pSrcPageDict)); + pNewXObjectDict->SetRectFor("BBox", GetCropBox(pSrcPageDict)); // TODO(xlou): add matrix field to pNewXObjectDict. if (const CPDF_Array* pSrcContentArray = ToArray(pSrcContentObj)) { |