PHP:Adobe Reader 无法打开使用 mpdf 创建的 PDF 文件

2023-11-23

我正在使用 mpdf 即时创建 PDF 文件,文件可以在浏览器中正常打开,但 Adob​​e 给我一个错误:

Adobe Acrobat Reader DC 无法打开“example-filename.pdf” 因为它不是受支持的文件类型,或者因为该文件 已损坏(例如,它作为电子邮件附件发送 并且未正确解码)。

我查看了与此相关的其他问题(另一个 mpdf + adobe 错误),然后在文本编辑器中查看 pdf。我发现该文件的第一部分如下所示:

<!DOCTYPE html>
<head>
    <title>
        CapstoneDB
    </title>
    %PDF-1.4
%âãÏÓ

在我删除所有内容之后%PDF-1.4(包括选项卡),文件在 Adob​​e 中打开得很好,这很棒,除了我需要能够在 Adob​​e 中打开生成的 pdf 文件,而无需每次都手动摆弄代码。

这是我的包装函数,它使用 html 和 css 调用 mpdf:

include('../mpdf/mpdf.php');

function user_download_pdf($html, $css_file, $filename) {
    $mpdf = new mPDF();
    $stylesheet = file_get_contents($css_file);
    $mpdf->WriteHTML($stylesheet,1);
    $mpdf->WriteHTML($html,2);
    $mpdf->Output($filename, "D");
}

我从不向 mpdf 提供完整的 html 页面,通常只是一个 h3 和一个或多个表格。也许我需要给 mpdf 一个完整的 html 页面,包括<head>, <body>, ETC?有没有什么方法可以更改 mpdf 配置或我在 php 中调用 mpdf 的方式来消除 pdf 文件开头的 html 垃圾,这些垃圾会搞乱一切?


Place

ob_clean(); 

就在之前

$mpdf->Output();

