Skip to content

Commit 5ded3b8

Browse files
fix: media box (#157)
Signed-off-by: Peter Staar <[email protected]>
1 parent 7a938ae commit 5ded3b8

11 files changed

+47995
-1
lines changed

src/v2/pdf_resources/page_dimension.h

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ namespace pdflib
2929

3030
std::pair<double, double> rotate(int angle);
3131

32+
private:
33+
34+
std::array<double, 4> normalize_page_boundaries(std::array<double, 4> bbox, std::string name);
35+
3236
private:
3337

3438
bool initialised;
@@ -154,6 +158,33 @@ namespace pdflib
154158

155159
return delta;
156160
}
161+
162+
std::array<double, 4> pdf_resource<PAGE_DIMENSION>::normalize_page_boundaries(std::array<double, 4> bbox, std::string name)
163+
{
164+
LOG_S(INFO) << __FUNCTION__;
165+
166+
double llx = std::min(bbox[0], bbox[2]);
167+
double lly = std::min(bbox[1], bbox[3]);
168+
double urx = std::max(bbox[0], bbox[2]);
169+
double ury = std::max(bbox[1], bbox[3]);
170+
171+
if(urx<llx)
172+
{
173+
LOG_S(ERROR) << "we have a malformed page-boundary for " << name << "-> llx: "<< llx << ", urx: "<< urx;
174+
}
175+
176+
if(ury<lly)
177+
{
178+
LOG_S(ERROR) << "we have a malformed page-boundary for " << name << "-> lly: "<< lly << ", ury: "<< ury;
179+
}
180+
181+
bbox[0] = llx;
182+
bbox[1] = lly;
183+
bbox[2] = urx;
184+
bbox[3] = ury;
185+
186+
return bbox;
187+
}
157188

158189
bool pdf_resource<PAGE_DIMENSION>::init_from(nlohmann::json& data)
159190
{
@@ -324,6 +355,12 @@ namespace pdflib
324355
LOG_S(ERROR) << ss.str();
325356
throw std::logic_error(ss.str());
326357
}
358+
359+
crop_bbox = normalize_page_boundaries(crop_bbox, "crop_bbox");
360+
media_bbox = normalize_page_boundaries(media_bbox, "media_bbox");
361+
art_bbox = normalize_page_boundaries(art_bbox, "art_bbox");
362+
bleed_bbox = normalize_page_boundaries(bleed_bbox, "bleed_bbox");
363+
trim_bbox = normalize_page_boundaries(trim_bbox, "trim_bbox");
327364
}
328365

329366
}

0 commit comments

Comments
 (0)