我正在使用标准 DOMPDF 代码来呈现现有网页(例如1 http://jasss.soc.surrey.ac.uk/16/2/1.html):
$dompdf = new DOMPDF();
$dompdf->set_base_path($artpath);
$dompdf->load_html_file($artpath);
$dompdf->render();
$dompdf->stream($pdfpath);
where $artpath
' 是 HTML 代码的路径,$pdfpath
是 PDF 的名称。
但是,网页同时包含相对链接(正确遵循的链接)和绝对链接(例如/gifs/bullet.gif
) 没有找到。这可能是因为 DOMPDF 代码正在执行http://www.epress.ac.uk/src/xtra/makeapdf.php http://www.epress.ac.uk/src/xtra/makeapdf.php, www.epress.ac.uk
作为我的服务器上的虚拟域,该服务器也托管该虚拟域jasss.soc.surrey.ac.uk
(也就是说,两个域都位于same服务器)。看来 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
根据 www validator.w3.org,该网页是有效的 HTML
谢谢你的建议!
您正在通过文件系统加载文件。这意味着对路径中不包含域部分的外部文件的所有引用都是相对于文件系统呈现的。您可以通过三种方式引用文件:
- 完整 URL(包括域名),例如
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
.
Calling $dompdf->set_base_path()
只影响相对路径。
您必须修改绝对文件引用以包含网站根目录的路径,例如/Volumes/Documents/VirtualSites/jasss/styles/jasssarticle.css
,或通过网站加载文件,例如http://jasss.soc.surrey.ac.uk/16/2/1.html
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)