如果没有这个,mpdf 有时会包含网站页面 HTML,而不仅仅是 PDF 中所需的 HTML,这可能是因为标头已发送到代码中的其他位置。这可能会弄乱您的 PDF,导致 Adob​​e 无法打开它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP:Adobe Reader 无法打开使用 mpdf 创建的 PDF 文件 的相关文章

  • 从 smarty 访问 PHP 文件的变量(本地或全局)

    我有一个 php 文件 其中包含一些本地和全局变量 例如 foo 从此文件中调用 smarty 对象 如何在不更改 PHP 文件的情况下从 smarty 脚本访问 foo Thanks 如果你有一个名为 BASE 的常量变量 并且定义如下
  • 学说迁移后备

    我们正在使用原则迁移 当迁移包含多个操作并且其中一个操作失败时 通常会出现问题 例如 如果迁移添加了 5 个外键 其中第 5 个失败 而字段长度不同 则修复字段错误并重新生成迁移不会not修复整个问题 而现在出现一个与 4 个密钥已存在有关
  • preg_match_all 查询仅显示有问题的外部组

    我无法弄清楚如何只显示 preg 查询的外部组级别 我会给你一个例子 preg match all start end input matches 这个输入start1 start2 2end 1end产生这个输出start1 start2
  • 使用 JavaScript 使链接保持活动状态并在单击时显示悬停效果

    I am struggling to make this work I d like to make it where if O F is clicked the hover state stays active if another li
  • PHP 在输入流中使用 fwrite 和 fread

    我正在寻找将 PHP 输入流的内容写入磁盘的最有效方法 而不使用授予 PHP 脚本的大量内存 例如 如果可以上传的最大文件大小为 1 GB 但 PHP 只有 32 MB 内存 define MAX FILE LEN 1073741824 1
  • 在 Wordpress 站点中进行 AJAX 调用时出现问题

    我在使用 Wordpress 站点功能的 AJAX 部分时遇到了一些问题 该功能接受在表单上输入的邮政编码 使用 PHP 函数来查找邮政编码是否引用特定位置并返回到该位置的永久链接 我的第一个问题是关于我构建的表单 现在我的表单操作是空白的
  • 保持未知数量的 div 居中,每行最多 4 个

    我有一个简单的问题 但我自己无法解决 简而言之 有一个未知电话我必须在页面中放置的元素数量 最多 每行 4 个元素 但仍居中 此图片给您一个提示 我为了示例而设置它 详细 在上图中我涵盖了不同的场景 例如 如果总共有 5 个元素 则应使用第
  • MVC 在布局代码之前执行视图代码并破坏我的脚本顺序

    我正在尝试将所有 javascript 包含内容移至页面底部 我正在将 MVC 与 Razor 一起使用 我编写了一个辅助方法来注册脚本 它按注册顺序保留脚本 并排除重复的内容 Html RegisterScript scripts som
  • SQL 最近日期

    我需要在 php 中获取诸如 2010 04 27 之类的日期作为字符串 并在表中找到最近的 5 个日期 表中的日期保存为日期类型 您可以使用DATEDIFF http dev mysql com doc refman 5 1 en dat
  • 将div设置为隐藏,延时后可见

    我试图在 X 时间后 也许甚至在随机时间之后 但现在我们只做固定时间 在黑色背景上出现一个黄色方块 function initialSetup if document getElementById yellow null document
  • 如何在 PHP 中从 IP 地址/国家/地区名称查找时区 ID?

    谁能告诉我 PHP 中是否有任何方法可以从 IP 地址或国家 地区名称获取时区区域 例如 亚洲 加尔各答 描述 我正在尝试根据他 她的国家 地区设置用户时区 我从他的 IP 地址获取用户所在国家 地区 但我需要该国家 地区的时区区域 例如
  • HTML 离线应用程序缓存,列出下载的文件

    作为我正在构建的离线 Web 应用程序的加载屏幕的一部分 使用缓存清单 http developer apple com library safari documentation iPhone Conceptual SafariJSData
  • 为什么我不能在 AngularJS 中使用 data-* 作为指令的属性名称?

    On the t他的笨蛋 http plnkr co edit l3KoY3 p preview您可以注意到属性名称模式的奇怪行为data 在指令中 电话 Test of data named attribute br
  • 使用正则表达式提取两个短语之间的所有单词[重复]

    这个问题在这里已经有答案了 我正在尝试使用以下正则表达式提取两个短语之间的所有单词 b item W w W 0 2 1 one W w W 0 3 business b b item W w W 0 2 3 three W w W 0 3
  • 如何在 Laravel 中使用 PUT http 动词提交表单

    我知道这个问题可能已经提出 但我就是无法让它发挥作用 如果有人可以帮助我 我将非常感激 我安装了 colletive form 但答案也可以是 html 表单标签 现在列出我的表格 我的路线和我的例外情况 Form model array
  • 为什么 Composer 降级了我的包?

    php composer phar update这样做了 删除了 2 3 0 软件包并安装了整个 2 2 5 Zend Framework php composer phar update Loading composer reposito
  • Magento - 自定义支付模块

    这是一个非常普遍的问题 但这里是 我正在尝试在 Magento 中创建一个自定义支付模块 我创建了一个 常规 模块 可以连接到 Magento 事件 观察者模型 但是我如何告诉 Magento 将模块视为支付模块 以便它显示在管理后端和结账
  • 简单的 PHP 表单:电子邮件附件(代码 Golf)

    想象一下 一个用户想要在其网站上放置一个表单 该表单将允许网站访问者上传一个文件和一条简单的消息 该消息将立即通过电子邮件发送 即 该文件未存储在服务器上 或者如果该文件存储在服务器上 仅暂时 作为文件附件 并在邮件正文中添加注释 查看更多
  • Schema.org 的常见问题解答页面

    我有一个常见问题解答页面 我想用更好的 html 架构来实现它
  • post php mysql 的拆分关键字

    我有一个表存储帖子 ID 它的标签如下 Post id Tags 1 keyword1 keyword2 keyword3 我想循环遍历该表中的每一行并执行以下操作 将关键字1 关键字2 关键字3放入新表中 word id word val

