Html to doc linux

Генерация документов в doc, excel, pdf и других форматах на сервере

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

Я буду не многословен и сразу скажу, что речь идет о конвертере, встроенном в пакет LibreOffice. Вы можете запустить конвертацию из консоли, чтобы увидеть как это работает:

Эта команда конвертирует файл html.html в pdf файл. Количество поддерживаемых форматов впечатляет.

Выгода от использования такого инструмента очевидна. Вместо того, чтобы писать код для генерации документов в каждом из нужных форматов, просто создаем обычное html-представление. Далее сгенерированную страницу прогоняем через конвертер.

Запуск конвертации из PHP

Для установки конвертера на сервере придется установить пакет libreoffice-core:

Чтобы было удобно работать с утилитой из PHP, я написал обертку.

Обертка позволяет вам не думать о работе с временными файлами, подставляет в команду некоторые параметры по умолчанию, содержит константы с описанием доступных форматов, а также дает возможность задать таймаут на выполнение конвертации.

Для работы с оберткой подключаем ее к своему проекту через composer:

Использовать ее можно так:

В результате будет сформирован docx файл. Больше примеров можно найти на гитхабе.

Разумеется, в качестве бонуса можно запускать конвертацию в другую сторону — из doc в html и отображать содержимое офисных документов в браузере. Качество конвертации будет не всегда на высоте, но для каких-то случаев вполне подойдет.

Несколько граблей

Будет полезно рассказать про несколько особенностей, с которыми я столкнулся при работе с этой утилитой.

1. Применение CSS стилей. При преобразовании html в нужный формат имейте ввиду, что такая запись воспринимается корректно:

А такие записи будут обработаны точно так же, как если бы class мы совсем не указали:

2. При преобразовании html в нужный формат не всегда срабатывают описания стилей и иногда приходится экспериментировать, чтобы заработало. Например, так не работает:

Но так работает:

3. Одно и то же преобразование можно выполнять с помощью разных конвертеров. При этом результат будет существенно отличаться. Если у вас на выходе получится не очень красивый документ, попробуйте принудительно задать используемый модуль, например:

4. Можно ли настроить ширину строк в таблице — для меня пока загадка. И в целом со стилизацией таблицы при преобразовании html в docx или pdf у меня возникли затруднения. Поэтому на мой взгляд подход трудно будет применять для генерации сложных печатных форм, таких как счет-фактура.

Источник

Как легко конвертировать форматы документов в Linux

Одной из часто упоминаемых проблем с переходом на Linux является совместимость файлов. Вы неизменно будете отправлять пользователям файлы других операционных систем, и они не будут выглядеть одинаково при открытии в таких приложениях, как Word. Пока вы можете установить шрифты или попробовать виртуальные машины или эмуляторы

чтобы убедиться, что все выглядит единообразно, другой подход заключается в том, чтобы выполнить свою работу в текстовом формате, а затем преобразовать ее после того, как вы это сделали.

Одним из инструментов, который вы можете использовать для преобразования между форматами, является pandoc, необходимый инструмент в наборе инструментов любого пользователя Linux.

Базовая установка и использование Pandoc

Установка pandoc в большинстве дистрибутивов Linux — это простая поездка в репозитории. В системах на основе Ubuntu следующая команда установит его для вас:

После установки вы можете начать использовать программу командной строки для преобразования файлов. Отлично справляется с Markdown и другими легкими языками разметки, если у вас есть .Мэриленд файл лежит вокруг, вы можете преобразовать это в HTML с помощью следующего:

Читайте также:  Как создать файл сценария windows

флаг говорит имя выходной файл ты хочешь. В этом случае он также выводит формат вывода (HTML) по расширению имени файла. Вы можете использовать (за читать) а также -вес (за записывать) флаги, чтобы сообщить pandoc тип конверсии, который вы хотите. Предположим, вы привыкли писать в Markdown, но вам нужно что-то опубликовать на странице на MediaWiki:

В своих более ранних версиях pandoc фокусировался на «обновлении» файлов в том смысле, что он мог преобразовывать более простые форматы (такие как Markdown) в более сложные (например, ODT или Microsoft DOCX). Но это будет сейчас читать эти более сложные форматы, а также. Это означает, что если вы привыкли к текстовому процессору, но соблазнены всеми причинами использовать меньший и более портативный текстовый формат

стало намного проще.

Учитывая каталог, полный файлов Word, следующая команда преобразует каждый из них в Markdown:

Обратите внимание, что это оставит вас с именами файлов filename.docx.md, так что вам нужно будет выполнить команду быстрого переименования (или, что еще лучше, добавить ее к вышеупомянутому сценарию оболочки)

Параметры командной строки Pandoc

Теперь, когда у вас есть некоторые основы, мы рассмотрим некоторые из более сложных опций параметров командной строки pandoc.

Справочные файлы ODT / DOCX

