diff --git a/ChangeLog b/ChangeLog
index 8f2b10398e9884b447669ad5b7a9de1cfdbc77ec..e586d1ac36a621817035645f0f1df49fbddc1ee7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -27,6 +27,7 @@ For users:
 - New: Add new graphical boxes (customer invoices and orders per month).
 - New: [ task #286 ] Enhance rounding function of prices to allow round of sum instead of sum of rounding.
 - New: Can add an event automatically when a projet is create. 
+- New: Add option MAIN_GENERATE_DOCUMENT_WITH_PICTURE.
 - Qual: Implement same rule for return value of all command line scripts (0 when success, <>0 if error).
 
 For translators:
diff --git a/htdocs/core/class/conf.class.php b/htdocs/core/class/conf.class.php
index 4ce1bbf8c3d53c8ce0c6137037001781814b717f..2ed38d94e4a7ee00f14d58a5d8d15f0178a2add1 100644
--- a/htdocs/core/class/conf.class.php
+++ b/htdocs/core/class/conf.class.php
@@ -396,6 +396,9 @@ class Conf
 		if (! isset($this->global->MAIN_MAX_DECIMALS_TOT))   $this->global->MAIN_MAX_DECIMALS_TOT=2;
 		if (! isset($this->global->MAIN_MAX_DECIMALS_SHOWN)) $this->global->MAIN_MAX_DECIMALS_SHOWN=8;
 
+		// Default pdf use dash between lines
+		if (! isset($this->global->MAIN_PDF_DASH_BETWEEN_LINES)) $this->global->MAIN_PDF_DASH_BETWEEN_LINES=1;
+
 		// Default max file size for upload
 		$this->maxfilesize = (empty($this->global->MAIN_UPLOAD_DOC) ? 0 : $this->global->MAIN_UPLOAD_DOC * 1024);
 
diff --git a/htdocs/core/lib/pdf.lib.php b/htdocs/core/lib/pdf.lib.php
index 61d247ff2c20cbc17e9b8fcb358c0127cc4f0067..c895ea541d700da8d5ec116be5c0b85076b36674 100644
--- a/htdocs/core/lib/pdf.lib.php
+++ b/htdocs/core/lib/pdf.lib.php
@@ -199,8 +199,8 @@ function pdf_getInstance($format='',$metric='mm',$pagetype='P')
 			{
 				$this->SetXY($x,$y);
 				$val=str_replace('<br>',"\n",$html);
-				$val=dol_string_nohtmltag($val,false,'ISO-8859-1');
-				//print 'eee'.$val;exit;
+				//$val=dol_string_nohtmltag($val,false,'ISO-8859-1');
+				$val=dol_string_nohtmltag($val,false,'UTF-8');
 				$this->MultiCell($w,$h,$val,$border,$align,$fill);
 			}
 		}
@@ -1554,25 +1554,29 @@ function pdf_getLinkedObjects($object,$outputlangs)
 }
 
 /**
- * Return dimensions to use for images onto PDF
+ * Return dimensions to use for images onto PDF checking that width and height are not higher than
+ * maximum (16x32 by default).
  *
  * @param	string		$realpath		Full path to photo file to use
- * @return	array						Height/Width to use to output image (in pixel)
+ * @return	array						Height and width to use to output image (in pdf user unit, so mm)
  */
