Bối cảnh:Làm cách nào để nhúng phông chữ trong một tệp PDF hiện có?
Tôi có PDF được tạo theo chương trình. Tôi cần để có thể gửi tệp PDF trực tiếp tới máy in từ máy chủ (không phải thông qua một ứng dụng trung gian). Tại thời điểm này tôi có thể thực hiện tất cả các điều trên (tạo PDF, gửi tới máy in), nhưng vì phông chữ không được nhúng trong PDF, máy in đang thực hiện thay thế phông chữ.
Tại sao các phông chữ không được nhúng khi tạo:
tôi đang tạo ra sử dụng SQL Reporting Services PDF của năm 2008. Có một vấn đề được biết đến với SQL Reporting Services ở chỗ nó sẽ không nhúng phông chữ (trừ khi một loạt các yêu cầu được đáp ứng - http://technet.microsoft.com/en-us/library/ms159713%28SQL.100%29.aspx). Đừng hỏi tôi tại sao, PDF đáp ứng tất cả các yêu cầu được liệt kê của MS và phông chữ vẫn hiển thị như không được nhúng - không có kiểm soát thực sự cho dù phông chữ được nhúng, vì vậy tôi đã chấp nhận điều này không hoạt động và . Giải pháp được đề xuất từ Microsoft (http://blogs.msdn.com/b/donovans/archive/2007/07/20/reporting-services-pdf-renderer-faq.aspx trong 'Khi nào Dịch vụ báo cáo thực hiện nhúng phông chữ') là đăng quá trình PDF để nhúng phông chữ theo cách thủ công.
Mục tiêu Tạo tài liệu PDF đã tạo, lập trình 'mở' và nhúng phông chữ, lưu PDF.
Cách tiếp cận Tôi đã chỉ về phía iTextSharp, nhưng hầu hết trong những ví dụ là dành cho các phiên bản Java và tôi đang gặp rắc rối dịch lên phiên bản iTextSharp (Tôi không thể tìm thấy bất kỳ tài liệu cho iTextSharp).
Tôi đang làm việc trên bài đăng này cho những gì tôi cần làm: Itext embed font in a PDF.
Tuy nhiên đối với cuộc sống của tôi, tôi dường như không thể sử dụng đối tượng ByteArrayOutputStream. Nó dường như không thể tìm thấy nó. Tôi đã nghiên cứu và nghiên cứu nhưng không ai có vẻ nói lớp đó là gì hoặc ở đâu tôi tìm thấy nó để tôi có thể đưa nó vào trong các câu lệnh sử dụng. Tôi thậm chí đã mở được Reflector mở và dường như không thể tìm thấy nó ở bất cứ đâu.
Đây là những gì tôi có cho đến nay và nó biên dịch v.v. (kết quả là byte của tôi [] của tệp PDF được tạo).
PdfReader pdf = new PdfReader(result);
BaseFont unicode = BaseFont.CreateFont("Georgia", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
// the next line doesn't work as I need a ByteArrayOutputStream variable to pass in
PdfStamper stamper = new PdfStamper(pdf, MISSINGBYTEARRAYOUTPUTSTREAMVARIABLE);
stamper.AcroFields.SetFieldProperty("test", "textfont", unicode, null);
stamper.Close();
pdf.Close();
Vì vậy, ai cũng có thể giúp tôi sử dụng iTextSharp để nhúng phông chữ vào PDF hoặc hướng tôi đi đúng hướng?
Tôi rất vui khi sử dụng bất kỳ giải pháp nào khác ngoài iTextSharp để hoàn thành mục tiêu này, nhưng cần phải được miễn phí và có thể được doanh nghiệp sử dụng cho ứng dụng nội bộ (ví dụ: Affero GPL).
Bạn có thể đặt tên cho các phông chữ cần nhúng không? (Một số phông chữ có giấy phép không cho phép nhúng, và phần lớn việc xử lý PDF hoặc tạo phần mềm không tôn trọng các cờ tương ứng trong các tệp phông chữ và chọn không nhúng t ...) –
Chắc chắn! Georgia và Calibri - Tôi đã kiểm tra rằng chúng tôi có các phiên bản TrueType và (tốt, theo Windows) cả hai đều có thẻ 'Khả năng nhúng phông' được đặt thành 'Có thể chỉnh sửa' - Tôi thu thập đây là cài đặt phù hợp? Cảm ơn vì bất kì sự giúp đỡ! – hanzworld
Đối với bất kỳ ai đọc sau này, cả hai phương pháp này đều hoạt động. Dịch vụ báo cáo SQL cuối cùng đã nhúng các phông chữ chính xác sau nhiều bản cập nhật/hotfix và có thể được gửi thẳng tới máy in. Ngoài ra, được gọi là Ghostscript sử dụng ProcessInfo từ .NET có thể xử lý tệp PDF. – hanzworld