使用带有绝对链接的 dompdf

2024-03-01

我正在使用标准 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(使用前将#替换为@)

使用带有绝对链接的 dompdf 的相关文章

  • 从关系中合并 Laravel 中的集合

    假设我有 3 张桌子 Images Subject Style 关系是多对多 图像 主题 和多对多 图像 样式 现在我想做一些类似的事情 result subjectResult gt images gt merge styleResult
  • 如何更改 Ubuntu 14.04 上的 php-cli 版本?

    我是 Linux 新手 在篡改时破坏了一些 php 设置 如果我执行一个包含以下内容的 php 脚本 phpinfo 它显示 php 版本为 5 6 但通过命令行 如果我运行php v它返回 7 0 版本 我想让两个版本匹配 我怎样才能修复
  • preg_match 所有以@开头的单词?

    我对正则表达式不太确定 所以我不得不问你 如何用 PHP 判断字符串中是否包含以 开头的单词 例如我有一个像 This is for codeworxx 这样的字符串 我很抱歉 但我没有任何起点 希望你能帮忙 谢谢 萨沙 好的 谢谢你的结果
  • PHP 和 DOM 文档

    我有一个关于 DOMDocument 的使用和创建 XML 的问题 我有一个 PHP 程序 加载到 XML 文件中 处理XML的每个节点 行 将其发送到另一个进程 然后该进程返回一个 XML 元素 我获取节点的字符串表示形式 以便可以创建
  • php 或 zend 中国际电话号码验证的正则表达式是什么?

    我有一个 zend 表单 其中有一个电话号码字段 并且必须检查验证器 我决定为此使用正则表达式 我搜索了谷歌 但我得到的结果不起作用 谁能给我提供正则表达式 这是我的代码 phone new Zend Form Element Text p
  • 有没有办法在不使用 foreach 或其他函数的情况下在 PHP 中内爆关联数组的键和值?

    我有一个像这样的关联数组 myarray array a gt 1 b gt 2 c gt 3 我想显示数组键和值 如下所示 a is 1 b is 2 c is 3 我不想使用 print r 或 var dump 来执行此操作 我也不想
  • 匹配括号内任何字符的正则表达式

    尝试创建一个与括号内的任何字符匹配的正则表达式 我的正则表达式模式是这样的 preg match listanswer answer 括号内的所有字符串都是匹配模式 但问题是 当我尝试匹配例如 this word sample data 它
  • 如何在 Laravel 中 session_write_close() ?

    Running session write close before sleep 在 Laravel 中似乎不起作用 因为会话仍然被其他请求阻止 直到当前连接完成 我试图sleep 在 Laravel 中 不会阻止其他请求 发现 sessi
  • 如何使用 PHP 查找目录中的前 5 个文件?

    如何使用 PHP 列出按字母顺序排序的目录中的前 5 个文件或目录 Using scandir array slice array filter scandir path to dir is file 0 5 The array filte
  • 如何将 .env 添加到 codeigniter?

    我尝试按照以下步骤使 php 连接到 Outlookhttps learn microsoft com en us outlook rest php tutorial https learn microsoft com en us outl
  • 在 Laravel 中按数据透视表 create_at 排序

    在我的数据库中 我有以下表格 courses id 名称 创建时间 更新时间 students id 名称 创建时间 更新时间 课程 学生 id course id student id created at updated at 我正在尝
  • .htaccess 在动态文件夹名称中加载索引

    我在 htaccess 加载动态文件夹名称中的索引时遇到问题 这是我的目录结构 root products gt this is constant folder name 而不是使用 GET 获取产品 url root products i
  • 从文本文件 PHP 读取数据

    我只是想知道如何在 php 中读取文本文件 我想让它显示文本文件中的最后 200 个条目 每个条目都在一个新行上 Like John White Jane Does John Does Someones Name 等等 Thanks Use
  • PHP OOP 静态属性语法错误 [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 为什么不
  • 使用 Flot、html、PHP 和 MySql 查询绘制多个图表

    我正在尝试使用 Flot html PHP 和 MySql 查询绘制多个图表 但我陷入了困境 因为我找不到在同一个 html 页面中绘制多个 flot 的方法 为简单起见 在数据库 test db3 映像中包含以下字段 表1 用户名 发送邮
  • 仅在 Chrome 上我收到此错误:Uncaught TypeError: Illegal constructor [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 当我在 Chrome 上加载 jQuery 时 我会收到此错误 Uncaught TypeError Illegal constr
  • 直接将 .aspx 转换为 .pdf [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何根据另一个下拉列表中的选择动态填充下拉列表中的选项?

    我有一个表 其中包含类别信息 例如产品 我已将它们列在下拉菜单中 现在 我需要做的是 在下一个下拉菜单中列出所选类别的子类别 我希望 javascript 是必需的 但我对 javascript 还不太熟悉 将非常感谢您的帮助 你应该使用
  • PHP 用星号替换所有字符

    假设我有一个字符串形式的密码 password thisisaplaintextpassword 我怎样才能把它变成下面的样子 password 我想通过电子邮件向用户发送他们的帐户详细信息 但不想发送整个内容 Use 字符串重复 http
  • MYSQL 的 Google OAuth 2.0 用户 ID 数据类型

    我正在实施 Google OAuth 2 0 并注意到 Google OAuth 返回的唯一用户 ID 是21位数字长的 我想大整数 20 足以满足这种需求 但我现在看到 Google OAuth 返回的用户 ID 的长度感到困惑 关于我应

随机推荐

  • 使用 Geb 维护测试之间的会话

    我正在使用 Geb 测试我的应用程序 并且我想在测试之间保持会话 这样我就可以避免登录每个测试 在浏览器中观看测试时这很烦人 有没有办法保持会话 默认情况下 Geb 测试集成会在每次测试后清除所有 cookie 这意味着您会丢失 Web 会
  • Python如何在使用Python写入新值后保持XML注释存在?

    我有一个 XML 文件 然后需要更新一些值 我的 XML 文件包含注释 我想在编写 XML 后保留注释 但它消失了 这是我的 XML
  • 如何将静态字符串与 XML 字符串资源连接起来?

    我正在尝试将静态 硬编码 字符串与引用的字符串结合起来strings xml对于字符串数组项 目标是拥有一个动态指标列表 其中所有语言的数字都相同 但指标文本值可能会因语言而变化 如下所示
  • 我应该将 Eclipse 插件片段的测试代码放在哪里?

    我在搜索 Eclipse 插件测试代码放置位置的最佳实践时发现了几篇文章 他们中的大多数人建议像这样的片段this http rcpquickstart wordpress com 2007 06 20 unit testing plug
  • 如何在 MySQL LIKE 子句中使用用户变量?

    我正在尝试设置一些简单的 SQL 脚本来帮助进行一些短期数据库管理 因此 我正在设置变量以尝试更轻松地重用这些脚本 我遇到的问题具体与 LIKE 子句有关 SET email email protected cdn cgi l email
  • Ruby 是否使用 $stdout 来写入 put 和 return 的输出?

    我想知道 Ruby 使用输出流在命令行打印这些内容 irb main 001 0 gt a test gt test irb main 002 0 gt puts a test gt nil irb main 003 0 gt a gt t
  • 实例 ID 服务是否会在应用升级时启动回调 onTokenRefresh()?

    实例 ID 服务是否会在应用升级时启动回调 onTokenRefresh 参考doc https developers google com instance id 指出 令牌是唯一且安全的 但如果出现安全问题或用户在设备恢复期间卸载并重新
  • 编写 TypeScript 并为浏览器和节点生成一个库

    我有一个在 Node js 和浏览器中使用的内部库 它有许多文件 与 Grunt 任务和不同的序言连接在一起 一个用于浏览器 一个用于 Node browser dependent 3rd party libs like Mustache
  • 一个视图连接到多个模型

    我有以下问题 MyView它连接到两个视图 TaskModel and UserModel TaskModel id 1 taskName myTask creatorName myName creator id 2 UserModel i
  • 多键多值非确定性Python字典

    已经有一个多键字典 https pypi python org pypi multi key dict 1 0 2在 python 中 也是一个多值字典 我需要一个 python 字典 它既是 example probabilistical
  • JNI 错误(应用程序错误):本地引用表溢出(最大值 = 512)

    我正在尝试运行LibSVMAndroid分类 https github com spencerimp LibsvmAndroidClassification带有我自己的数据集的 Android 项目 它与已提供的数据集配合得很好 当我使用
  • 在 Docker 中使用 RabbitMQ 删除容器

    我尝试使用RabbitMQ启动Docker容器 结果下载了镜像 但容器没有启动 我在日志中收到以下消息 error RABBITMQ DEFAULT PASS is set but deprecated error RABBITMQ DEF
  • 如何将变量传递给“data-target=”角度2

    我正在使用 Angular 2 Typescript 我想创建一个切换折叠列表 这很简单 只需一个 id 即可data target但我循环遍历一个列表 所以我有动态 ID 名称 我想在我的中传递一个变量data target这样我就可以获
  • 如何在 AvalonEdit 中使文本居中?

    我正在使用 ICSharpCode 的 AvalonEdit 文本编辑器 并且有一个自定义 DocumentColorizingTransformer 我想将 ColorizeLine 内的某些文本行居中 这可能吗 我已经能够弄清楚如何以我
  • 创建 deps.edn 文件时出现问题

    大家 我决定完全重写这篇文章 以清晰的方式展示它 首先感谢大家的支持 我很感激 这是 The Clojure Workshop Packt 中的练习 我陷入了困境 我的 IDE 是 IntelliJ 我使用的是 Windows 练习 4 1
  • 正确的 chromium 浏览器品牌?

    我正在研究 Chromium 叉子 如何替换 Chromium 资源和应用程序包 资源 我发现有一天android branding res dirsgn 参数是介绍 https chromium googlesource com chro
  • 没有窗口对象存在 webpack nodejs

    我使用 webpack 和 babel 来编译我的 ecmascript 6 代码 一切正常 但如果我添加某些依赖项 例如 requests npm 包 这是我的文件 main js import os from os export cla
  • 在 Info.plist 中指定设备系列

    有没有一种方法可以仅根据 Info plist 中的键来指定设备系列 而不更改构建设置 我读过有关 UIDeviceFamily 在构建时自动添加到 Info plist 的信息 并且文档说我不应该手动添加此键 假设我无法使用 Xcode
  • Makefile 中 TARGET_ARCH 变量的用途是什么

    我注意到 Gnu Make 中的隐式规则是变量 TARGET ARCH 例如 LINK o LOADLIBES LDLIBS o LINK o CC LDFLAGS TARGET ARCH 我认为交叉编译需要这个变量 但我在 Gnu Mak
  • 使用带有绝对链接的 dompdf

    我正在使用标准 DOMPDF 代码来呈现现有网页 例如1 http jasss soc surrey ac uk 16 2 1 html dompdf new DOMPDF dompdf gt set base path artpath d