-function pdf_getHeightForImage($realpath)
+function pdf_getSizeForImage($realpath)
 {
-	$maxheight=12; $maxwidth=16;
+	global $conf;
+
+	$maxwidth=(empty($conf->global->MAIN_DOCUMENTS_WITH_PICTURE_WIDTH)?16:$conf->global->MAIN_DOCUMENTS_WITH_PICTURE_WIDTH);
+	$maxheight=(empty($conf->global->MAIN_DOCUMENTS_WITH_PICTURE_HEIGHT)?32:$conf->global->MAIN_DOCUMENTS_WITH_PICTURE_HEIGHT);
 	include_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php';
 	$tmp=dol_getImageSize($realpath);
 	if ($tmp['height'])
 	{
-		$width=(int) round($maxheight*$tmp['width']/$tmp['height']);
-		if ($width > $maxwidth)
+		$width=(int) round($maxheight*$tmp['width']/$tmp['height']);	// I try to use maxheight
+		if ($width > $maxwidth)	// Pb with maxheight, so i use maxwidth
 		{
-			$height=(int) round($height*$maxwidth/$width);
 			$width=$maxwidth;
+			$height=(int) round($maxwidth*$tmp['height']/$tmp['width']);
 		}
-		else
+		else	// No pb with maxheight
 		{
 			$height=$maxheight;
 		}
diff --git a/htdocs/core/modules/propale/doc/pdf_azur.modules.php b/htdocs/core/modules/propale/doc/pdf_azur.modules.php
index caeb4c3be1dd53c062dd2467c216a630e1b7510c..cd916ae46a096f8860eb58a53bed84c3a26bfa67 100644
--- a/htdocs/core/modules/propale/doc/pdf_azur.modules.php
+++ b/htdocs/core/modules/propale/doc/pdf_azur.modules.php
@@ -272,15 +272,76 @@ class pdf_azur extends ModelePDFPropales
 					$pdf->SetFont('','', $default_font_size - 1);   // Into loop to work with multipage
 					$pdf->SetTextColor(0,0,0);
 
+					// Define size of image if we need it
+					$imglinesize=array(); $realpath='';
+					if (! empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITH_PICTURE))
+					{
+						if ($object->lines[$i]->fk_product)
+						{
+							$objphoto = new Product($this->db);
+							$objphoto->fetch($object->lines[$i]->fk_product);
+
+							$pdir = get_exdir($object->lines[$i]->fk_product,2) . $object->lines[$i]->fk_product ."/photos/";
+							$dir = $conf->product->dir_output.'/'.$pdir;
+
+							$realpath='';
+							if ($object->ref == 'SPECIMEN' && $i == 1)
+							{
+								$realpath = DOL_DOCUMENT_ROOT.'/theme/common/nophoto.jpg';
+							}
+							else
+							{
+								foreach ($objphoto->liste_photos($dir,1) as $key => $obj)
+								{
+									if ($obj['photo_vignette'])
+									{
+										$filename='thumbs/'.$obj['photo_vignette'];
+									}
+									else
+									{
+										$filename=$obj['photo'];
+									}
+
+									$realpath = $dir.$filename;
+									break;
+								}
+							}
+
+							if (!empty($realpath))	$imglinesize=pdf_getSizeForImage($realpath);
+						}
+					}
+
 					$pdf->setTopMargin($tab_top_newpage);
 					$pdf->setPageOrientation('', 1, $heightforfooter+$heightforfreetext+$heightforinfotot);	// The only function to edit the bottom margin of current page to set it.
 					$pageposbefore=$pdf->getPage();
 
+					$showpricebeforepagebreak=1;
+					$posYAfterImage=0;
+					$posYAfterDescription=0;
+
+					// We start with Photo of product line
+					if (($curY + $imglinesize['height']) > ($this->page_hauteur-($heightforfooter+$heightforfreetext+$heightforinfotot)))	// If photo to high, we moved completely on new page
+					{
+						$pdf->AddPage('','',true);
+						if (! empty($tplidx)) $pdf->useTemplate($tplidx);
+						if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) $this->_pagehead($pdf, $object, 0, $outputlangs);
+						$pdf->setPage($pagenb+1);
+
+						$curY = $tab_top_newpage;
+						$showpricebeforepagebreak=0;
+					}
+
+					if (isset($imglinesize['width']) && isset($imglinesize['height']))
+					{
+						$curX = $this->posxpicture-1;
+						$pdf->Image($realpath, $curX + (($this->posxtva-$this->posxpicture-$imglinesize['width'])/2), $curY, $imglinesize['width'], $imglinesize['height'],'','','',2, 300);	// Use 300 dpi
+						// $pdf->Image does not increase value return by getY, so we save it manually
+						$posYAfterImage=$curY+$imglinesize['height'];
+					}
+
 					// Description of product line
 					$curX = $this->posxdesc-1;
 
