2015-01-25 17 views
6

Tôi đang cố gắng sử dụng html2pdf 4.03 với mã này:Làm thế nào để thêm phông chữ TTF chương trình PHP html2pdf

<?php 
$content = "..."; # my HTML code 
require_once(dirname(__FILE__).'/html2pdf_v4.03/html2pdf.class.php'); 
$html2pdf = new HTML2PDF('P','A4','en', true, 'utf-8', array(15,20,15,20)); 
# here I'm trying to add my arial.ttf 
$html2pdf->pdf->AddTTFFont('arial.ttf'); 
$html2pdf->WriteHTML($content); 
$html2pdf->Output('exemple.pdf'); 
?> 

Bây giờ chương trình chết với điều này:

PHP Fatal error: Call to undefined method HTML2PDF_myPdf::AddTTFFont() 

Làm thế nào tôi có thể thêm TTF phông chữ vào tệp PDF của tôi?

Trả lời

7

Tôi đã quản lý thêm 1 phông chữ tùy chỉnh vào thiết lập của mình bằng phương pháp sau.

Đầu tiên chuyển đổi tệp .ttf thành 3 tệp riêng biệt (.php .z và .ufm) bằng cách sử dụng font converter Đặt 3 tệp được tạo bởi hệ thống này vào thư mục phông chữ trong TCPDF.

Bây giờ bạn có thể thiết lập font chữ mặc định cho PDF của bạn bằng cách sử dụng lệnh sau

$html2pdf->setDefaultFont("the_name_you_called_your_font"); 

Đây là khá đơn giản để có được làm việc, tôi đang gặp vấn đề sử dụng 2 font chữ riêng biệt mặc dù thông qua phương pháp này. Tôi sẽ tìm nó ra mặc dù

1

Nếu bạn muốn thêm nhiều phông chữ, chỉ cần sử dụng:

$html2pdf->addFont('opensansregular', '', 'opensansregular'); 
$html2pdf->addFont('opensansbold', '', 'opensansbold'); 

tôi sẽ đề nghị rằng bạn không sử dụng ký tự đặc biệt với bộ chuyển đổi phông chữ đã nêu ở trên.

Sau đó, trong CSS của bạn chỉ cần gõ:

<style type="text/css"> 
<!-- 
.uppercase { 
    text-transform: uppercase; 
} 
* { 
    font-family: opensansregular; 
} 
h1, h2, h3, strong { 
    font-family: opensansbold; 
} 
--> 
</style> 
+0

Tôi đã thử nó nhưng nó không hoạt động. Tôi có hai phông chữ trong thư mục tcpdf/fonts. Cả hai đều hoạt động khi tôi thêm chúng làm mặc định. Giả sử: '$ html2pdf-> setDefaultFont (" francoisone ");'. Nhưng khi tôi thử điều này: '$ html2pdf-> setDefaultFont ('OpenSans'); $ html2pdf-> addFont ('francoisone', '', 'francoisone'); ', tôi không thể sử dụng' font-family: francoisone; 'trong css của tôi. Có điều gì sai với thiết lập của tôi không? –

+0

Bạn đã chuyển đổi phông chữ của mình, phải không? –

+0

Có, tôi đã chuyển đổi 'FrancoisOne.ttf'to' francoisone.afm, francoisone.php, francoisone.z'. Và nó hoạt động như DefaultFont. Nhưng không phải là addFont, khi được gọi qua CSS 'h1, h2, h3, h4 {font-family: francoisone;}' –

1

Để mở rộng câu trả lời được lựa chọn (bằng cách o11y_75) khi bạn chuyển đổi phông chữ của bạn, bạn cần phải sử dụng một tên cụ thể để bao gồm cũng là biến thể đậm và nghiêng. Bằng cách đó, bạn chỉ thêm một định nghĩa font chữ như thế này

$html2pdf->AddFont('opensans', 'normal', 'opensans.php'); 
$html2pdf->setDefaultFont('opensans'); 

Khi bạn chuyển đổi các phông chữ, đặt tên cho chúng, ví dụ, như thế này:

default: opensans 
bold: opensansb 
italic: opensansi 
bold italic: opensansbi 

thông báo rằng đằng sau tên gốc, bạn thêm b, i và bi trên mỗi trường hợp. Tôi không tìm thấy tài liệu nào về vấn đề này, nhưng tôi đã tuân theo danh pháp được tìm thấy trên các phông chữ đã có sẵn với TCPDF và nó hoạt động.

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