以下代码是来自DOMPDF库的原始代码:它可以处理。ttf字体的子集,我一直试图使这段代码适应我的基本需求,不幸的是,我无法让代码运行,因为我想…我有以下问题可以帮助我继续!
我如何编辑这段代码,使其不会强制下载,而是将其保存到服务器?
我已经尝试了以下方法来禁用强制下载,
禁用标题内容配置不会完全禁用它的动作,它会触发一个新的下载与实际内容的二进制代码,为什么这样做?也许函数readfile()必须对这个问题做一些事情,在我的理解中,它将输出内容到输出缓冲区并显示它。我怎么能防止这样做,并存储它与file_put_contents() ?
if (isset($_POST["subset"])) {
$subset = $_POST["subset"];
ob_start();
require_once "../src/FontLib/Autoloader.php";
$font = Font::load($fontfile);
$font->parse();
$font->setSubset($subset);
$font->reduce();
$new_filename = basename($fontfile);
$dot = strpos($new_filename, ".");
$new_filename = substr($new_filename, 0, $dot)."-subset".substr($new_filename, $dot);
header("Content-Type: font/truetype");
header("Content-Disposition: attachment; filename='"$new_filename'"");
$tmp = tempnam(sys_get_temp_dir(), "fnt");
$font->open($tmp, Binary_Stream::modeWrite);
$font->encode(array("OS/2"));
$font->close();
ob_end_clean();
readfile($tmp);
unlink($tmp);
return;
}
您应该注意的几件事:
readfile -读取文件并将其写入输出缓冲区。unlink -用于删除文件。
上面的代码创建了一个临时文件,使用readline函数将该文件的内容发送到输出缓冲区,然后在整个文件被缓冲后立即删除该文件。如果不想服务器化该文件,请删除对header、readline和unlink的调用。您想要的文件的路径已经存储在$tmp变量中,因此您可以根据需要对其进行操作。