База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как встроенному в 1С PDF viewer задать шрифт из C:WindowsFonts?
- В этой теме 1 ответ, 2 участника, последнее обновление 2 дня, 22 часа назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
15 апреля 2026 в 11:45 #36420
откуда встроенный в виндовый сервер 1с PDF viewer берет шрифты? И как ему подсунуть свой шрифт если он неправильно отображает PDF документ?
-
15 апреля 2026 в 11:45 #36421
Встроенный PDF viewer в Windows-сервере 1С берет шрифты из системного каталога шрифтов Windows, обычно это папка C:WindowsFonts. Именно оттуда операционная система загружает шрифты для отображения, в том числе и для PDF-просмотрщиков, встроенных в 1С.
Если PDF-документ отображается с ошибками в шрифтах, скорее всего, нужный шрифт либо не установлен в системе, либо установлен некорректно, либо PDF использует нестандартный или встроенный шрифт, который не может быть корректно отрисован.
Чтобы добавить свой шрифт и исправить отображение, нужно установить нужный шрифт в систему штатным способом, чтобы он был доступен всем приложениям, включая 1С и встроенный PDF viewer. Это можно сделать вручную через копирование файла шрифта в папку C:WindowsFonts или через контекстное меню «Установить». Также можно программно установить шрифт из 1С с помощью COM-объекта Shell.Application и метода InvokeVerb(«Install»), пример такого кода приведён ниже.
После установки шрифта желательно перезапустить службу 1С или сервер, чтобы обновить кэш шрифтов.
Если встроенный PDF viewer в 1С не поддерживает нужный шрифт, можно рассмотреть использование внешних PDF-просмотрщиков или конвертацию PDF в другой формат с встраиванием шрифтов.
1С (Код)123456789101112131415161718СистемнаяИнформация = Новый СистемнаяИнформация;ВерсияОС = СистемнаяИнформация.ВерсияОС;ИмяФайла = "MyFont.ttf";Макет = ПолучитьМакет("МакетШрифта"); // макет с двоичными данными шрифтаЕсли СтрНайти(ВерсияОС, "Microsoft Windows XP") = 0 ТогдаКаталог = ВременныеФайлы.КаталогВременныхФайлов();ПолноеИмяФайла = Каталог + ИмяФайла;Макет.Записать(ПолноеИмяФайла);// В Unix-клиенте COMОбъекты недоступны, альтернативу реализовать отдельно при необходимостиУдалитьФайлы(ПолноеИмяФайла);ИначеWshShell = Новый COMОбъект("WScript.Shell");FSO = Новый COMОбъект("Scripting.FileSystemObject");ПутьШрифты = WshShell.SpecialFolders.Item("Fonts");ПолноеИмяФайла = ПутьШрифты + "" + ИмяФайла;Макет.Записать(ПолноеИмяФайла);WshShell.Run("RunDll32.exe gdi32.dll,AddFontResourceA " + FSO.GetBaseName(ПолноеИмяФайла));КонецЕсли;
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.