Export to PDF

Для выгрузки в PDF используются команды ExportToPdfCommandarrow-up-right на сервере и ExportToPdfCommandarrow-up-right на клиентской части. Обе команды работают только с docx-файлами.

Для формирования pdf-файла на клиенте используется одно из приложений Microsoft Office Word или Libre Office, которые должны быть установлены на компьютере, или библиотека Open XML (не требует дополнительных пакетов или библиотек). На стороне сервера - приложение Libre Office или библиотека Open XML.

circle-info

Для Microsoft Office Word должен стоять плагин Save As PDF, если приложение по умолчанию не поддерживает сохранение в pdf.

Для определения способа выгрузки используется тэг <ExportBy>.

На клиентской части тэг <ExportBy>arrow-up-right имеет вид:

<ExportBy>
  <Type></Type>
  <LibreOfficePath></LibreOfficePath>
</ExportBy>

На сервере тэг <ExportBy>arrow-up-right имеет вид:

<ExportBy Type="">
  <LibreOfficePathSqlQuery>
    <Text>SQL-query</Text>
  </LibreOfficePathSqlQuery>
</ExportBy>

При формировании pdf-файла через Microsoft Office Word или Libre Office не требуется специально подготавливать файл шаблона. А для выгрузки через OpenXml необходимо придерживаться некоторых правил. Это связано с ограничениями в доступе для OpenXml к стилям и настройкам вордовского файла, и дефолтным значениям, а так же с логикой формирования pdf-файла, которая заложена в библиотеку QuestPDF.

circle-exclamation

Если для экспорта используется вариант OpenXml, то исходный шаблон должен быть максимально простым. Так как в основе этого способа лежит бесплатная библиотека QuestPDF, которая рассчитана на создание простых PDF-файлов, и в ней нет возможностей поддерживать сложных стилей и конструкций

Основной момент: все содержимое файла (в колонтитулах и в теле страницы) должно быть разбито по ячейкам таблиц без отрисовки границ ячеек. Это ограничение исходит из невозможности работать с колонками на странице, т.к. Word создает скрытый раздел, в котором параграфы динамически разбиваются по колонкам. Такое формирование колонок не позволяет знать, в какой конкретно колонке находиться абзац. В то время как используемая для PDF библиотека QuestPDF для формирования колонок использует строгую структуру строк и колонок.

Увы, картинки пока не поддерживаются в шаблоне.

Last updated