Открытие FDF локально работает, но не на сервере - PullRequest
1 голос
/ 18 июня 2011

На моем LOCALHOST у меня есть форма, которая создает и файл FDF ... Также в этом файле он содержит «полный путь» -> 'http://localhost/example/example.pdf'.... Поэтому, когда я «нажимаю на ссылку», чтобы открыть файл FDF в браузере, он загружает PDF с данными FDF, вставленными в соответствующие места.

Когда я делаю это на моем Linux-сервере (не локальном), когда я щелкаю по файлу FDF, чтобы открыть его, он просто ОТКРЫВАЕТ файл и отображает текст (файл fdf) на экране вместо «открытия» файла fdf. ,

Хотите знать, может ли кто-нибудь помочь мне с этим процессом ... Я хочу открыть файл FDF, чтобы он также открывал файл PDF.

Это какой-то код, который я сделал, но я закомментировал «заголовки» ... так как я не думал, что мне нужны заголовки при «открытии» файла, а не рендеринг одного на экран?

    $fdf = new fdf();
    //$response = $fdf->fdfMerge(APP_ROOT."/forms/test/FormTest.pdf", $_POST);
    $response = $fdf->renderFDF(DOMAIN."forms/test/FormTest.pdf", $_POST, $_POST['userId'], $_POST['contactId']);
    //var_dump($response);

    // Link DIRECTLY to the FDF file... 
    echo "Internal: <a href='". $response['internalPath'] ."'>". $response['internalPath'] ."</a><br />";
    echo "External: <a href='". $response['externalPath'] ."'>". $response['externalPath'] ."</a><br />";

    /*
    if(ini_get('zlib.output_compression'))
         ini_set('zlib.output_compression', 'Off');

    header("Pragma: public"); // required
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Cache-Control: private", false); // required for certain browsers

    header("Content-Type: application/x-download");
    header("Content-Disposition: attachment; filename=".$response['fdfFile'].";" );

    header("Content-Length: ".$filesize($response['fdfFile'])."");
    header("Content-Transfer-Encoding: binary");

    ob_clean();
    flush();

    fopen($response['fullPath']);
    */

--- ОТВЕТ БРАУЗЕРА ОТ LINUX BOX ---

%FDF-1.2
%âãÃÓ
1 0 obj
<< 
/FDF << /Fields [ <</T(formId)/V(111)>><</T(userId)/V(23)>><</T(contactId)/V(2950)>><</T(firstName)/V(Justin)>><</T(lastName)/V(Geezer)>><</T(email)/V(justin@stickypages.ca)>>] 
/F (https://www.example.com/forms/test/FormTest.pdf) /ID [ <bd71513804f75900e899f3be924b69ef>
] >> 
>> 
endobj
trailer
<<
/Root 1 0 R 

>>
%%EOF

Вот скриншот, когда я использую ответы "HEADER". enter image description here


Редактировать: Если я загружаю файл FDF с сервера и «дважды щелкаю», чтобы открыть файл, он загружает файл PDF из Интернета и открывает его нормально.

1 Ответ

0 голосов
/ 18 июня 2011

Лучше всего предположить, что fpdf не может записать в каталог tmp, или файлы, которые он использует, каким-то образом заблокированы.Проверьте ваши журналы apache, и можете ли вы привести пример текста, который отображается в Linux?Возможно, в вашем php-файле есть пробел или клавиша возврата.например

<?php
echo "woohoo";
?>
<?php
echo "second woohoo";
?>

Посередине с закрывающими и открывающими тегами есть клавиша возврата, которая может испортить все в linux, но не в окнах (поскольку windows игнорирует специальный символ, вызывающий новую строку).

Кроме того, в конце кода, генерирующего fpdf, не закрывайте тег, например:

<?php
echo "second wooho";
...