Предположим, вы преобразовали все свои старые, громоздкие файлы текстового процессора в Markdown. Пока вы наслаждаетесь радостью от написания простого текста, в какой-то момент вам придется поделиться этим с кем-то. И этот кто-то может быть не так просвещен, как вы. Вы можете просто полностью изменить читать а также записывать флаги для преобразования вашего файла обратно в формат Word:

Но некоторым людям нравятся их файлы Word с определенными шрифтами, пронумерованными заголовками и т. Д. DOCX back-end поддерживает файлы шаблонов, называемые справочные файлы, как раз для такого случая. Это ODT или же DOCX файлы, которые вы настроили со всем необходимым стилем. Затем pandoc применяет эти стили при преобразовании, если вы передаете ему ссылочный файл в командной строке:

Обратите внимание, как шрифты, настроенные в справочном файле выше (Arial Black для заголовка 1 и т. Д.) Отображаются в преобразованном файле ниже. Вы можете создать столько эталонных файлов, сколько вам нужно (например, по одному на клиента). Затем полностью игнорируйте форматирование во время написания и применяйте стили за один шаг при конвертации.

Бэкэнд рендеринга PDF

Создание PDF-файлов также является простым упражнением после установки необходимых пакетов. Облегченный способ получить возможность записи в формате PDF — это установить wkhtmltopdf пакет, инструмент командной строки для преобразования HTML в PDF. Pandoc поддерживает это изначально, так что если вы установите записывать флаг HTML, но выходной файл как PDF, он будет интерпретировать это как ваше намерение использовать wkhtmltopdf все само собой!

Кроме того, вы можете перейти к полнофункциональной опции с помощью системы набора текста TeTex. Воспользуйтесь тем, что эти пакеты Предлагаемые установки для пакета pandoc, переустановив с помощью следующей команды:

Затем откиньтесь на спинку кресла, пока много (на самом деле, много) пакетов устанавливаются. Как только они будут завершены, вы можете преобразовать свой файл непосредственно в PDF, указав его как записывать флаг:

В то время как wkhtmltopdf Опция требует установки только одного пакета, вы можете получить более удобные для печати результаты с TeTex. А именно, шрифты с засечками используются по умолчанию, а страницы автоматически нумеруются.

Генератор электронных книг

Наконец, pandoc может конвертировать ваши файлы в электронные книги, подходящие для чтения на телефоне или в электронном ридере.

, EPUB а также EPUB3 Бэк-энд даст вам правильно отформатированную книгу:

Дополнительные советы

Преимущества pandoc выходят за рамки его возможностей в качестве утилиты командной строки … например, она включает поддержку улучшенной версии Markdown и может быть легко интегрирована с графическими приложениями.

Читайте также:  Как открыть параметры загрузки windows 10 при запуске

Уценка Пандока

В дополнение к тому, что pandoc является инструментом конвертации, он поддерживает слегка улучшенную версию Markdown. Используя pandoc вместо стандартного уценка Команда, у вас есть некоторые дополнительные функции, в том числе следующие:

  • Метаданные — Разновидность Pandoc в Markdown позволяет вам включать в заголовок вашего документа такую ​​информацию, как автор, дата, адрес электронной почты и т. Д.
  • Текстовые украшения — Вы можете применять текстовые декорации, такие как зачеркивание или супер / подстрочный, которые не поддерживаются в стандартной Markdown через pandoc.
  • таблицы — Это само по себе делает Пандок стоящим по сравнению с «ванильной» уценкой. Используя символ конвейера для разделения ячеек таблицы, вы можете создать таблицу, которая варьируется от действительно уродливой до удобочитаемой как в обычном тексте, так и в визуализированном формате.
  • Необычные списки — Pandoc позволяет форматировать списки с уровнями в стиле структуры, например, «1.», затем «A.», затем «i.» И т. Д. Вы также можете указать начальный номер для списков, где списки в простой уценке начинаются с «1.»
  • Подсветка синтаксиса кода — Вы можете применить подсветку к своим блокам кода, сообщив Pandoc, что это за язык.

Выше приведены только некоторые функции Pandoc Markdown. Посетите страницу руководства на pandoc.org для получения полного списка дополнительных возможностей, предоставляемых этим вариантом Markdown.

Используйте графический интерфейс с Pandoc

Хотя pandoc эффективен как инструмент командной строки, он содержит много опций. Если вы новичок в Linux, вы можете предпочесть использовать pandoc с графическим интерфейсом. Хотя по умолчанию он не содержит графического интерфейса, вы можете установить PanDocElectrion конвертировать ваши документы с указателем и щелчком. Загрузите скрипт установки с веб-сайта приложения, затем запустите его, чтобы установить все необходимые пакеты и саму программу.

После установки начало вечера команда в PanDocElectron каталог запустит приложение. Благодаря выпадающим спискам форматов и возможности выбора входного файла с помощью диалогового окна это поможет вам привыкнуть к «входам и выходам» pandoc.

