diff --git a/dev/dolibarr_changes.txt b/dev/dolibarr_changes.txt
index 107f561eca6..48c6bf342a9 100644
--- a/dev/dolibarr_changes.txt
+++ b/dev/dolibarr_changes.txt
@@ -104,6 +104,27 @@ with
//return false;
}
+* Replace in tcpdf.php
+
+ if (($imgsrc[0] === '/') AND !empty($_SERVER['DOCUMENT_ROOT']) AND ($_SERVER['DOCUMENT_ROOT'] != '/')) {
+
+with
+
+ // @CHANGE LDR Add support for src="file://..." links
+ if (strpos($imgsrc, 'file://') === 0) {
+ $imgsrc = str_replace('file://', '/', $imgsrc);
+ $imgsrc = urldecode($imgsrc);
+ $testscrtype = @parse_url($imgsrc);
+ if (empty($testscrtype['query'])) {
+ // convert URL to server path
+ $imgsrc = str_replace(K_PATH_URL, K_PATH_MAIN, $imgsrc);
+ } elseif (preg_match('|^https?://|', $imgsrc) !== 1) {
+ // convert URL to server path
+ $imgsrc = str_replace(K_PATH_MAIN, K_PATH_URL, $imgsrc);
+ }
+ }
+ elseif (($imgsrc[0] === '/') AND !empty($_SERVER['DOCUMENT_ROOT']) AND ($_SERVER['DOCUMENT_ROOT'] != '/')) {
+
* In tecnickcom/tcpdf/include/tcpdf_static, in function fopenLocal, replace
diff --git a/htdocs/core/lib/pdf.lib.php b/htdocs/core/lib/pdf.lib.php
index 59035258c74..3a47fa03bd7 100644
--- a/htdocs/core/lib/pdf.lib.php
+++ b/htdocs/core/lib/pdf.lib.php
@@ -914,7 +914,7 @@ function pdf_pagefoot(&$pdf, $outputlangs, $paramfreetext, $fromcompany, $marge_
//
// become
//
- $newfreetext = preg_replace('/()/', '\1'.DOL_DATA_ROOT.'/medias/\2\3', $newfreetext);
+ $newfreetext = preg_replace('/()/', '\1'.'file:/'.DOL_DATA_ROOT.'/medias/\2\3', $newfreetext);
$line .= $outputlangs->convToOutputCharset($newfreetext);
}
diff --git a/htdocs/includes/tecnickcom/tcpdf/tcpdf.php b/htdocs/includes/tecnickcom/tcpdf/tcpdf.php
index 96ab2f4cbb6..7e12c501403 100644
--- a/htdocs/includes/tecnickcom/tcpdf/tcpdf.php
+++ b/htdocs/includes/tecnickcom/tcpdf/tcpdf.php
@@ -18888,8 +18888,21 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value:
$imgsrc = '@'.base64_decode(substr($imgsrc, 1));
$type = '';
} else {
- if (($imgsrc[0] === '/') AND !empty($_SERVER['DOCUMENT_ROOT']) AND ($_SERVER['DOCUMENT_ROOT'] != '/')) {
- // fix image path
+ // @CHANGE LDR Add support for src="file://..." links
+ if (strpos($imgsrc, 'file://') === 0) {
+ $imgsrc = str_replace('file://', '/', $imgsrc);
+ $imgsrc = urldecode($imgsrc);
+ $testscrtype = @parse_url($imgsrc);
+ if (empty($testscrtype['query'])) {
+ // convert URL to server path
+ $imgsrc = str_replace(K_PATH_URL, K_PATH_MAIN, $imgsrc);
+ } elseif (preg_match('|^https?://|', $imgsrc) !== 1) {
+ // convert URL to server path
+ $imgsrc = str_replace(K_PATH_MAIN, K_PATH_URL, $imgsrc);
+ }
+ }
+ elseif (($imgsrc[0] === '/') AND !empty($_SERVER['DOCUMENT_ROOT']) AND ($_SERVER['DOCUMENT_ROOT'] != '/')) {
+ // fix image path
$findroot = strpos($imgsrc, $_SERVER['DOCUMENT_ROOT']);
if (($findroot === false) OR ($findroot > 1)) {
if (substr($_SERVER['DOCUMENT_ROOT'], -1) == '/') {
@@ -18908,6 +18921,7 @@ Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value:
$imgsrc = str_replace(K_PATH_MAIN, K_PATH_URL, $imgsrc);
}
}
+
// get image type
$type = TCPDF_IMAGES::getImageFileType($imgsrc);
}