2012-05-14 3 views
1

Я создаю веб-интерфейс для клиентов, чтобы загружать их отчеты. Программа, которую использует компания, написана на Java и состоит из 31 таблицы mysql с четырьмя отчетами, для которых требуется более 140 точек данных. Я создаю веб-сайт в PHP и генератор отчетов на Java, но у меня возникла проблема с поиском информации о том, как загрузить PDF-файл в память непосредственно в браузере клиентов. Я решил использовать TCP-клиент/сервер, идущий от Java к PHP, но как его закодировать, чтобы его не нужно было записывать на серверный диск и поставляться в виде ссылки. У меня также нет желания переписать 17 000 строк Java на PHP, поскольку я новичок в PHP. В любом случае, чтобы это сделать? Спасибо заранее.Использование PHP для поставки в память pdf из генератора Java

+0

Не можете ли вы просто сделать так, чтобы веб-запрос запускал приложение java и транслировал pdf-файл в php, который, в свою очередь, отправляет его клиенту? –

+0

Имея запрос php, приложение java и получить результирующий поток не будет проблемой. Моя ключевая проблема заключается в том, что вы не знаете/не понимаете код, который перемещает поток из php-порта в клиент. К сожалению, я очень новичок в php. – Brett

ответ

1

В зависимости от того, как долго приложение Java бы работать, вы могли бы рассмотреть возможность использования proc_open создать канал к программе Java:

<?php 
    $desc = array(array('pipe','r'),array('pipe','w')); 
    $resource= proc_open('bash',$desc,$pipes); 
    if (!is_resource($resource)) 
    { 
     throw new Exception('PDF stream creation failed'); 
    } 
    usleep(5);//for safety 
    fwrite($pipes[0],'java mkPDF paras'."\n");//double quoted \n is crucial 
    fclose($pipes[0]); 
    usleep(100);//while java app is running; 
    $pdf = stream_get_contents($pipes[1]); 
    fclose($pipes[1]); 
    proc_close($resource); 
?> 

Это лишь простой пример, что получает потоковый pdf-файл в одном большом компе, так что он далек от совершенства. То, что вы должны -IMO- изучить, - это получить поток в кусках, используя цикл while. php man page содержит несколько примеров этого, в основном, repleace

usleep(100);//while java app is running; 
$pdf = stream_get_contents($pipes[1]); 

с:

usleep(10);//while java app is running; 
$pdf = ''; 
while (($pdfBuff = fgets($pipes[1],1024)) !== null) 
{ 
    $pdf.=$pdfBuff;//or echo, or whatever 
} 
fclose($pipes[1]); 

последнего не тестировался, так что я не уверен, что будет работать в вашем случае ... но вы получаете идею

+0

Отлично, это меня в правильном направлении. Благодарю. – Brett

+0

Приветствия, рады помочь –

0
  1. По словам @Elias напрямую отправить веб-запрос к приложению Java, и поток в формате PDF на PHP.

  2. Использование веб-сервисов,

    I. Разработка некоторых веб-сервисов на стороне Java, который будет посылать данные только в любом из формата, как XML, JSON и т.д.

    II. Напишите код для использования этих веб-сервисов и разработайте свой код для создания pdf-файла и потока этих PDF-файлов.

Существует один pdf-генератор. Вы можете найти ссылку here

+0

Итак, вы говорите, а не создаете pdf на Java с уже написанным кодом, я должен сгенерировать его в php, потому что php не имеет возможности передавать данные через себя. Это несчастливо. – Brett

+0

У меня создалось впечатление, что в java-стороне нет такой функции. И да, делая это с помощью веб-сервисов, вы сможете создавать свой PDF-файл. –

Смежные вопросы