Воспроизведение PDF-файла с Java на PHP

У меня есть WebService в Java (с использованием Apache Axis), которые получают идентификатор документа и этот вызов JasperReports для создания файла PDF (отчет, ранее созданный на стороне Java-приложения), для создания отчета я использую методы : JasperManager.fillReport и JasperExportManager.exportReportToPdf. Последний возвращает массив байтов. Мой вебсервис берет массив и кодирует его в Base64 String, PHP получает эту строку в качестве ответа от WebService.

Я хочу воссоздать файл в PHP, но я точно не знаю, возможно ли это. Я пытаюсь сделать это со следующим фрагментом:

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 возвращает строку Как это:

JVBERi0xLjQKJeLjz9MKNCAwIG9iaiA8PC9UeXBlL1hPYmplY3QvQ29sb3JTcGFjZS9EZXZpY2VS R0IvU3VidHlwZS9JbWFnZS9CaXRzUGVyQ29tcG9uZW50IDgvV2lkdGggMjg0L0xlbmd0aCAzNjc0 L0hlaWdodCA1MC9GaWx0ZXIvRENURGVjb2RlPj5zdHJlYW0K / 9J / 4AAQSkZJRgABAgAAAQABAAD / 2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0 Hyc5PTgyPC4zNDL / 2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL / wAARCAAyARwDASIAAhEBAxEB / 8QAHwAAAQUBAQEBAQEA …

Эта строка имеет «Заголовок PDF», начинается следующим образом:

% PDF-1.4% âãÏÓ 4 0 obj <> stream ÿØÿà

Когда я пытаюсь загрузить файл, размер составляет около 4-5 КБ (и файл поврежден), но строка ответа составляет около 180 КБ.

Это возможно? Что я делаю неправильно?

EDIT: Я читал о функции распаковки , может быть, эта функция может мне помочь?

заранее спасибо

Solutions Collecting From Web of "Воспроизведение PDF-файла с Java на PHP"

Хорошо, я решил. У меня, в основном, две ошибки:

1. Из Java: класс, который я использовал для кодирования содержимого файла PDF ( org.w3c.tools.codec.Base64Encoder ), org.w3c.tools.codec.Base64Encoder String содержимым файла, вместо этого класса я переключился на Apache Axis Tools ( org.apache.axis.encoding.Base64 ). Я говорю это, потому что я сравнил содержимое PDF, сгенерированное с помощью моего приложения Java, и содержимое, возвращаемое из WebService, и последнее немного меньше.

2. Из PHP: создание файла: в этой части я пытаюсь сделать это:

 $fp = file_put_contents("document.pdf", "w"); fwrite($fp, base64_decode($stringWithFile)); readfile($fp); 

Но, только с файлом_компьютера, я написал запись в файл PDF, fwrite это не обязательно на данном этапе. Я создаю pdf с помощью этого фрагмента:

 private function createFileFromString($stringWithFile){ header('Content-Description: File Transfer'); header("Content-Type: application/pdf"); header('Content-Disposition: attachment; filename=document.pdf'); header('Cache-Control: must-revalidate'); header('Pragma: public'); flush(); file_put_contents("document.pdf", base64_decode($stringWithFile)); readfile("document.pdf"); exit(); } 

Надеюсь, этот ответ поможет каждому.