我在Livecycle Designer ES3中创建了一个PDF表单。
我的工作是让提交按钮将整个pdf保存在某个文件夹中的服务器上。
该按钮指向我的Web服务器上的php文件。该按钮的类型为“submit”,并提交为“URL编码日期(HTTP)。
我试过了:
$file = $GLOBALS['HTTP_RAW_POST_DATA'];
$newfile = "/var/watchfolder/" . microtime(true) . ".pdf";
file_put_contents($newfile, $file);
我也尝试过:
$file = file_get_contents("php://input");
$newfile = "/var/watchfolder/" . microtime(true) . ".pdf";
file_put_contents($newfile, $file);
两次他们都写一个文件,但文件的内容如下所示:
订购日期=安培; DocumentNo =安培; Concat_BuyfromVendorNo_BuyfromVendorName =安培; JobNo =安培; TicketNo =安培; Concat_SellToCustomerNo_SellToCustomerName =安培; LineNo_1 =安培; No_1 =安培; OutstandingQuantity_1 =安培; QUANTITY_1 = 123&安培; ...
并且Reader或Acrobat都不会将其作为有效的pdf打开。
如何将其作为pdf格式的文件写入?
* 我想通了。在Livecycle中选择“提交为:PDF”并将其指向您的php文件。
我看起来像:
<?php
ob_start();
$file = file_get_contents("php://input"); //Gets binary PDF Data
$time = microtime(true);
$newfile = "/var/watchfolder/" . $time . ".pdf"; //Names xml file based on the time to the microsecond so nothing gets overwritten.
$worked = file_put_contents($newfile, $file); //Creates File
ob_end_clean();
$file = "/var/www/forms/Submission_Confirmation.pdf";
$filename = 'Submission_Confirmation.pdf'; /* Note: Always use .pdf at the end. */
header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="' . $filename . '"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($file));
header('Accept-Ranges: bytes');
@readfile($file);
?>
最后一部分在阅读器中加载PDF作为确认。它可以是您想要的任何PDF文件,包括刚刚提交的PDF文件。
Reader在Acrobat中扩展PDF
填写并提交
瞧!
答案 0 :(得分:0)
因为纯文本/ html(ASCII)不是pdf格式(二进制)。
你需要使用PHP PDF,很好的例子和方法可以在这里找到:
http://www.php.net/manual/en/pdf.examples-basic.php
此外,$GLOBALS['HTTP_RAW_POST_DATA'];
只是一个愚蠢的行为。检查$_POST
globalvariable并检索需要输入pdf文件的值。