2013-01-17 41 views
18

Tôi đang sử dụng tcpdf để tạo PDF từ HTML. Tất cả mọi thứ đang làm việc tốt và khi tôi xem PDF trên máy tính của tôi tôi có thể nhìn thấy nó tốt, nhưng đối với một số lý do khi tôi nhìn vào PDF trên iPhone của tôi nó hiển thị trống. Tất cả những gì tôi có thể thấy là các đường viền mà tôi đã tạo có chứa các giá trị trong chúng nhưng không có giá trị nào hiển thị.Tạo PDF với tcpdf hiển thị trống trên iphone

Đây là mã của tôi

require_once('/tcpdf/tcpdf/config/lang/eng.php'); 
require_once('/tcpdf/tcpdf/tcpdf.php'); 
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); 
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); 
$pdf->setLanguageArray($l); 
$pdf->SetFont('dejavusans', '', 10); 
$pdf->AddPage(); 
$html = file_get_contents('http://www.website.com/invoice.php?invoice_id='.$invoice_id); 
$pdf->writeHTML($html, true, false, true, false, ''); 
$pdf->lastPage(); 
$pdf->Output('/html/admin/emailattachements/invoice.pdf', 'F'); 

Trong đó dòng cuối cùng. Tôi sao chép tệp PDF vào thư mục đó khi tôi lấy nó sau bằng một tập lệnh email và gửi nó cho khách hàng.

Blank PDF

Edit: SOLVED

tôi phát hiện ra nó là phông chữ tôi đã sử dụng để tạo ra PDF. iPhone không thể đọc dejavusans :) Tôi đã thay đổi nó để 'lần' và nó hoạt động tốt

Chỉnh sửa: Cập nhật

Kể từ bài viết này tôi đã phải tạo ra nhiều hơn nữa PDF với TCPDF và trong khi tôi có thể' t thực sự giải thích tại sao một số phông chữ không được làm việc trong khi những người khác mà tôi vừa áp dụng một số những gợi ý qua tại http://www.tcpdf.org/fonts.php và áp dụng

$fontname = $pdf->addTTFfont('/path-to-font/DejaVuSans.ttf', 'TrueTypeUnicode', '', 32); 

Bằng cách thêm vào một phông chữ bằng tay và thiết lập các đường dẫn tập tin phông chữ và tải lên các tập tin bằng tay tôi đã có thể để có được phông chữ hiện tại đã không hoạt động và actuall y khiến họ làm việc.

+3

Ummmm ... mã của bạn là gì để chúng tôi có thể nhân đôi nỗ lực đó. – Duniyadnd

+0

đã thêm mã của tôi vào câu hỏi gốc –

+1

bây giờ mà tôi nhìn vào nó Tôi tự hỏi nếu nó là phông chữ –

Trả lời

0

Kiểm tra loại phông chữ bạn đang sử dụng, giống như html, nhưng nó sẽ không dự phòng.

0

Tạo pdf bằng văn bản tĩnh và kiểm tra.

2

Thay đổi các dòng dưới đây:

$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); 

$pdf->SetFont('dejavusans', '', 10); 

Để:

$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, false, 'ISO-8859-1', false); 

$pdf->SetFont('helvetica', '', 10, '', true); 

Và sau đó kiểm tra.

1

Bạn không chắc chắn cách nó hoạt động cho bạn mà không có phương pháp AddFont, nhưng tôi đã có cùng một vấn đề và thêm tham số thứ tư $ subset = false sửa chữa nó.

$ tập hợp con (hỗn hợp) nếu đúng nhúng chỉ một tập con của phông chữ (chỉ lưu trữ thông tin liên quan đến các ký tự đã dùng); nếu giả nhúng đầy đủ phông chữ; nếu 'mặc định' sử dụng giá trị mặc định được đặt bằng cách sử dụng setFontSubsetting(). Tùy chọn này chỉ hợp lệ cho các phông chữ TrueTypeUnicode . Nếu bạn muốn cho phép người dùng thay đổi tài liệu, hãy đặt thông số này thành false. Nếu bạn đặt phông chữ, người nhận được PDF của bạn sẽ cần phải có cùng một phông chữ để thực hiện thay đổi cho tệp PDF của bạn. Kích thước tệp của PDF cũng sẽ nhỏ hơn vì bạn chỉ nhúng một phần của phông chữ.

$pdf->AddFont('dejavusans', '', 'dejavusans', false); 
$pdf->AddFont('dejavusans', 'B', 'dejavusans', false); 

$pdf->SetFont('dejavusans', '', 10); 

dejavusans sửa chữa một số vấn đề với các nhân vật multibyte vì vậy không thể thay đổi đơn giản để helvetica. Bằng cách thực hiện thay đổi này, chúng tôi đã tìm thấy tệp PDF có kích thước lớn hơn gấp đôi.

Đây là một ý tưởng tương tự như @ user3548394 nhưng chỉ phải thực hiện thay đổi này một lần.

+1

Kích thước của Wow lớn hơn gấp đôi 16kb đến 734kb –

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