2009-03-09 39 views
12

Tôi có bản pdf đã được tạo bằng trình thiết kế biểu mẫu Foxit. Trên hệ thống thiết kế của tôi, tôi đã cài đặt phông chữ mã vạch. Phông chữ mã vạch được sử dụng trong một trong các AcroFields. Dường như cáo không nhúng phông chữ vào tài liệu.Phông chữ nhúng văn bản trong PDF

Tôi cũng có khách hàng không có phông chữ mã vạch được cài đặt trong máy tính của họ và do đó tôi muốn nhúng phông chữ vào PDF. Có cách nào để tôi nhúng một phông chữ được sử dụng trong AcroFields vào PDF bằng iText?

CHỈNH SỬA: Phông chữ dường như được bao gồm trong văn bản chứ không phải các trường, Vì vậy phông chữ (mã vạch) sẽ không in.

Trả lời

9

Tôi gần như chắc chắn rằng bạn có câu trả lời ngay bây giờ, nhưng có thể những người khác muốn xem chi tiết về giải pháp. Dưới đây là mẫu java code tôi đã sử dụng để nhúng phông chữ trong tệp PDF được tạo (chỉ hữu ích trong một số trường hợp, vì kích thước của tài liệu tăng đáng kể). Là một công cụ miễn phí để tạo ra các hình thức PDF, tôi đã sử dụng các nhà văn OpenOffice, bằng cách thêm các hình thức bên trong các tài liệu và xuất khẩu các văn bản dưới dạng file PDF:

PdfReader pdfTemplate = new PdfReader(templateName); 
ByteArrayOutputStream out = new ByteArrayOutputStream(); 
BaseFont unicode = BaseFont.createFont(unicodeFontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 
PdfStamper stamper = new PdfStamper(pdfTemplate, out); 
//assigning the font to the field 
stamper.getAcroFields().setFieldProperty("myField", "textfont", unicode, null); 
stamper.getAcroFields().setField("myField", someValue); 
stamper.close(); 
pdfTemplate.close(); 
+0

tôi gặp hầu như cùng một vấn đề và tôi đã thực hiện giống như bạn, nhưng tôi vẫn không thể nhúng phông chữ cho những văn bản tôi nhập bằng Java, bạn có thể xem [câu hỏi của tôi] không (http://stackoverflow.com/questions/34335481/how-to-embed -font-sau-flattening-template-using-itext)? Cảm ơn trước! – Elderry

1
PdfContentByte ab = yourPDFWriter.getDirectContent(); 
// field: PdfFormField.createTextField(...); 
PdfAppearance ap = ab.createAppearance(320, 30); // size of field 
field.setDefaultAppearanceString(ap); 

Điều đó cần thực hiện thủ thuật.

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