Почему исчезает текст в PDF при отправке из 1С 8.2 и открытии в браузере?

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

Многие разработчики и пользователи сталкиваются с довольно специфичной проблемой при работе на старых версиях платформы, в частности на 1С 8.2 (например, в конфигурации 1С:Управление торговлей 10.3). Ситуация выглядит следующим образом: мы формируем печатную форму, сохраняем ее в формате PDF и отправляем контрагенту по электронной почте. При этом, когда получатель пытается открыть вложенный файл прямо в окне браузера, текст в таблицах документа полностью искажается или вовсе исчезает. Однако, если этот же файл скачать на компьютер и открыть, все отображается абсолютно корректно.

Давайте подробно проанализируем ситуацию, выясним причину такого поведения системы и разберем по шагам возможные варианты решения данной задачи.

Разберем технические причины проблемы

Сначала рассмотрим, почему возникает искажение. Казалось бы, причем тут 1С, если при скачивании файл выглядит нормально? Проблема кроется в механизме, с помощью которого старая платформа 1С формирует и внедряет шрифты в PDF-документ (чаще всего используется стандартный шрифт Arial).

Встроенные просмотрщики PDF в современных веб-браузерах (Google Chrome, Mozilla Firefox, Safari) работают на базе легковесных библиотек, таких как PDF.js. Эти библиотеки крайне требовательны к строгой структуре PDF-файла. Они часто не могут корректно прочитать и отрендерить шрифты, внедренные нестандартным образом движком 1С 8.2. В результате мы получаем "кракозябры" или пустое место вместо текста.

При этом полноценные десктопные программы для чтения PDF, такие как Adobe Acrobat, Foxit Reader или Sumatra PDF, обладают более мощными и гибкими алгоритмами рендеринга. Они умеют "прощать" структурные ошибки документа и корректно отображают текст. Именно поэтому скачанный файл выглядит нормально.

Проанализируем также влияние серверного окружения. Если сохранение файла выполняется на стороне сервера, сбои могут быть вызваны проблемами со службой диспетчера печати (Spooler) или отсутствием прав у пользователя сервера 1С на чтение системных шрифтов.

Почему у некоторых пользователей проблема не воспроизводится?

В теме было отмечено, что у одного пользователя документы открываются без проблем. Разберем, с чем это может быть связано. Скорее всего, у этого сотрудника браузер настроен особым образом: в нем отключен встроенный просмотрщик (PDF.js), а вместо него используется системный плагин (например, плагин от Adobe Acrobat). Также возможно, что локально установлена другая операционная система или релиз платформы, где захват шрифтов при использовании метода Записать отрабатывает иначе.

Организационные пути решения

Если нет возможности оперативно изменить код или архитектуру, рассмотрим организационные методы, которые активно обсуждались на форуме:

  1. Использование десктопных программ: Самый простой путь — составить инструкцию для клиентов и менеджеров. Попросите контрагентов скачивать файлы и открывать их исключительно через нормальные просмотрщики (Foxit Reader или Adobe Acrobat).
  2. Инструктаж сотрудников: Объясните пользователям, что проблема не на стороне почтовой утилиты Stunnel или настроек отправки, а в специфике форматов. Это поможет снять часть негатива.

Технические решения проблемы

Если просить всех клиентов сменить привычки не представляется возможным, рассмотрим технические варианты исправления. Разберем по шагам, что мы можем сделать в конфигураторе.

1. Использование виртуального принтера (Рекомендуется для 8.2)

Вместо стандартного вызова ТабличныйДокумент.Записать(Путь, ТипФайлаТабличногоДокумента.PDF) мы можем программно отправлять документ на печать, используя виртуальный PDF-принтер (например, PDFCreator или Bullzip). Эти утилиты генерируют полностью валидные PDF-документы, которые безупречно читаются любыми браузерами.

Для этого потребуется установить виртуальный принтер на компьютеры пользователей (или на терминальный сервер) и управлять им через COM-объекты прямо из 1С.

2. Использование внешних компонент

Для платформы 1С 8.2 существуют проверенные временем внешние компоненты, такие как Yoksel. Они обладают собственными движками генерации табличных документов в PDF. Подключив такую компоненту, вы обойдете штатный механизм 1С и получите корректный файл.

3. Обновление платформы до 1С 8.3

Проанализируем перспективу обновления. Разработчики 1С прекрасно знали о проблеме со шрифтами в старых релизах. В платформе 1С 8.3 механизм сохранения в PDF был кардинально переработан. Если перевести конфигурацию 1С:Управление торговлей 10.3 в режим совместимости с более новыми релизами платформы 8.3 (или запустить ее под 8.3 в толстом клиенте обычного приложения), файлы начнут формироваться корректно и открываться во всех веб-просмотрщиках.

4. Использование альтернативных форматов

Посмотрим на обходные маневры. Если настроить виртуальный принтер сложно, мы можем изменить логику обработки отправки почты. Вместо PDF сохраняйте табличный документ в формате Excel (ТипФайлаТабличногоДокумента.XLS) или сохраняйте печатную форму как картинки, упаковывая их в ZIP-архив перед прикреплением к письму. Это полностью исключит проблему искажения шрифтов на стороне клиента.

Подводя итоги, мы видим, что проблема исчезновения текста не связана с программами для отправки почты. Это архитектурная особенность старой платформы. Выберите наиболее подходящий технический вариант — от установки виртуального принтера до перехода на новые релизы 1С, и жалобы от контрагентов полностью прекратятся.

← На главную