使用DOMPDF与绝对链接(Using dompdf with absolute links)

2019-08-18 06:17发布

我使用的标准DOMPDF代码以使现有的Web页面(例如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

该网页是根据WWW validator.w3.org有效的HTML

谢谢你的建议!

Answer 1:

你通过加载文件系统中的文件。 这意味着不包括在路径中的域部分相对于文件系统被渲染外部文件中的所有引用。 您可以通过三种方式引用文件:

  • 完整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

调用$dompdf->set_base_path()只影响相对路径。

你将不得不修改文件的绝对引用包括路径到网站根目录,如/Volumes/Documents/VirtualSites/jasss/styles/jasssarticle.css ,或通过网站,例如加载文件http://jasss.soc.surrey.ac.uk/16/2/1.html



文章来源: Using dompdf with absolute links