TCPDF 将文件保存到文件夹?

Posted

技术标签:

【中文标题】TCPDF 将文件保存到文件夹?【英文标题】:TCPDF Save file to folder? 【发布时间】:2012-08-31 12:53:48 【问题描述】:

我正在使用 TCPDF 打印收据,然后使用 phpMailer 将其发送给客户,但我有一个问题:

我不知道如何将文件保存为 pdf。

我试过了:

// reset pointer to the last page
$pdf->lastPage();

//Close and output PDF document
$pdf->Output('kuitti'.$ordernumber.'.pdf', 'I');
$this->Output("kuitit");

【问题讨论】:

嗨。您希望将 pdf 保存到哪里?你的服务器还是其他地方? @blasteralfred 在我的服务器上的文件夹 kuitit 【参考方案1】:

试试这个

$pdf->Output('kuitti'.$ordernumber.'.pdf', 'F');

【讨论】:

有效 :) 我会尝试将其保存到文件夹中。 @coosal 这会引发错误TCPDF ERROR: Unable to create output file: ../invoice_job_6.pdf @RNKushwaha 你检查文件夹权限了吗?请启用目标文件夹的写入权限。 它有 755 权限,但是@developer 的回答最终帮助了我。但它需要检查它的 linux 服务器(我的客户端的实时服务器在 linux 主机上)还是 windows 服务器(我的 localhost 在 windows 上)。然后,如果它在 linux 上,那么我使用 $_ENV['DOCUMENT_ROOT'] 它期望文件路径来自主库文件所在的文件夹。或者使用绝对路径,你可以使用 $_ENV['DOCUMENT_ROOT'] 找到它,然后确保它是可写的。使用“F”参数生成文件,“I”用于在同一页面中加载输出。文档没有把这些事情说清楚..【参考方案2】:

这会将生成的 pdf 文件存储在项目的自定义文件夹中

$filename= "$membership->id.pdf"; 
$filelocation = "D:\\wamp\\www\\project\\custom";//windows
$filelocation = "/var/www/project/custom"; //Linux

$fileNL = $filelocation."\\".$filename;//Windows
$fileNL = $filelocation."/".$filename; //Linux

$this->pdf->Output($fileNL, 'F');

【讨论】:

这个问题很旧,并且有一个可接受的答案。不用回答。 是的。但我没有将 pdf 文件放入所需的文件夹中。与答案。所以,我认为这对将来的某个人会有所帮助。 叹息...你不能直接把文件夹写到这里。 $pdf->Output('/location/folder/'.$name.'.pdf','F') 但它对我有用..我将它作为电子邮件中的附件发送..一旦它生成。 我也是,我适应没有问题。【参考方案3】:

$pdf->Output() 接受第二个参数$dest,它接受单个字符。默认情况下,$dest='I' 在浏览器中打开 PDF。

使用F 保存到文件

$pdf->Output('/path/to/file.pdf', 'F')

【讨论】:

为了将来参考,我定义了一个 UPLOAD_PATH 并将其用作$pdf->Output(UPLOAD_PATH.'example_001.pdf', 'FI');【参考方案4】:

唯一对我有用的东西:

// save file
$pdf->Output(__DIR__ . '/example_001.pdf', 'F');
exit();

【讨论】:

谢谢,伙计,这也是唯一对我有用的东西。非常感谢,伙计!【参考方案5】:

对于存储文件有困难的人,路径必须一直通过根目录。例如,我的是:

$pdf->Output('/home/username/public_html/app/admin/pdfs/filename.pdf', 'F');

【讨论】:

相对路径工作得很好。如果没有,则可能是配置错误。【参考方案6】:

TCPD 使用fopen() 来保存文件。 因此,任何传递给 TCPDF 的 Output() 函数的路径都应该是绝对路径。

如果您想保存到相对路径,请使用例如__DIR__ 全局常量(参见 this answer)。

【讨论】:

【参考方案7】:

如果你仍然得到

TCPD 错误:无法创建输出文件:myfile.pdf

您可以通过将 PDF 数据放入变量并将此字符串保存到文件中来避免 TCPDF 的文件保存逻辑:

$pdf_string = $pdf->Output('pseudo.pdf', 'S');
file_put_contents('./mydir/myfile.pdf', $pdf_string);

【讨论】:

【参考方案8】:

nick 的示例将其保存到您的本地主机。 但您也可以将其保存到本地驱动器。 如果你使用双反斜杠:

 $filename= "Invoice.pdf"; 
 $filelocation = "C:\\invoices";  

 $fileNL = $filelocation."\\".$filename;
 $pdf->Output($fileNL,'F');

 $pdf->Output($filename,'D'); // you cannot add file location here

附:在 Firefox(可选)工具>选项>常规选项卡>下载>总是问我在哪里保存文件

【讨论】:

已经是老问题了,但是需要先保存到服务器,然后邮寄给用户。【参考方案9】:
$pdf->Output( "myfile.pdf", "F");

TCPD 错误:无法创建输出文件:myfile.pdf

include/tcpdf_static.php 文件中关于静态函数fopenLocal 的第2435 行中,如果我删除完整的“if 语句”,它可以正常工作。

public static function fopenLocal($filename, $mode) 
    /*if (strpos($filename, '://') === false) 
        $filename = 'file://'.$filename;
     elseif (strpos($filename, 'file://') !== 0) 
        return false;
    */
    return fopen($filename, $mode);

【讨论】:

【参考方案10】:
require __DIR__ . '/vendor/autoload.php';
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

$html = '<h2>Welcome toTcpdf</h2>'; 
$html.= '<p>Welcome toTcpdf</p>'; 

//$pdf->writeHTML($tbl, true, false, true, false, '');
$pdf->writeHTML($html, true, false, false, false, '');
$time = time();
$sFilePath = __DIR__ . '/upload/'.$time.'.pdf' ;
$pdf->Output( $sFilePath , 'F'); // Save to folder
//$pdf->Output( $sFilePath , 'I'); // view to browser
//$pdf->Output( $sFilePath , 'D'); // Download instant


this is working

【讨论】:

【参考方案11】:

你可以试试;

$this->Output(/path/to/file);

所以对你来说,它会像;

$this->Output(/kuitit/);  //or try ("/kuitit/")

【讨论】:

它实际上需要扩展和F【参考方案12】:

这对我有用,保存到根目录下的子目录(temp_pdf):

$sFilePath = $_SERVER['DOCUMENT_ROOT'] . '//temp_pdf/file.pdf' ;
$pdf->Output( $sFilePath , 'F');

记得让目录可写​​。

【讨论】:

以上是关于TCPDF 将文件保存到文件夹?的主要内容,如果未能解决你的问题,请参考以下文章

thinkphp tcpdf 怎么选择保存的路径

phpexcel使用具有pdf宽度问题的tcpdf保存pdf

tcpdf 为啥有些css不支持

使用 FPDI 加载到 TCPDF 时调整 PDF 大小

Matlab中,如何将所写的文件保存到一个指定文件夹里?

TCPDF ERROR: 一些数据已经输出,不能发送 PDF 文件