gpt4 book ai didi

pdf - 在 Linux 服务器上使用 wkhtmltopdf 创建 PDF

转载 作者:太空宇宙 更新时间:2023-11-04 12:58:54 25 4
gpt4 key购买 nike

我创建了一个 Wordpress 网站,该网站在 WAMP 服务器和由 GoDaddy 托管的 Linux 服务器上运行。

我正在使用 wkhtmltopdf 生成 PDF 文档。

在 WAMP 服务器上,一切都按预期工作,但在 Godaddy+Linux 服务器上,没有创建 PDF,我只是得到一个空文档。

我检查了日志,没有列出任何内容。

是我在linux环境下的代码做错了,还是服务器端主机有问题?

<?php

require_once("../../../../wp-blog-header.php");

if ($_SERVER['REQUEST_METHOD'] === 'GET' && isset($_GET['url']) && !empty($_GET['url'])) {
$post_id = url_to_postid($_GET['url']);
$post = $post_id ? get_post($post_id) : null;

if($post){
$post_url = get_permalink($post_id);
$html = file_get_contents($post_url);

$descriptorspec = array(
0 => array('pipe', 'r'), // stdin
1 => array('pipe', 'w'), // stdout
2 => array('pipe', 'a'), // stderr <http://us3.php.net/manual/en/function.proc-open.php#97012>
);
$exe_path = (PHP_OS == 'WINNT') ? '"C:/wamp/bin/wkhtmltopdf/wkhtmltopdf.exe"' : ($_SERVER["DOCUMENT_ROOT"] . "/cgi-bin/whkhtmltopdf");

//$process = proc_open("$exe_path -q - -", $descriptorspec, $pipes);
$process = proc_open("$exe_path -q --print-media-type - -", $descriptorspec, $pipes);

// Send the HTML on stdin
fwrite($pipes[0], $html);
fclose($pipes[0]);

//stream_set_timeout($pipes[1], 1);
//stream_set_timeout($pipes[2], 1);

// Read the outputs
$pdf = stream_get_contents($pipes[1]);
$errors = stream_get_contents($pipes[2]);

// Close the process
fclose($pipes[1]);
$return_value = proc_close($process);

if($errors) {
header("HTTP/1.1 500 Internal Server Error");
header('Content-Type: text/plain');
echo "An error occurred during PDF generation:\r\n\r\n$errors";
} else {
$file_name = "$post->post_title.pdf";

header('Content-Type: application/pdf');
header('Cache-Control: public, must-revalidate, max-age=0'); // HTTP/1.1
header('Pragma: public');
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past
header('Last-Modified: ' . gmdate('D, d M Y H:i:s').' GMT');
header('Content-Length: ' . strlen($pdf));
header('Content-Disposition: inline; filename="' . $file_name . '";');
echo $pdf;
}
} else {
header("HTTP/1.1 500 Internal Server Error");
header('Content-Type: text/plain');
echo "An error occurred during PDF generation:\r\n\r\nUnrecognized post.";
}
}

最佳答案

原来这个问题对我来说是双重的。我能够确定我使用了错误的可执行版本(32 位与 64 位)。命令行中有一个段错误代码,修复后导致我遇到另一个问题,即服务器上缺少许多库。

关于pdf - 在 Linux 服务器上使用 wkhtmltopdf 创建 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34822048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com