填写PDF表单并通过PHP提交到服务器

时间:2013-11-01 23:26:35

标签: php forms pdf livecycle

我在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格式的文件写入?


UPDATE:

* 我想通了。在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

填写并提交

瞧!

1 个答案:

答案 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文件的值。