Я использую стандартный код DOMPDF для рендеринга существующих веб-страниц (например, 1 ):
$dompdf = new DOMPDF(); $dompdf->set_base_path($artpath); $dompdf->load_html_file($artpath); $dompdf->render(); $dompdf->stream($pdfpath);
где $artpath
'- это путь к HTML-коду, а $pdfpath
– это имя PDF.
Однако веб-страница содержит как относительные ссылки (которые правильно соблюдаются), так и абсолютные ссылки (например, /gifs/bullet.gif
), которые не найдены. Вероятно, это потому, что код DOMPDF выполняется на http://www.epress.ac.uk/src/xtra/makeapdf.php , www.epress.ac.uk
являясь виртуальным доменом на моем сервере, который также содержит виртуальный домен jasss.soc.surrey.ac.uk
(т. е. оба домена находятся на одном сервере). Казалось бы, DOMPDF использует корень документа www.epress.ac.uk
, когда он должен использовать корень документа jasss.surrey.ac.uk
.
Есть ли способ обойти это? Я попытался сбросить $_SERVER['DOCUMENT_ROOT']
в корень документа jasss.soc.surrey.ac.uk
перед вызовом new DOMPDF()
, но это, похоже, не решает проблему. Я получаю такие ошибки, как:
file_get_contents(/styles/jasssarticle.css) [function.file-get-contents]: failed to open stream: No such file or directory Unable to load css file /styles/jasssarticle.css
Веб-страница действительна HTML в соответствии с www validator.w3.org
Спасибо за ваш совет!
Вы загружаете файл через файловую систему. Это означает, что все ссылки на внешние файлы, которые не включают часть домена в пути, отображаются относительно файловой системы. Вы можете ссылаться на файлы тремя способами:
http://example.com/image.png
. Они всегда считываются из указанного URL. /file/path/image.png
. Это читается относительно корня файловой системы , а не корня веб-сайта или домашнего каталога пользователя (в случае совместного использования). file/path/image.png
. Это читается относительно файла HTML. Поэтому в вашем случае файл будет считан из /Volumes/Documents/VirtualSites/jasss/16/2/file/path/image.png
. Вызов $dompdf->set_base_path()
влияет только на относительный путь.
Вам нужно будет изменить абсолютные ссылки на файлы, чтобы включить путь к корню веб-сайта, например /Volumes/Documents/VirtualSites/jasss/styles/jasssarticle.css
, или загрузить файл через веб-сайт, например http://jasss.soc.surrey.ac.uk/16/2/1.html
.