#c_sharp #pdf #printing #itextsharp
Приветствую, коллеги. Использую iTextSharp для генерации PDF-документов в своем проекте. Создаю акты и счета-фактуры для бухгалтерии. В документах использую шрифт Tahoma, объявляю базовый шрифт таким образом: private static void PrepareFonts() { _baseTahoma = BaseFont.CreateFont("c:/windows/fonts/tahoma.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); _tahomaBold = new Font(_baseTahoma, 10, Font.BOLD); _tahoma = new Font(_baseTahoma, 10, Font.NORMAL); _tahoma16Bold = new Font(_baseTahoma, 18, Font.BOLD); _tahomaSmall = new Font(_baseTahoma, 8, Font.NORMAL); } Когда документ готов я запускаю печать файла, находя путь к Adobe Reader в реестре и далее с помощью аргументов "/p /h" и пути к файлу запускаю на печать: RegistryKey adobe = Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\App Paths\AcroRd32.exe"); if (adobe != null) { string path = adobe.GetValue("").ToString(); GenerateDocuments(); Process proc = new Process(); proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; proc.StartInfo.Verb = "print"; string pdfFileName = _invoice.FullName; proc.StartInfo.FileName = path; proc.StartInfo.Arguments = @"/p /h " + pdfFileName; proc.StartInfo.UseShellExecute = false; proc.StartInfo.CreateNoWindow = true; proc.Start(); proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; if (proc.HasExited == false) { if (!proc.WaitForExit(5000)) proc.Kill(); } proc.EnableRaisingEvents = true; proc.Close(); } Но напечатанный документ выходит вообще без каких-либо символов и без цифр. Только линии таблиц есть на бумаге. В ТЗ на проект написано, что должна использоваться "тихая печать", т.е. документы создаются и печатаются по одной кнопке, т.е. чтобы не надо было заходить в Adobe Reader и мухлевать в "Параметрах печати", в том числе ставить галочку "Print as image". Так вот если просто открыть документ и поставить "Print as image" в Advanced свойствах, то все символы есть, а если делается "тихая печать", то их нет. Кто-нибудь сталкивался с подобным? Как это возможно решать. P.S. Во втором листинге метод GenerateDocuments как раз генерирует файлы, если Adobe Reader вообще установлен на компьютере. Пример файла, который должен быть распечатан по ссылке: http://ge.tt/2WCRmpS/v/0
Ответы
Ответ 1
Все оказалось просто. Принтер Kyocera, на котором пытаюсь отпечатать, - старая модель. Не очень корректно воспринимает практически все шрифты. На новых моделях принтеров - все отлично, даже без "Print as image".
Комментариев нет:
Отправить комментарий