2014-11-20 4 views
4

Я хочу отобразить PDF-файл в браузере, который хранится на нашем сервере. Вот мой код: -Показать PDF в браузере

$path = $_SERVER['DOCUMENT_ROOT'].folder_name.'/resources/uploads/pdf/pdf_label_'.$order['id'].'.pdf'; 

$filename = 'pdf_label_'.$order['id'].'.pdf'; 

$file = $path; 
$filename = $filename; 

    header('Content-type: application/pdf'); 
    header('Content-Disposition: inline; filename="' . $filename . '"'); 
    header('Content-Transfer-Encoding: binary'); 
    header('Accept-Ranges: bytes'); 
    @readfile($file); 

Но он возвращается ниже выхода в браузере:

%PDF-1.4 % 5 0 obj >stream 

PDF-файл, чтобы показать:

enter image description here

Я делаю это по мнению codeignter ,

Что я делаю неправильно? Пожалуйста помоги мне с этим. спасибо заранее

EDIT: -

Im делает что-то, как показано ниже:

foreach($orders as $order){ 

$path = $_SERVER['DOCUMENT_ROOT'].folder_name.'/resources/uploads/pdf/pdf_label_'.$order['id'].'.pdf'; 

$filename = 'pdf_label_'.$order['id'].'.pdf'; 

$file = $path; 
$filename = $filename; 

    header('Content-type: application/pdf'); 
    header('Content-Disposition: inline; filename="' . $filename . '"'); 
    header('Content-Transfer-Encoding: binary'); 
    header('Accept-Ranges: bytes'); 
    echo file_get_contents($file); 

    } 

Так как я могу показать более чем один файл в браузере?

Edit 2: -

Так, согласно ответу ниже я должен использовать phpmerger, чтобы объединить несколько файлов PDF и отображения в браузере. Я прошел через этот сайт http://pdfmerger.codeplex.com/, но не смог использовать его в коде. Может кто-нибудь, пожалуйста, помогите мне использовать этот phpmerger внутри моей codeingter

+0

Это небольшой боковой шаг, но вы можете создавать эти PDF-файлы на лету, используя fPDF. Если вы вытащите все необходимые поля из базы данных и сгенерируете PDF-файл, вы можете сэкономить все ресурсы для их хранения. Он очень легкий и практичный. – Impulss

ответ

6

вы можете использовать PDF Merger библиотеку для того чтобы достигнуть вашего цели. Here is the link to original library (outdated). Prefer myokyawhtun fork which is maintained

и образец код будет следующим

include 'PDFMerger.php'; 
$pdf = new PDFMerger; 
$pdf->addPDF('path_to_pdf/one.pdf', '1, 3, 4') //include file1 - pages 1,3,4 
    ->addPDF('path_to_pdf/two.pdf', '1-2')  //include file2 - pages 1 to 2 
    ->addPDF('path_to_pdf/three.pdf', 'all') //include file3 - all pages 
    ->merge('browser', 'test.pdf'); // OUTPUT : make sure you choose browser mode here. 

Поддерживаемые режимы - browser, file, download и string.


Редактировать: Как я вижу, что вы пометили CI вы можете поместить PDFMerger.php в applications/libraries. и загрузить его в autoload.php или в controller

и затем может использовать его как $this->pdfmerger->addPDF() и merge() функций.

+0

yes im using CI, так как вы сказали, что мне нужно включить pdfmerger.php внутри 'приложений/библиотек', но есть еще одна папка fpdf и fpdi, я должен загрузить ее в одно и то же место? и Как загрузить слияние в контроллер? Не могли бы вы помочь мне использовать phpmerger в CI –

+0

copy 'PDFMerger.php' в' application/libraries'. в 'autoload.php' включить' $ autoload ['libraries'] = array ('pdfmerger', ........ ', а затем вы можете использовать его в CI, как я упомянул в ответ :) @RakeshShetty –

+0

ok @karan Я пытаюсь –

1

Вместо использования

@readfile($file); 

Использование

echo file_get_contents($file); 

Или ommit @

+0

Спасибо, и я попробовал это file_get_contents ($ file); exit; он показывает файл pdf, но на самом деле существует более одного файла pdf и im, использующего foreach для отображения pdf-файла. Поэтому, когда я удаляю выход; from file_get_contents ($ file); он показывает% PDF-1.4% 5 0 obj> stream –

+0

Вы не можете делать несколько загрузок сразу (не заставляя код несколько раз с javascript через AJAX или что-то в этом роде) – RichardBernards

+0

см. мое редактирование и, пожалуйста, помогите мне достичь этого –

0

Моя рекомендуемая библиотека для встраивания PDF-файлов - это PDFObject.Проверьте это здесь: http://pdfobject.com/

1
$filedisplay="file path here"; 
    $filename="file name here"; 
    header('Content-type:application/pdf'); 
    header('Content-disposition: inline; filename="'.$filename.'"'); 
    header('content-Transfer-Encoding:binary'); 
    header('Accept-Ranges:bytes'); 
    @ readfile($filedisplay);`` 

пожалуйста, попробуйте этот код я надеюсь, что это будет работать, как я попробовать.

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