2011-09-22 41 views
5

Tôi đang sử dụng thành phần ABCpdf.net để chuyển đổi HTML sang PDF. Một số HTML sử dụng phông chữ Biểu tượng để hiển thị các ký tự nhất định. Thật không may, chúng tôi đang tiêu thụ HTML từ bên thứ ba và không thể thay đổi được.Phông chữ biểu tượng trên ABCpdf

Môi trường phát triển của tôi hiển thị phông chữ chính xác, nhưng môi trường sản xuất của tôi sẽ không hiển thị. Nó hoạt động như thể phông chữ không được cài đặt, mặc dù nó là. Nếu tôi hiển thị cùng một HTML trong Internet Explorer trên môi trường sản xuất, nó sẽ hiển thị tốt.

Tôi đã thử nhúng phông chữ dưới dạng .eot và cung cấp kiểu phông chữ @ trong tiêu đề. Tôi đã thử sử dụng TheDoc.AddFont ('Symbol'). Bất kỳ đề xuất?

sản phẩm: ABCpdf NET 7 x64

OS sản xuất: Windows Server 2003 x64, IE8

OS Phát triển: Win7 x64, IE8

Trả lời

2

Mặc dù tôi đã nói rằng Doc.HtmlOptions là câu trả lời, hóa ra nó hoàn toàn khác. Các biểu tượng không hiển thị vì trọng lượng phông chữ không bình thường (tức là, nó là đậm). Không có tập hợp con đậm có chứa các ký tự này. IE đủ thông minh để bỏ qua phần táo bạo, nhưng PDF khá là khó tính. Nó không thể tìm thấy nhân vật, vì vậy nó chỉ cho thấy không có gì.

Giải pháp thực tế là chải qua HTML và đảm bảo rằng tất cả các biểu tượng được bao quanh bởi span với font-weight: normal !important. Nó có lẽ là một giải pháp ít thanh lịch hơn, nhưng nó có hiệu quả. Biểu tượng duy nhất vẫn ngẫu nhiên từ chối hiển thị là biểu tượng góc (∠). Đối với điều này, tôi thay thế nó bằng một hình ảnh. Tôi vẫn không thể hiểu tại sao nó sẽ không xuất hiện.

2

Thử khởi động lại máy chủ.

Tôi đã gặp sự cố tương tự với phông chữ trên ABCPdf. Mặc dù các phông chữ đã được cài đặt rõ ràng, vì một số lý do, ABDPdf đã không chọn chúng cho đến khi máy đã được khởi động lại.

Có thể có một số cách không khởi động lại để đạt được điều tương tự, nhưng điều đó sẽ kéo theo sự hiểu biết vấn đề là gì! Nếu nó dễ dàng, chỉ cần thử khởi động lại.

+0

Vâng, tài liệu nói rằng các phông chữ thực sự được lưu vào bộ nhớ cache và sẽ không được tải lại cho đến khi quá trình được khởi động lại. Đây không phải là vấn đề của tôi, thật không may, nhưng cảm ơn bạn! =] – samiz

6

Nhóm hỗ trợ WebSuperGoo đã phản hồi bằng cách sửa: thiết lập HtmlOptions liên quan đến phông chữ. Tôi đặt các tùy chọn này và nó đã khắc phục sự cố. Yay!

If you want to embed the fonts used in a web page/HTML you need to use: 
    Doc.HtmlOptions.FontEmbed = True 
You may also need to set 
    Doc.HtmlOptions.FontSubstitute = False 
and possibly: 
    Doc.HtmlOptions.FontProtection = False 
before you use the Doc.AddImageUrl or Doc.AddImageHtml methods. 

Chỉnh sửa: Như tôi đã đề cập trong nhận xét bên dưới, tùy chọn thực hiện thủ thuật là FontProtection = false.

+1

bạn có thử chúng riêng lẻ để xem dòng mã nào hoặc kết hợp các dòng đã làm cho mã hoạt động cho bạn không? Tôi đã thử những dòng đầu tiên trong quá khứ mà không thành công - tôi có thể đã được sử dụng nó ở vị trí sai mặc dù. –

+1

Tôi đã làm, thực sự. Vấn đề được giải quyết chỉ với FontProtection được đặt thành false. – samiz

+0

Tôi gặp sự cố với các tệp PDF tôi tạo từ HTML và hiển thị trong ứng dụng iPad của mình. Vấn đề là điểm đạn bị sai. Tôi đã thay đổi kiểu phông chữ và đặt 'Doc.HtmlOptions.FontEmbed = True' và giải quyết được sự cố của tôi. –

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