Skip to content

Commit 327dc4b

Browse files
fix: 360 rotated pages (#177)
Signed-off-by: Peter Staar <[email protected]>
1 parent 2470ea3 commit 327dc4b

12 files changed

+106525
-8
lines changed

src/v2/pdf_decoders/page.h

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -561,14 +561,13 @@ namespace pdflib
561561
{
562562
LOG_S(INFO) << __FUNCTION__;
563563

564-
if(page_dimension.get_angle()==0)
564+
int angle = page_dimension.get_angle();
565+
566+
if((angle%360)==0)
565567
{
566568
return;
567569
}
568-
569-
int angle = page_dimension.get_angle();
570-
571-
if((angle%90)!=0)
570+
else if((angle%90)!=0)
572571
{
573572
LOG_S(ERROR) << "the /Rotate angle should be a multiple of 90 ...";
574573
}
@@ -577,6 +576,8 @@ namespace pdflib
577576
LOG_S(WARNING) << "rotating contents clock-wise with angle: " << angle;
578577

579578
std::pair<double, double> delta = page_dimension.rotate(angle);
579+
LOG_S(INFO) << "translation delta: " << delta.first << ", " << delta.second;
580+
580581
page_cells.rotate(angle, delta);
581582
page_lines.rotate(angle, delta);
582583
page_images.rotate(angle, delta);

src/v2/pdf_resources/page_dimension.h

Lines changed: 64 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,11 @@ namespace pdflib
112112
std::pair<double, double> pdf_resource<PAGE_DIMENSION>::rotate(int my_angle)
113113
{
114114
angle -= my_angle;
115+
116+
LOG_S(INFO) << "my_angle: " << my_angle;
115117

116118
utils::values::rotate_inplace(my_angle, media_bbox);
119+
117120
LOG_S(INFO) << "media: "
118121
<< media_bbox[0] << ", "
119122
<< media_bbox[1] << ", "
@@ -150,7 +153,7 @@ namespace pdflib
150153
<< crop_bbox[2] << ", "
151154
<< crop_bbox[3];
152155

153-
LOG_S(INFO) << "crop: "
156+
LOG_S(INFO) << "bbox: "
154157
<< bbox[0] << ", "
155158
<< bbox[1] << ", "
156159
<< bbox[2] << ", "
@@ -403,11 +406,71 @@ namespace pdflib
403406
throw std::logic_error(ss.str());
404407
}
405408

409+
LOG_S(INFO) << "crop-box: ("
410+
<< crop_bbox[0] << ", "
411+
<< crop_bbox[1] << ", "
412+
<< crop_bbox[2] << ", "
413+
<< crop_bbox[3] << ")";
414+
415+
LOG_S(INFO) << "media-box: ("
416+
<< media_bbox[0] << ", "
417+
<< media_bbox[1] << ", "
418+
<< media_bbox[2] << ", "
419+
<< media_bbox[3] << ")";
420+
421+
LOG_S(INFO) << "art-box: ("
422+
<< art_bbox[0] << ", "
423+
<< art_bbox[1] << ", "
424+
<< art_bbox[2] << ", "
425+
<< art_bbox[3] << ")";
426+
427+
LOG_S(INFO) << "bleed-box: ("
428+
<< bleed_bbox[0] << ", "
429+
<< bleed_bbox[1] << ", "
430+
<< bleed_bbox[2] << ", "
431+
<< bleed_bbox[3] << ")";
432+
433+
LOG_S(INFO) << "trim-box: ("
434+
<< trim_bbox[0] << ", "
435+
<< trim_bbox[1] << ", "
436+
<< trim_bbox[2] << ", "
437+
<< trim_bbox[3] << ")";
438+
406439
crop_bbox = normalize_page_boundaries(crop_bbox, "crop_bbox");
407440
media_bbox = normalize_page_boundaries(media_bbox, "media_bbox");
408441
art_bbox = normalize_page_boundaries(art_bbox, "art_bbox");
409442
bleed_bbox = normalize_page_boundaries(bleed_bbox, "bleed_bbox");
410443
trim_bbox = normalize_page_boundaries(trim_bbox, "trim_bbox");
444+
445+
LOG_S(INFO) << "crop-box: ("
446+
<< crop_bbox[0] << ", "
447+
<< crop_bbox[1] << ", "
448+
<< crop_bbox[2] << ", "
449+
<< crop_bbox[3] << ")";
450+
451+
LOG_S(INFO) << "media-box: ("
452+
<< media_bbox[0] << ", "
453+
<< media_bbox[1] << ", "
454+
<< media_bbox[2] << ", "
455+
<< media_bbox[3] << ")";
456+
457+
LOG_S(INFO) << "art-box: ("
458+
<< art_bbox[0] << ", "
459+
<< art_bbox[1] << ", "
460+
<< art_bbox[2] << ", "
461+
<< art_bbox[3] << ")";
462+
463+
LOG_S(INFO) << "bleed-box: ("
464+
<< bleed_bbox[0] << ", "
465+
<< bleed_bbox[1] << ", "
466+
<< bleed_bbox[2] << ", "
467+
<< bleed_bbox[3] << ")";
468+
469+
LOG_S(INFO) << "trim-box: ("
470+
<< trim_bbox[0] << ", "
471+
<< trim_bbox[1] << ", "
472+
<< trim_bbox[2] << ", "
473+
<< trim_bbox[3] << ")";
411474
}
412475

413476
}

0 commit comments

Comments
 (0)