FAQ TBarCode .NET
Почему я вижу другой шрифт в экспорте EPS и AI?
Почему я вижу другой шрифт в экспорте EPS и AI?
TBarCode SDK не встраивает шрифты в EPS и AI. Он лишь ссылается на шрифт, указывая его имя. Поэтому от выходного устройства или графического пакета зависит, доступен ли шрифт и как он отображается.
Для EPS допустимы только имена шрифтов, стандартные для PostScript, либо имена шрифтов, не содержащие пробелов в имени шрифта, на который ссылаются.
EPS: чтобы избежать проблем на принтерах, где не установлен Arial, мы всегда преобразуем ссылки на Arial в Helvetica, который выглядит похоже и является стандартным шрифтом PS (доступен на всех принтерах). Если это нежелательно, есть параметр, управляющий тем, применяется ли замена шрифта. Это параметр UseDeviceFonts.
Вот пример кода для EAN13 SC2 – 100%:
Экспорт в EPS со стандартными шрифтами PostScript (Arial ⇒ Helvetica)
Barcode barcode = new Barcode();
barcode.BarcodeType = BarcodeType.Ean13;
barcode.BoundingRectangleF = new RectangleF(0, 0, 37.29F, 25.91F); // SC2 size
barcode.SizeMode = SizeMode.CustomModuleWidth;
barcode.ModuleWidth = 0.330F; // SC2 module width
barcode.Data = "123456789012";
barcode.Font = new Font("Arial", 9);
barcode.UseDeviceFonts = true;
barcode.Draw("c:\\temp\\TestFile.eps", ImageType.Eps);
barcode.Draw("c:\\temp\\TestFile.ai", ImageType.Ai);
Если открыть экспортированный файл EPS в текстовом редакторе, вы увидите Helvetica вместо Arial:
/Helvetica findfont
9.0000 scalefont setfont
Вот как это выглядит, если открыть файл EPS в просмотрщике PostScript (например, GSView):
Если открыть экспортированный файл AI в текстовом редакторе, вы увидите:
%%IncludeResource: font ArialMT
%AI3_BeginEncoding: _ArialMT ArialMT
[/_ArialMT/ArialMT 0 0 1 TZ
Экспорт в EPS с сохранением заданного шрифта (Arial ⇒ Arial)
Принтер или графическое ПО должны поддерживать «Arial»! Имена шрифтов не должны содержать пробелов!
Barcode barcode = new Barcode();
barcode.BarcodeType = BarcodeType.Ean13;
barcode.BoundingRectangleF = new RectangleF(0, 0, 37.29F, 25.91F);
barcode.SizeMode = SizeMode.CustomModuleWidth;
barcode.ModuleWidth = 0.330F;
barcode.Data = "123456789012";
barcode.Font = new Font("Arial", 9);
barcode.UseDeviceFonts = false;
barcode.Draw("c:\\temp\\TestFile.eps", ImageType.Eps);
barcode.Draw("c:\\temp\\TestFile.ai", ImageType.Ai);
Если открыть экспортированный файл EPS в текстовом редакторе, вы увидите:
/Arial findfont
9.0000 scalefont setfont
Если открыть экспортированный файл AI в текстовом редакторе, вы увидите:
%%IncludeResource: font Arial
%AI3_BeginEncoding: _Arial Arial
[/_Arial/Arial 0 0 1 TZ
Итог
Чтобы использовать заданный шрифт для экспорта, вы можете установить UseDeviceFonts = false. Это также зависит от того, что вы хотите сделать с файлом EPS. Если вы хотите отправить файл «как есть» на принтер или в систему печати, возможно, лучше использовать Helvetica с UseDeviceFonts = true. Мы рекомендуем сначала попробовать распечатать, прежде чем принимать решение о DeviceFonts.
Экспорт в PDF без HRT
Для экспорта в PDF в TBarCode SDK не включена отрисовка шрифтов — поэтому вы не получаете никакого вывода шрифта или текста, если выбираете формат экспорта PDF.
Если вам нужен экспорт в PDF со встраиванием шрифтов, вы можете использовать наш TFORMer Label Printing SDK. TFORMer SDK поддерживает те же штрихкоды, что и TBarCode SDK. Или — вы также можете использовать Barcode Studio в режиме командной строки — вы вызываете BCStudio.exe из собственного программного кода и передаёте данные штрихкода и имя файла в BCStudio (доступные параметры командной строки см. в руководстве пользователя BCStudio). Как альтернатива — если вы хотите использовать библиотеки PDF от сторонних поставщиков, вы можете использовать механизм отрисовки Callback в TBarCode SDK — здесь вы получаете координаты штрихов и текста, и с этими координатами вы реализуете штрихкод с помощью функций отрисовки и рендеринга шрифта/текста библиотеки PDF. Примеры использования отрисовки Callback включены в SDK.