2012-06-20 58 views
12

Tôi đang cố tạo pdf bằng dompdf, làm cách nào để mở pdf trong tab mới trong trình duyệt? Giống như, tôi nhấp vào liên kết cho PDF và nó sẽ mở trong một tab mới, không lưu nó tự động. Tôi muốn cung cấp cho người dùng một lựa chọn để lưu tệp sau khi xem tệp trước. Làm thế nào để làm điều đó?Mở PDF trong tab mới bằng dompdf

bất cứ khi nào tôi sử dụng $ pdf-> đầu ra ở cuối tệp, nó không thay đổi gì, tệp vẫn được tải xuống tự động. vui lòng trợ giúp. cảm ơn.

Trả lời

38

Cho dù PDF được tải xuống hoặc xem trong trình duyệt tùy thuộc vào một vài yếu tố. Một là cài đặt trình duyệt của bạn, nhưng chúng tôi không có quyền kiểm soát ở đó. Thứ hai là cách dompdf trình bày PDF cho trình duyệt. Bạn có thể yêu cầu dompdf cung cấp PDF để xem trực tiếp bằng cách sử dụng $dompdf->stream('my.pdf',array('Attachment'=>0));.

Theo cách mở trong tab mới. Điều đó phụ thuộc vào cách bạn tạo PDF. Nhưng cách đơn giản nhất để cung cấp liên kết với thuộc tính đích.

+6

+1 cho mảng ('Tệp đính kèm' => 0) nghĩ rằng tôi sẽ phải tải tệp pdf này xuống máy tính của mình suốt đời –

+0

Ai đó, vui lòng giải thích ý nghĩa là "cách đơn giản nhất là cung cấp liên kết thuộc tính đích "? – renathy

+0

@renathy là điều này liên quan đến câu hỏi của bạn [ở đây] (http://stackoverflow.com/q/17458553/264628)? Trong trường hợp này câu trả lời giả định tập lệnh tạo PDF được truy cập bằng liên kết chứ không phải biểu mẫu. Một thuộc tính đích trên phần tử 'a' hoặc' form' sẽ làm cho trình duyệt mở nội dung trong một cửa sổ/tab mới. ví dụ. '' hoặc '

'. – BrianS

2

Tôi có một vấn đề tương tự vào trang web của tôi (http://www.pdfwebcreator.com)

giải pháp của tôi là:

$myfile = fopen($strFileName, "r") or die("Unable to open file!"); 
    $fileSize = filesize($strFileName); 
    header("HTTP/1.1 200 OK"); 
    header("Pragma: public"); 
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 

    header("Cache-Control: private", false); 

    header("Content-type: application/pdf"); 
    header("Content-Disposition: attachment; filename=\"temporaryPdf.pdf\""); 

    header("Content-Transfer-Encoding: binary"); 
    header("Content-Length: " . $fileSize); 

    echo fread($myfile, $fileSize); 
} 
+1

'Content-Transfer-Encoding: binary' là khóa – Rodrigo

1

Am vẫn thử nghiệm, nhưng một cái gì đó như thế này hoạt động tốt cũng

$pdf->loadView('file/path', compact('values')); 
return $pdf->stream(); 

Với bạn có thể thêm giá trị động vào trang tệp pdf của mình trong trình duyệt.

0

Tôi không biết nếu bạn nhận được, nhưng nếu bạn sử dụng sai ở dòng này:

$dompdf-> stream("pasta/doc/relatorio.pdf", array("Attachment" => false)); 

Bạn có thể xem pdf trên trình duyệt.

Các vấn đề liên quan