@@ -29,6 +29,10 @@ namespace pdflib
29
29
30
30
std::pair<double , double > rotate (int angle);
31
31
32
+ private:
33
+
34
+ std::array<double , 4 > normalize_page_boundaries (std::array<double , 4 > bbox, std::string name);
35
+
32
36
private:
33
37
34
38
bool initialised;
@@ -154,6 +158,33 @@ namespace pdflib
154
158
155
159
return delta;
156
160
}
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
+ }
157
188
158
189
bool pdf_resource<PAGE_DIMENSION>::init_from(nlohmann::json& data)
159
190
{
@@ -324,6 +355,12 @@ namespace pdflib
324
355
LOG_S (ERROR) << ss.str ();
325
356
throw std::logic_error (ss.str ());
326
357
}
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" );
327
364
}
328
365
329
366
}
0 commit comments