随机推荐

  • 熊猫滚动窗口百分位排名

    我正在尝试在滚动窗口内按列计算数据的百分位数排名 test pd DataFrame np random randn 20 3 pd date range 1 1 2000 periods 20 A B C test Out 111 A B
  • Google Chrome cookie 最长过期日期

    当我使用以下 php 行创建一个新 cookie 时 我正在创建我的网站 setcookie subscribed true time 365 24 3600 100 null false true 我意识到我的浏览器 Google Chr
  • 使用 python 求解非方阵 A 的 Ax =b

    我关注的是特殊情况A是一个 n x d 矩阵 其中 k numpy 但是它们仅适用于方阵 我采用了用一些线性独立向量填充矩阵以对其进行 平方 然后求解的方法 但我无法弄清楚如何选择这些向量 以便它们与基向量线性无关 而且我认为它是这不是唯一
  • requestAnimationFrame 循环不正确 FPS

    我有一个 javascript 函数 我的游戏 希望 每秒循环 60 次 用于控制输入 绘图等 目前的编码方式似乎始终在 52 左右 明显低于 60 fps 甚至在没有其他事情发生时甚至会下降到 25 30 fps function loo
  • 除了下面之外还有其他方法可以将 json.rows 文件加载到 RStudio 中吗?

    我有一个 json rows 文件 gt instances json rows 大约有 223k 行 我尝试使用 jsonlite 并想出了 instancesfile lt fromJSON instances json rows 但我
  • Typescript:从数组类型中检索元素类型信息

    假设我有一些数组类型T 是否可以提取类型T在另一个别名 接口中 例如 我的 假的 理想代码如下 for illustration only type ArrayElement
  • 错误:[$compile:multidir] 多个指令 [form, form] 请求“form”控制器:

    我在 angularjs 中构建的表单上收到此错误 错误 compile multidir 多个指令 form form 请求 form 控制器 div ul li div job role div div job salary div d
  • 运行 shell 脚本并立即将其置于后台,但保留检查其输出的能力

    如何立即运行 shell 脚本背景但是 它仍然可以通过尾随来随时检查其输出 tmp output txt 如果可以就好了前景这个过程太晚了 P S 如果您还可以向我展示如何将后台进程 发送 到可能已初始化或尚未初始化的 GNU 屏幕 那就太
  • 从 csv 文件中的数据创建多个 csv 文件

    系统 OSX 或 Linux 我正在尝试自动化我的工作流程 每周我都会收到一个 excel 文件 我会将其转换为 csv 一个例子是 L1 L2 L3 L4 L5 L6 L7 L8 L9 L10 L11 Title r t needed a
  • 为什么 Java 5+ API 不利用协变返回类型?

    从 Java 5 开始 我们可以协变返回类型 为什么 Java API 不利用这一点呢 Take Graphics2D create 例如 为什么不重写它来返回Graphics2D目的 在我看来 它在所有情况下都是向后兼容的 总的来说 这确
  • Mac OS X 上链接库的默认搜索目录是什么

    我已经建立了谷歌测试在 Mac OS X 上使用 CMake 并获得两个共享库 libgtest dylib and libgtest main dylib 现在我需要安装它们 我知道Linux上有一些默认的搜索目录 例如 usr lib
  • 在 Windows 中以编程方式确认打印成功

    我的公司正在开发一个财务应用程序 现在我们必须应对一项新法律 该法律要求我们无论是否打印收据都采取不同的行动 收据使用 Windows 中的标准打印队列在 A4 纸上的激光打印机上打印 有没有办法以编程方式检查某个打印作业是否确实成功 需要
  • 日期格式化后以小写形式显示 AM 和 PM

    格式化日期时间后 时间以大写形式显示 AM 或 PM 但我希望它以小写形式显示 例如 am 或 pm 这是我的代码 public class Timeis public static void main String s long ts 1
  • 单个 EventMachine 反应器中的多个服务器

    是否可以在单个事件机器中运行多个服务器 我的意思是单个客户端连接可以同时使用多个服务 例如 登录服务器对用户进行身份验证 然后用户可以通过单个客户端套接字同时使用聊天室和简单的游戏 例如跳棋 或者每个服务是否需要多个 eventmachin
  • 在 Python 中通过 HTTP 将未知大小的数据从客户端流式传输到服务器

    不幸的是 我之前的问题因是问题的 精确副本 而被关闭 而它绝对不是 特此再次 它不是重复的Python HTTP 使用流式传输大文件 那个处理的是大文件的流传输 我想将文件的任意块一一发送到同一个 http 连接 所以我有一个 20 MB
  • 带 switch 和 ForEach 的 Golang 模板

    我需要创建bash sh来自 golang 程序的文件 应该执行以下操作 Create ForEach循环依赖项并读取类型并根据类型 打印不同的回显消息 命令 我需要它来使用switch on the type与 Golang 的依赖关系
  • 如何将SQL Server数据库迁移到MySQL? [关闭]

    Closed 这个问题是无关 目前不接受答案 我有一个SQL服务器数据库有大量数据和空数据MySQL数据库 现在我想将SQL Server数据库的所有数据 包括数据库架构 复制到MySQL数据库 我考虑过使用原始 SQL 转储 但 SQL
  • 如何在我的网站上显示来自 Amazon S3 的图像?

    我的照片存储在 Amazon S3 上 这些图片是私人的 不公开 所以我无法通过直接链接显示它们s3 amazonaws bucket name key name image name jpg 我知道 Amazon S3 上的图像名称 如何
  • 通过 IN 子句对 SQL Server 结果进行排序

    我有一个使用 IN 子句的存储过程 在我的 ASP NET 应用程序中 我有一个多行文本框 它向存储过程提供值 我希望能够按文本框中输入的值进行排序 我找到了如何在 mySQL 中轻松执行此操作 使用 FIELD 函数 但没有找到 SQL
  • PHP:Adobe Reader 无法打开使用 mpdf 创建的 PDF 文件

    我正在使用 mpdf 即时创建 PDF 文件 文件可以在浏览器中正常打开 但 Adob e 给我一个错误 Adobe Acrobat Reader DC 无法打开 example filename pdf 因为它不是受支持的文件类型 或者因