2014-11-20 4 views
4

Google 서버에 저장되어있는 브라우저에 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의보기에이 일을하고있다 : - 여기 내 코드입니다 .

내가 뭘 잘못하고 있니? 이것 좀 도와주세요. 사전

편집에 감사 : - :

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); } 

그래서 어떻게 브라우저에서 하나 개의 파일 이상을 보여줄 수있는 다음과 같은

임하고 뭔가?

편집 2 : -

그래서 여러 PDF 파일을 병합하고 브라우저에 표시 할 phpmerger을 사용해야 아래의 대답에 따라. 나는이 웹 사이트 http://pdfmerger.codeplex.com/을 통과했지만 codeignter에 사용할 수 없습니다. 사람이 나를

@readfile($file); 

사용

echo file_get_contents($file); 

을 사용하는 내 codeingter 안에이 phpmerger을

+0

이것은 약간의 단계이지만 fPDF를 사용하여 해당 PDF를 즉시 생성 할 수 있습니다. db에서 필요한 모든 필드를 가져 와서 PDF를 생성하면 저장하는 데 필요한 모든 리소스를 절약 할 수 있습니다. 매우 가볍고 실용적입니다. – Impulss

답변

6

당신이 실현하려 PDF Merger 라이브러리를 사용할 수 있습니다 ommit하는 데 도움을 주시기 바랍니다 수 있습니다 목표. browser, file, downloadstring - 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. 

지원 모드를을 다음과 같이 될 것입니다.


편집 : 난 당신이 CI를 태그 한 볼 수 있듯이 당신이 applications/librariesPDFMerger.php을 넣을 수 있습니다. 및 $this->pdfmerger->addPDF()merge() 기능처럼 사용할 수 있습니다 다음 autoload.php 또는 controller

에로드합니다.

+0

네, CI를 사용하고 있습니다. 그렇기 때문에'applications/libraries' 안에 pdfmerger.php를 포함시켜야한다고 말했지만 다른 위치에 fpdf와 fpdi가 있어야합니다. 같은 위치에 업로드해야합니까? 컨트롤러에서 합병을로드하려면 어떻게해야합니까? 'application/libraries'에서 CI –

+0

''PDFMerger.php'를 복사하는 phpmerger 사용법을 알려주십시오. 'autoload.php'에'$ autoload [ 'libraries'] = array ('pdfmerger', ........)를 입력하면 CI에서 사용할 수 있습니다. @RakeshShetty –

+0

확인 @ karan 노력하고있어 –

1

대신 사용하거나 @

+0

감사합니다. 그리고 그 file_get_contents ($ 파일);을 시도 출구; 그것은 PDF 파일을 보여 주지만 사실 하나 이상의 pdf 파일이 있고 foreach를 사용하여 pdf 파일을 표시합니다. 그래서 내가 출구를 제거 할 때; file_get_contents ($ file);에서 그것은 % PDF-1.4 % 5 0 obj> stream –

+0

을 보여줍니다. 자바 스크립트에서 AJAX 등을 통해 코드를 여러 번 호출하지 않고 한 번에 여러 번 다운로드 할 수는 없습니다. – RichardBernards

+0

편집을 참조하고 저를 도와주세요. –

0

내 권장 PDF 라이브러리 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);`` 

나는이 코드를 시험해보십시오. 시도해 보시기 바랍니다.