Если вы знакомы с множеством опций и флагов pandoc, но хотите просто вызов это, вы можете интегрировать его с вашим текстовым редактором GUI. Например, редактор Atom содержит несколько пакетов, которые позволяют сохранить текущий файл в различных форматах с помощью pandoc (пакет pandoc-convert):

Другой вариант — запускать команды pandoc, используя встроенные функции редактора, такие как команда build. атома строить-инструменты Пакет дает вам возможность указать пользовательские команды:

Затем вы можете вызвать команду build для ваших файлов, совместимых с pandoc, так же, как и для исходного кода:

Пандок снимает стресс от переключения

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

Вы часто конвертируете файлы назад и вперед между форматами? Если у вас возникли проблемы с совместимостью, сообщите нам в комментариях, и мы посмотрим, сможем ли мы использовать pandoc, чтобы разобраться с вами!

Источник

Html to doc linux

html-to-docx is a js library for converting HTML documents to DOCX format supported by Microsoft Word 2007+, LibreOffice Writer, Google Docs, WPS Writer etc.

It was inspired by html-docx-js project but mitigates the problem of documents generated being non-compatiable with word processors like Google Docs and libreOffice Writer that doesn’t support altchunks feature.

html-to-docx earlier used to use libtidy to clean up the html before parsing, but had to remove it since it was causing so many dependency issues due to node-gyp.

Even though there is an instance of html-to-docx running in production, please ensure that it covers all the cases that you might be encountering usually, since this is not a complete solution.

Currently it doesn’t work with browser directly, but it was tested against React.

Читайте также:  Для линукс как достать соседа

Use the npm to install foobar.

full fledged examples can be found under example/

  • htmlString clean html string equivalent of document content.
  • headerHTMLString clean html string equivalent of header. Defaults to

if header flag is true .

  • documentOptions
    • orientation defines the general orientation of the document. Defaults to portrait.
    • margins
      • top distance between the top of the text margins for the main document and the top of the page for all pages in this section in TWIP. Defaults to 1440. Supports equivalent measurement in pixel, cm or inch.
      • right distance between the right edge of the page and the right edge of the text extents for this document in TWIP. Defaults to 1800. Supports equivalent measurement in pixel, cm or inch.
      • bottom distance between the bottom of text margins for the document and the bottom of the page in TWIP. Defaults to 1440. Supports equivalent measurement in pixel, cm or inch.
      • left distance between the left edge of the page and the left edge of the text extents for this document in TWIP. Defaults to 1800. Supports equivalent measurement in pixel, cm or inch.
      • header distance from the top edge of the page to the top edge of the header in TWIP. Defaults to 720. Supports equivalent measurement in pixel, cm or inch.
      • footer distance from the bottom edge of the page to the bottom edge of the footer in TWIP. Defaults to 720. Supports equivalent measurement in pixel, cm or inch.
      • gutter amount of extra space added to the specified margin, above any existing margin values. This setting is typically used when a document is being created for binding in TWIP. Defaults to 0. Supports equivalent measurement in pixel, cm or inch.
    • title title of the document.
    • subject subject of the document.
    • creator creator of the document. Defaults to html-to-docx
    • keywords > keywords associated with the document. Defaults to [‘html-to-docx’].
    • description description of the document.
    • lastModifiedBy last modifier of the document. Defaults to html-to-docx .
    • revision revision of the document. Defaults to 1 .
    • createdAt time of creation of the document. Defaults to current time.
    • modifiedAt time of last modification of the document. Defaults to current time.
    • headerType type of header. Defaults to default .
    • header flag to enable header. Defaults to false .
    • footerType type of footer. Defaults to default .
    • footer flag to enable footer. Defaults to false .
    • font font name to be used. Defaults to Times New Roman .
    • fontSize size of font in HIP(Half of point). Defaults to 22 . Supports equivalent measure in pt.
    • complexScriptFontSize size of complex script font in HIP(Half of point). Defaults to 22 . Supports equivalent measure in pt.
    • table
      • row
        • cantSplit flag to allow table row to split across pages. Defaults to false .
    • pageNumber flag to enable page number in footer. Defaults to false . Page number works only if footer flag is set as true .
    • skipFirstHeaderFooter flag to skip first page header and footer. Defaults to false .
    • lineNumber flag to enable line numbering. Defaults to false .
    • lineNumberOptions
      • start start of the numbering — 1. Defaults to 0 .
      • countBy skip numbering in how many lines in between + 1. Defaults to 1 .
      • restart numbering restart strategy. Defaults to continuous .
  • footerHTMLString clean html string equivalent of footer. Defaults to

    if footer flag is true .

    Currently page break can be implemented by having div with classname «page-break» or style «page-break-after» despite the values of the «page-break-after», and contents inside the div element will be ignored.

    Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

    Please make sure to branch new branches off of develop for contribution.

    Источник

  • Оцените статью