Foxit - Создать динамический ответ при отправке PDF
Я пытаюсь вернуть динамическую строку в качестве ответа, когда PDF отправляется через Adobe Reader или Foxit6. Я написал код для выполнения этого для Adobe, но Foxit отображает только окно с предупреждением, в котором указывается, была ли отправка успешной ("Ваша отправка формы прошла успешно!") Или нет (мне не удалось вызвать это приглашение). Я хотел бы по возможности манипулировать текстом подсказки, в противном случае представить ответное сообщение.
В коде получения отправки я буду выполнять некоторые проверки и запросы MYSQL, и я хочу иметь возможность сообщать пользователю о любых ошибках или красных флажках.
Кроме того, я использую pdftk для создания динамического pdf, так как он уже находится на сервере, и я хотел бы избежать использования дополнительной библиотеки, хотя процесс, который я использую, действительно немного усложняется.
Вот поток:
- Пользователь отправляет PDF-файл, используя закладку "Отправить форму" в формате экспорта: HTML.
- PHP:
- Собирает значения $_POST
- Подтверждает
- Сохраняет в базу данных
- Создает ответ в формате PDF
Мой код работает для Adobe, но не Foxit:
<?php
ob_start();
foreach($_POST as $key=>$val){
if(!$reader && strpos($key,"Content-Disposition:_form-data;_name")){
$reader="Foxit";
$regex="/\"(.*)\"\r\n\r\n(.*)\r\n/";
if(preg_match_all($regex,$val,$matches)){
$count=sizeof($matches[1]);
for($x=0; $x<$count; ++$x){
$array[$matches[1][$x]]=$matches[2][$x];
}
}
break;
}else{
$array["$key"]=$val;
if(!$reader){$reader="Adobe";}
}
}
// validation section, redflags are added to $alert
// connect to DB and INSERT INTO mysql query, errors added to $alert
if($reader!="Foxit"){ // hands tied at the moment -- no way to directly display a response to user
/* Submitting URL must be appended with "#FDF" so source pdf knows to expect an FDF as response */
header("Content-type: application/vnd.fdf");
if(!$alert){$alert="Submission Successful";}
echo "%FDF-1.2\n%âãÏÓ\n1 0 obj\n<<\n/FDF\n<<\n/Status($alert)\n>>\n>>\nendobj\ntrailer\n<</Root 1 0 R>>\n%%EOF";
}
ob_end_flush();
?>