-					$showpricebeforepagebreak=1;
-
 					$pdf->startTransaction();
 					if (empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITH_PICTURE))
 					{
@@ -329,6 +390,7 @@ class pdf_azur extends ModelePDFPropales
 					{
 						$pdf->commitTransaction();
 					}
+					$posYAfterDescription=$pdf->GetY();
 
 					$nexY = $pdf->GetY();
 					$pageposafter=$pdf->getPage();
@@ -336,67 +398,13 @@ class pdf_azur extends ModelePDFPropales
 					$pdf->setTopMargin($this->marge_haute);
 					$pdf->setPageOrientation('', 1, 0);	// The only function to edit the bottom margin of current page to set it.
 
-					// We suppose that a too long description is moved completely on next page
+					// We suppose that a too long description or photo were moved completely on next page
 					if ($pageposafter > $pageposbefore && empty($showpricebeforepagebreak)) {
 						$pdf->setPage($pageposafter); $curY = $tab_top_newpage;
 					}
 
 					$pdf->SetFont('','', $default_font_size - 1);   // On repositionne la police par defaut
 
-					// Photo
-					if (! empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITH_PICTURE))
-					{
-						$curX = $this->posxpicture-1;
-						if ($object->lines[$i]->fk_product)
-						{
-							$objphoto = new Product($this->db);
-							$objphoto->fetch($object->lines[$i]->fk_product);
-
-							$pdir = get_exdir($object->lines[$i]->fk_product,2) . $object->lines[$i]->fk_product ."/photos/";
-							$dir = $conf->product->dir_output.'/'.$pdir;
-
-							$realpath='';
-							if ($object->ref == 'SPECIMEN')
-							{
-								$realpath = DOL_DOCUMENT_ROOT.'/theme/common/nophoto.jpg';
-							}
-							else
-							{
-								foreach ($objphoto->liste_photos($dir,1) as $key => $obj)
-								{
-									if ($obj['photo_vignette'])
-									{
-										$filename='thumbs/'.$obj['photo_vignette'];
-									}
-									else
-									{
-										$filename=$obj['photo'];
-									}
-
-									$realpath = $dir.$filename;
-									break;
-								}
-							}
-
-							if (!empty($realpath))
-							{
-								//$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
-								$tmp=pdf_getHeightForImage($realpath);
-								//var_dump(constant('PDF_IMAGE_SCALE_RATIO'));var_dump($pdf->getImageScale());var_dump($tmp['width']);var_dump($pdf->pixelsToUnits($tmp['width']));exit;
-								// measures 1/72 of an inch, i.e. approximately 0.0139 inch or 25.4/72 = 0.3528 mm
-								var_dump($this->page_largeur);exit;
-								//var_dump(tmp['height']);exit;
-								$pdf->Line($this->posxtva,10,$this->posxtva+0.5,10);
-								$pdf->Image($realpath, $this->posxtva, 10, $tmp['width'], $tmp['height'],'','','',2,0);	// Use 300 dpi
-								$pdf->Line($this->posxtva+$pdf->pixelsToUnits($tmp['width']),10,$this->posxtva+$pdf->pixelsToUnits($tmp['width'])+0.5,10);
-								$pdf->Image($realpath, $curX + ($this->posxtva-$this->posxpicture-($pdf->pixelsToUnits($tmp['width'])))/2, $curY-1, $tmp['width'], $tmp['height'],'','','',2, 300);	// Use 300 dpi
-								//$nexY += 7;	// +7 for height = 12
-								$nexY += round($pdf->pixelsToUnits($tmp['height']));
-								//var_dump($nexY);exit;
-							}
-						}
-					}
-
 					// VAT Rate
 					if (empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT))
 					{
@@ -459,6 +467,8 @@ class pdf_azur extends ModelePDFPropales
 					if (! isset($this->tva[$vatrate]))				$this->tva[$vatrate]='';
 					$this->tva[$vatrate] += $tvaligne;
 
+					if ($posYAfterImage > $posYAfterDescription) $nexY=$posYAfterImage;
+
 					// Add line
 					if (! empty($conf->global->MAIN_PDF_DASH_BETWEEN_LINES) && $i < ($nblignes - 1))
 					{
@@ -1063,7 +1073,7 @@ class pdf_azur extends ModelePDFPropales
 			$pdf->MultiCell(($pdf->GetStringWidth($titre) + 3), 2, $titre);
 
 			//$conf->global->MAIN_PDF_TITLE_BACKGROUND_COLOR='230,230,230';
-			if (! empty($conf->global->MAIN_PDF_TITLE_BACKGROUND_COLOR)) $pdf->Rect($this->marge_gauche, $tab_top, $this->page_largeur-$this->marge_droite-$this->marge_gauche, 5, 'F', null, explode(',',$conf->global->MAIN_PDF_TITLE_BACKGROUND_COLOR));
+			if (! empty($conf->global->MAIN_PDF_TITLE_BACKGROUND_COLOR)) $pdf->Rect($this->marge_gauche, $tab_top, $this->page_largeur-$this->marge_droite-$this->marge_gauche, 6, 'F', null, explode(',',$conf->global->MAIN_PDF_TITLE_BACKGROUND_COLOR));
 		}
 
 		$pdf->SetDrawColor(128,128,128);
@@ -1074,7 +1084,7 @@ class pdf_azur extends ModelePDFPropales
 
 		if (empty($hidetop))
 		{
-			$pdf->line($this->marge_gauche, $tab_top+5, $this->page_largeur-$this->marge_droite, $tab_top+5);	// line prend une position y en 2eme param et 4eme param
+			$pdf->line($this->marge_gauche, $tab_top+6, $this->page_largeur-$this->marge_droite, $tab_top+6);	// line prend une position y en 2eme param et 4eme param
 
 			$pdf->SetXY($this->posxdesc-1, $tab_top+1);
 			$pdf->MultiCell(108,2, $outputlangs->transnoentities("Designation"),'','L');
@@ -1085,8 +1095,8 @@ class pdf_azur extends ModelePDFPropales
 			$pdf->line($this->posxpicture-1, $tab_top, $this->posxpicture-1, $tab_top + $tab_height);
 			if (empty($hidetop))
 			{
-				$pdf->SetXY($this->posxpicture-1, $tab_top+1);
-				$pdf->MultiCell($this->posxtva-$this->posxpicture-1,2, $outputlangs->transnoentities("Photo"),'','C');
+				//$pdf->SetXY($this->posxpicture-1, $tab_top+1);
+				//$pdf->MultiCell($this->posxtva-$this->posxpicture-1,2, $outputlangs->transnoentities("Photo"),'','C');
 			}
 		}