Odtwórz plik PDF z Java na PHP
Mam usługę WebService w Javie (używając Apache Axis), która pobiera identyfikator dokumentu i to wywołanie do JasperReports, aby utworzyć plik PDF (raport utworzony wcześniej w aplikacji java - po stronie serwera), aby utworzyć raport korzystam z metod : JasperManager.fillReport i JasperExportManager.exportReportToPdf. Ostatni zwraca tablicę bajtów. Moja usługa internetowa pobiera tablicę i koduje ją do ciągu Base64, PHP odbiera ten ciąg jako odpowiedź z WebService.
Chcę odtworzyć plik w PHP, ale nie wiem dokładnie, czy jest to możliwe. Próbuję to zrobić za pomocą następującego fragmentu kodu:
private function createFileFromString($stringWithFile){
header('Content-Description: File Transfer');
header("Content-Type: application/pdf");
header('Content-Disposition: attachment; filename=remesa.pdf');
header('Cache-Control: must-revalidate');
header('Pragma: public');
ob_start();
ob_clean();
ob_flush();
flush();
$fp = file_put_contents("document.pdf", "w");
fwrite($fp, base64_decode($stringWithFile));
readfile($fp);
ob_get_contents();
fclose($fp);
exit();
}
WebService Zwraca łańcuch w ten sposób:
JVBERi0xLjQKJeLjz9MKNCAwIG9iaiA8PC9UeXBlL1hPYmplY3QvQ29sb3JTcGFjZS9EZXZpY2VS R0IvU3VidHlwZS9JbWFnZS9CaXRzUGVyQ29tcG9uZW50IDgvV2lkdGggMjg0L0xlbmd0aCAzNjc0 L0hlaWdodCA1MC9GaWx0ZXIvRENURGVjb2RlPj5zdHJlYW0K / 9j / 4AAQSkZJRgABAgAAAQABAAD / 2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0 Hyc5PTgyPC4zNDL / 2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL / wAARCAAyARwDASIAAhEBAxEB / 8QAHwAAAQUBAQEBAQEA ...
Ten ciąg ma „Nagłówek PDF”, zaczyna się tak:
% PDF-1.4% ââÏÓ 4 0 obj <> stream ÿØÿà
Gdy próbuję pobrać plik, jego rozmiar wynosi około 4-5 KB (i plik jest uszkodzony), ale ciąg odpowiedzi wynosi około 180 KB.
czy to możliwe? Co robię źle?
EDIT: Czytałem orozpakować funkcja, może ta funkcja może mi pomóc?
Z góry dziękuję