W mojej aplikacji ładuję do ramki plik jpeg o wymiarach 560x450 px, na którym następnie dzięki bibliotece Jcrop i camanjs wykonuję pewne operacje m.in. wycinam interesujący mnie fragment oraz zakrywam dany fragment obrazu białym prostokątem korzystając z właściwości holdera zapisanych w css:
  1. .hide_part .jcrop-holder div div .jcrop-tracker{ background: rgba(255, 255, 255, 1); }

Mając tak przygotowany obraz zapisuję go wykorzystując canvas i następnie ładuję do pliku pdf stosując bibliotekę tcppdf. Do pliku pdf pobieram obraz zmieniając jego wysokość:
  1. $img_foto = '<img height="310px" src="/modules/mod_raport_bif/tmp/camanjs_modifyimg.jpeg" title="" alt="" />';

W związku z tym, że canvas nie daje możliwości zapisania obrazu wraz z zakrytym fragmentem, w pliku pdf na obrazie dorysowuję prostokąt:
  1. $pdf->Rect($x_post, $y_post, $w_post, $h_post, 'DF', null, array(255, 255, 255));

o współrzędnych i rozmiarze podanym przez jcrop:
  1. function showCoordsˆ { // show all coords
  2. $('#x').val(c.x);
  3. $('#y').val(c.y);
  4. $('#x2').val(c.x2);
  5. $('#y2').val(c.y2);
  6. $('#w').val(c.w);
  7. $('#h').val(c.h);
  8. }

Problem jest taki, że prostokąt dorysowany w pliku pdf ma inny rozmiar i współrzędne w stosunku do pobranego obrazu, niż ten nanoszony bezpośrednio w ramce. Spowodowane jest to zmianą położenia i rozmiaru pobranego obrazu.
Nie mogę sobie jak na razie poradzić z ustawieniem właściwej skali/współczynnika tak by zakrywający prostokąt w wynikowym pdf'ie znajdował się w tym samym miejscu i miał odpowiednie proporcje, tak jak prostokąt nanoszony na obraz obrabiany w ramce.

Rozwiązałem problem, w następujący sposób:
  1. if (file_exists('/volume1/web/Joomla_1.5/modules/mod_raport_bif/tmp/camanjs_modifyimg.jpeg')) {
  2.  
  3. $img_foto = '<img height="310px" src="/modules/mod_raport_bif/tmp/camanjs_modifyimg.jpeg" title="" alt="" />';
  4.  
  5. $size_img = getimagesize('/volume1/web/Joomla_1.5/modules/mod_raport_bif/tmp/camanjs_modifyimg.jpeg');
  6. $originalWidth = $size_img[0];
  7. $originalHeight = $size_img[1];
  8.  
  9. $ratio_width = (386 / $originalWidth);
  10. $ratio_height = (310 / $originalHeight);
  11.  
  12. }
  13.  
  14. $x_post = 20 + ($x_post * $ratio_width) / 2.830;
  15. $y_post = 170 + ($y_post * $ratio_height) / 2.830;
  16.  
  17. $w_post = ($w_post * $ratio_width) / 2.830;
  18. $h_post = ($h_post * $ratio_height) / 2.830;
  19.  
  20.  
  21. $pdf->Rect($x_post, $y_post, $w_post, $h_post, 'DF', null, array(255, 255, 255));

Współczynnik 2.830 dobrałem metodą prób i błędów. Ciekaw jestem, czy można by to zrobić w jakiś inny sposób.