2013-03-01 1 views
2
require_once '../system/conf/options.class.php'; 

$file = basename(urldecode($_GET['logo'])); 
$fileDir = Options::getSetting('S_UPLOAD_DIRECTORY'); 

if (file_exists($fileDir . $file)) { 

    // Note: You should probably do some more checks 
    // on the filetype, size, etc. 
    $contents = file_get_contents($fileDir . $file); 

    $ext = @end(explode('.', $file)); 
    $file = @end(explode('/', $file)); 

    // Note: You should probably implement some kind 
    // of check on filetype 
    header('Content-type: image/' . $ext); 

    echo $contents; 

} 

При выполнении <img class="logo" src="getLogo.php?logo={$PAGE['general']['logo_file']}" /> Изнутри шаблона PDF, я получаю эту ошибкуDOMPDF "Тип изображения Неизвестный" с помощью установки getImage.php

тип изображения неизвестную getLogo.php? Логотип = 75c562d5-8718 -411c-a464-72c4d1c35f49.png

Я также попытался <img class="logo" href="getLogo.php?logo={$PAGE['general']['logo_file']}" />, который не показывает ошибку, но не показывает изображение, либо.

Есть ли простое решение?

+0

Как вы реализуете dompdf? Возможно, ваш скрипт getLogo.php может быть достаточным, но поскольку ваш PHP нужно разобрать, ваш сценарий должен быть доступен через веб-сервер. Это имеет значение для того, как вы загружаете документ в dompdf и как вы ссылаетесь на изображение source. – BrianS

+0

Я уверен, что поскольку dompdf работает как php на сервере, загрузка файла изображения за пределы корня веб-сайта не будет проблемой, так что в настоящее время я ' m просто загружает статическое изображение. Если его проблема в производстве, я могу перенести их в корневой каталог документа, поскольку это просто логотипы. Что касается того, как я реализую dompdf, я уверен, что знаю, что вы имеете в виду. Я получаю html для dmpdf obj через smarty и поток pdf. – DavidScherer

+1

Да, загрузка изображения из файловой системы в порядке. Что касается реализации, я имею в виду код, который вы используете. Основываясь на вашем комментарии, я предполагаю, что вы создаете свой HTML-документ, а затем загружаете его в dompdf, используя '$ dompdf-> load_html()'. В этом случае dompdf обрабатывает документ так, как будто он поступает из локальной файловой системы. Это означает, что изображения, на которые ссылаются без домена, будут извлекаться через локальную файловую систему. Поэтому ссылки на изображения, которые являются скриптами PHP, не будут работать, потому что PHP не будет анализироваться. За исключением этого, используйте что-то вроде ' BrianS

ответ

0

Основываясь на комментариях ... вы создаете свой HTML-документ, а затем загружаете его в Dompdf, используя $dompdf->load_html(). В этом случае Dompdf рассматривает документ так, как будто он поступает из локальной файловой системы. Это означает, что изображения, на которые ссылаются без домена, будут извлекаться через локальную файловую систему. Поэтому ссылки на изображения, которые являются скриптами PHP, не будут работать, потому что PHP не будет анализироваться. Короткий его, использовать что-то вроде <img src="http://example.com/getLogo.php... «> если вы можете.


Есть несколько SO ответов, которые могут помочь в определении того, как пути определяются при загрузке локального файла с использованием load_html_file и load_html.

Смежные вопросы