我在我的网上商店处理PDF格式的FPDF。每当用户结账时,我想生成包含购物车中所有数据的PDF,然后将PDF上传到WordPress中的媒体库。
我现在尝试了很多东西,但我还没有做任何有用的东西。到目前为止,我只能通过写:
将PDF保存到不同的文件夹中$pdf->Output($_SERVER['DOCUMENT_ROOT'].'/invoice/nameofinvoice.pdf', 'F');
我的代码如下所示:
if ( ! function_exists( 'wp_handle_upload' ) ) require_once( ABSPATH . 'wp-admin/includes/file.php' );
$uploadedfile = $pdf->Output('dimserPdf2014.pdf', 'F');
$upload_overrides = array( 'test_form' => false );
$movefile = wp_handle_upload( $uploadedfile, $upload_overrides );
// die(var_dump($movefile));
$wp_filetype = $movefile['type'];
$filename = $movefile['file'];
$wp_upload_dir = wp_upload_dir();
$attachment = array(
'guid' => $wp_upload_dir['url'] . '/' . basename( $filename ),
'post_mime_type' => $wp_filetype,
'post_title' => preg_replace('/\.[^.]+$/', '', basename($filename)),
'post_content' => '',
'post_status' => 'inherit'
);
// Id of attachment if needed
$attach_id = wp_insert_attachment( $attachment, $filename);
它会将文件上传到媒体库,但该文件为空,如果我取消注释该文件> var_dump函数我也得到一个数组,根本就没有说它是一个空文件。
这是我使用的脚本/类: http://www.fpdf.org/ 并且Output方法接受两个参数,文件名和保存/下载方法。正如你在这里看到的: http://www.fpdf.org/en/doc/output.htm到目前为止,我已尝试过每一个参数而没有运气。
为什么WordPress上传空文件而不是我的PDF?
答案 0 :(得分:2)
我一直在与mPDF做一些工作,这是FPDF的一个(更好的文档和维护的imho)分支。从我在文档中看到的情况来看,除非您传递“S” dest ,否则Output方法不会返回任何内容。
此外,根据Codex,wp_handle_upload
中的文件用于处理$_FILES
超全局中的一个项目。如果您在上传目录中生成PDF,则不应该在您的情况下使用它。
请改为尝试:
if ( ! function_exists ... ;
$wp_upload_dir = wp_upload_dir();
$uploadedfile = trailingslashit ( $wp_upload_dir['path'] ) . 'dimserPdf2014.pdf';
$pdf->Output($uploadedfile, 'F');
$attachment = array(
'guid' => trailingslashit ($wp_upload_dir['url']) . basename( $uploadedfile ),
'post_mime_type' => 'application/pdf',
'post_title' => preg_replace('/\.[^.]+$/', '', basename($filename)),
'post_content' => '',
'post_status' => 'inherit'
);
// Id of attachment if needed
$attach_id = wp_insert_attachment( $attachment, $uploadedfile);