【发布时间】:2017-01-06 10:09:48
【问题描述】:
我想用 dompdf 在我的 wordpress 主页上创建一个 pdf。用xampp本地我的电脑没有问题,一切正常。 在 wordpress 上,我使用插件“PHP Code For Posts”。我复制到插件文件夹的dompdf文件夹。 pdf 已创建,但有缺陷。
<?php
if(isset($_POST['button']))
{
require_once("dompdf/dompdf_config.inc.php");
spl_autoload_register('DOMPDF_autoload');
function pdf_create($filename, $paper, $orientation, $stream=TRUE)
{
$dompdf = new DOMPDF();
$dompdf->set_paper($paper, $orientation);
$dompdf->load_html('TEST');
$dompdf->render();
$dompdf->stream($filename.".pdf");
}
$filename = 'file_name';
$dompdf = new DOMPDF();
pdf_create($filename, 'A4', 'portait');
}
?>
<form method="post" >
<p>Test: <input type="text" name="price" /></p>
<p><input type="submit" name="button" value="PDF" /></p>
</form>
我希望有人可以帮助我。我不知道为什么它在本地工作,而在 wordpress 上它会创建一个有缺陷的文件。
更新:
这是我用记事本打开有缺陷的文件时的代码。
<!DOCTYPE html>
<html lang="de-DE">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="profile" href="http://gmpg.org/xfn/11">
<link rel="pingback" href="http://test-homepage.de/xmlrpc.php">
<!--[if lt IE 9]>
<script src="http://test-homepage.de/wp-content/themes/zerif-pro/js/html5.js"></script>
<link rel="stylesheet" href="http://test-homepage.de/wp-content/themes/zerif-pro/css/ie.css" type="text/css">
<![endif]-->
<title>Test – test-homepage</title>
<link rel="alternate" type="application/rss+xml" title="test-homepage » Feed" href="http://test-homepage.de/feed/" />
<script type="text/javascript">
window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/72x72\/","ext":".png","source":{"concatemoji":"http:\/\/test-homepage.de\/wp-includes\/js\/wp-emoji-release.min.js?ver=4.5.3"}};
【问题讨论】:
-
下载 PDF 文件并在记事本或类似程序中打开。检查文档的标题,在大多数情况下,您会发现打乱 PDF 标题的 PHP 错误或警告消息。还要检查文件大小,如果它是 0KB,则错误阻止 DOMPDF lib 在将文档流式传输到客户端之前将文档保存在临时文件夹中。
-
起初文件没有 0 KB。而且用记事本我也找不到任何错误。我在上面的问题中添加了记事本中的代码。
-
“在 wordpress 上我正在使用插件“PHP Code For Posts””——这可能是问题的一部分……很可能该插件旨在插入简短的 sn- ps 的 PHP 代码(分别是它们的输出)到渲染的帖子内容中——但它不会阻止“围绕”它的整个模板将被渲染,因此最终你仍然会得到一个完整的 HTML 文档,并且不是有效的 PDF。由于您似乎没有在代码中使用任何 WP 功能(?),因此将其作为独立脚本调用可能会更容易。
-
正如 Cbroe 所提到的,插件通常只会向 Wordpress 添加功能,并且在大多数情况下,它将作为 Wordpress 布局的一部分加载,因此将包含模板中的 HTML。根据您的 php.ini 设置,可能会有 hack 可用;我将添加一个示例作为答案来说明这是如何工作的。
-
我使用这个插件是因为短代码。我想创建一个 woocommerce 目录,而不是“添加到购物车”按钮,我想要一个用于创建 pdf 的按钮。我从 csv 文件导入此目录的产品。我的 csv 导入插件有一个修复保存的模板,我可以在其中添加 php 短代码。所以我可以确定我在所有产品页面上总是有 pdf 创建按钮。也许会有更优雅的方式,但我没有学过php,所以这对我来说都是新的和困难的。