Конвертировать xls в pdf на Linux
Появилась задача конвертировать xls в pdf на старом сервере с Linux, и это требование создало серьезные проблемы, потому что совершенно непонятно, как же это лучше сделать.
Для python есть разные утилиты pyPDF2 pyXLSX, но непонятно, как их «скрестить». Потому что все примеры того же pyPDF2 работают только с другими pdf или с рисованием на Canvas.
Для C++ я аналогично пока не нашел подходящего решения.
Ситуация усложняется еще тем, что исходный xls не тривиальный, с разными цветами и таблицами. Поэтому вариант перевода в csv, как промежуточный формат, например, отпадает. При этом не хотелось бы и переводить в jpg, потому что потом по тексту в pdf нужен будет поиск + проблемы с печатью.
При этом исходный xls состоит из множества worksheets, каждый из которых содержит таблицу. И многие таблицы шире, чем ширина листа в pdf. Соответственно, при переводе (я тестировал под windows) pdf эти таблицы некрасиво обрезает и огрызками вставляет, делая документ нечитабельным. Поэтому, ко всему прочему, worksheets в xls надо еще и уменьшать перед конвертацией так, чтобы в ширину она помещалась на одну страницу.
Смотрю в сторону unoconv и LibreOffice сейчас, но учитывая, что перед конвертацией надо делать еще манипуляции с xls, не представляю, как в результате решу.
Еще есть вариант просто поднять там виртуалку с Windows с простеньким сервисом, который будет слушать сеть и выполнять эти действия. Но это решение выглядит большим костылем.
Решали ли вы уже такую задачу? Если да, то как? Может быть, есть какие-то идеи? Привязка к питону и C++ не обязательна.
Is there any GNU/Linux command line utility that converts .doc(x) files to .pdf? [closed]
Want to improve this question? Update the question so it’s on-topic for Stack Overflow.
Closed 3 years ago .
Surely I am the 100th user who is asking this but after I have searched through the similar topics here and on other websites I still cannot find what I need. I like to have a simple command line tool for my GNU/Linux which converts .doc(x) files to .pdf BUT the output looks like the same as the original. So Libre Office is not good choise for this because it does not convert good in some cases. I have found a website http://www.freepdfconvert.com/ which does the job wery well, but I cannot upload there any sensitive files since it is a big risk. I dont say they would do anything bad with them but its how it is. If I wont find any good tool maybe I will have to write one by myself.
2 Answers 2
Unfortunately there are no Linux-based guaranteed 1-to-1 convertors for Word (doc/docx) to PDF. This is because Word, a Microsoft product, uses a proprietary format that changes slightly with every release. As it was not traditionally a publicly documented format and Microsoft does not port Word/Office to Linux (nor ever will) then you must rely upon reverse engineered third party tools for older formats (doc) and proper interpretation of the Office Open XML format by third party developers.
We found the best open source solution is LibreOffice (which was forked from OpenOffice.org, which itself was called Star Office before it was open sourced). It is much more actively developed than AbiWord, as another answer suggested.
The usage from the command line is simple and well documented with plenty of examples:
Or also you can use libreoffice instead of soffice on newer versions.
There is also Pandoc .
Pandoc, mainly known for its Markdown-capable processing goodness (for outputting HTML, LaTeX, PDF, EPUB and what-not) in recent months has gained a rather well-working capability to process DOCX input files.
(NOTE: Pandoc only works for DOCX, not for DOC files.)
For its PDF output to work, it requires a working LaTeX installation (with either or all of pdflatex , lualatex and xelatex included). In this case the following simple command should work:
Note however, that the output layout and font styles now will not look at all similar to what it would look if you exported the DOCX from Word to PDF. It will be using the styles of a default LaTeX document.
You can influence the output style of the LaTeX-generated PDF by using a custom template file like this.
. but this is a feature more for Pandoc/LaTeX experts to use than for beginners.
Linux xlsx to pdf
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Контейнер содержит следующие утилиты:
pdftk -утилита для работы с документами PDF.
imagemagick — набор утилит для работы с изображениями различных форматов, таких как PNG, JPEG, GIF, HEIC, TIFF, DPX, EXR, WebP, Postscript, PDF, и SVG.
libreoffice6.3 — кроссплатформенный, свободно распространяемый офисный пакет с открытым исходным кодом для использования в режиме —headless
gosh — «interactive shell» для Golang
gorun — позволяет запускать код на языке Golang как «shell script»
xsltproc — процессор командной строки XSLT 1.0
xmllint — процессор командной строки XML
wkhtmltopdf — command line tools to render HTML into PDF
all-to-pdf — Пока не реализовано
any-to-pdf — Пока не реализовано
csv-to-xlsx — Преобразует все файлы csv в xlsx в текущем каталоге. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.csv»
doc-to-pdf — Преобразует все файлы doc в pdf в текущем каталоге. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.doc».
doc-to-docx — Преобразует все файлы doc в docx в текущем каталоге. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.doc»
docx-to-doc — Преобразует все файлы docx в doc в текущем каталоге. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.docx»
docx-to-landscape — Преобразует все файлы docx в текущем каталоге в альбомный режим. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.docx». Вторым параметром может быть путь к каталогу с файлами.
docx-to-pdf — Преобразует все файлы docx в pdf в текущем каталоге. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.docx». Вторым параметром может быть задано значение landscape (по умолчанию) или portrait для соответствующей ориентации страниц
docx-to-portrait — Преобразует все файлы docx в текущем каталоге в портретный режим. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.docx». Вторым параметром может быть путь к каталогу с файлами.
extract-here (синоним extract-to-top) — Перемещает все файлы из подкаталогов в текущий каталог. Первым параметром при вызове может быть указан фильтр, например: extract-here «*.pdf» перемащает все файлы PDF из подкаталогов в текущий каталог
ext-to-lower — Переименовывает все файлы в текущем каталоге приводя расширения всех файлов к нижнему регистру.
jpeg-rotate — Поворачивает все файлы jpeg в текущем каталоге на заданный угол (по умолчанию 90 градусов вправо). Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.jpeg». Вторым параметром может быть задано значение угла поворота (по умолчанию 90). Третьим параметром может быть задано разрешение изображения DENSITY (по умолчанию 200). Четвертым параметром может быть задано качество изображения QUALITY (по умолчанию 90)
jpeg-to-jpg — Преобразует все файлы jpeg в jpg в текущем каталоге. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.jpeg»
jpeg-to-pdf — Преобразует все файлы jpeg в pdf в текущем каталоге. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.jpeg»
jpeg-to-png — Преобразует все файлы jpeg в png в текущем каталоге. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.jpeg»
jpg-rotate — Поворачивает все файлы jpg в текущем каталоге на заданный угол (по умолчанию 90 градусов вправо). Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.jpg». Вторым параметром может быть задано значение угла поворота (по умолчанию 90). Третьим параметром может быть задано разрешение изображения DENSITY (по умолчанию 200). Четвертым параметром может быть задано качество изображения QUALITY (по умолчанию 90)
jpg-to-jpeg — Преобразует все файлы jpg в jpeg в текущем каталоге. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.jpg»
jpg-to-pdf — Преобразует все файлы jpg в pdf в текущем каталоге. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.jpg»
jpg-to-png — Преобразует все файлы jpg в png в текущем каталоге. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.jpg»
pdf-imaged — Преобразует все файлы pdf в текущем каталоге в pdf файлы состоящие из изображений. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.pdf». Вторым параметром может быть задано разрешение изображения DENSITY (по умолчанию 200). Третьим параметром может быть задано качество изображения QUALITY (по умолчанию 90)
pdf-lastpage — Разделяет pdf файл на два файла. В первом содержатся все страницы без последней, а во втором пследняя страница документа. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.pdf».
pdf-merge — Объединяет все файлы pdf в текущем каталоге в один pdf файл. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.pdf». Вторым параметром может быть задано имя выходного pdf файла (по умолчанию имя файла будет равно имени каталога).
pdf-pages — Получает и выводид на экран количество страниц всех файлов pdf в текущем каталоге. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов). По умолчанию маска равна «*.pdf».
pdf-rotate — Поворачивает все файлы pdf в текущем каталоге на заданный угол (по умолчанию 90 градусов вправо). Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.pdf». Вторым параметром может быть задано значение угла поворота (по умолчанию 90). Третьим параметром может быть задано разрешение изображения DENSITY (по умолчанию 200). Четвертым параметром может быть задано качество изображения QUALITY (по умолчанию 90)
pdf-split — Разбивает все файлы pdf в текущем каталоге на страницы, сохраняя каждую страницу как отдельный pdf файл. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.pdf».
pdf-to-jpeg — Преобразует все файлы pdf в jpeg в текущем каталоге. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.pdf». Вторым параметром может быть задано разрешение изображения DENSITY (по умолчанию 200). Третьим параметром может быть задано качество изображения QUALITY (по умолчанию 90)
pdf-to-jpg — Преобразует все файлы pdf в jpg в текущем каталоге. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.pdf». Вторым параметром может быть задано разрешение изображения DENSITY (по умолчанию 200). Третьим параметром может быть задано качество изображения QUALITY (по умолчанию 90)
pdf-to-png — Преобразует все файлы pdf в png в текущем каталоге. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.pdf». Вторым параметром может быть задано разрешение изображения DENSITY (по умолчанию 200). Третьим параметром может быть задано качество изображения QUALITY (по умолчанию 90)
pdf-to-cmyk — Преобразует все файлы pdf в текущем каталоге в pdf файлы с цветовой схемой cmyk. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.pdf».
pdf-identify — Выводит информацию о всех pdf-файлах в текущем каталоге. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.pdf».
pdf-dpi — Преобразует все файлы pdf в pdf с указанным разрешением (dpi) в текущем каталоге. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.pdf». Вторым параметром может быть задано разрешение изображения DPI (по умолчанию 150).
eps-to-cmyk — Преобразует все файлы eps в текущем каталоге в pdf файлы с цветовой схемой cmyk. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.eps».
ps-to-cmyk — Преобразует все файлы ps в текущем каталоге в pdf файлы с цветовой схемой cmyk. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.ps».
png-rotate — Поворачивает все файлы png в текущем каталоге на заданный угол (по умолчанию 90 градусов вправо). Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.png». Вторым параметром может быть задано значение угла поворота (по умолчанию 90). Третьим параметром может быть задано разрешение изображения DENSITY (по умолчанию 200). Четвертым параметром может быть задано качество изображения QUALITY (по умолчанию 90)
png-to-jpeg — Преобразует все файлы png в jpeg в текущем каталоге. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.png»
png-to-jpg — Преобразует все файлы png в jpg в текущем каталоге. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.png»
png-to-pdf — Преобразует все файлы png в pdf в текущем каталоге. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.png»
xls-to-pdf — Преобразует все файлы xls в pdf в текущем каталоге. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.xls».
xls-to-xlsx — Преобразует все файлы xls в xlsx в текущем каталоге. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.xls»
xlsx-to-jpeg — Преобразует все файлы xlsx в jpeg в текущем каталоге. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.xlsx». Вторым параметром может быть задано значение landscape (по умолчанию) или portrait для соответствующей ориентации страниц. Третьим параметром может быть задано разрешение изображения DENSITY (по умолчанию 200). Четвертым параметром может быть задано качество изображения QUALITY (по умолчанию 90)
xlsx-to-jpg — Преобразует все файлы xlsx в jpg в текущем каталоге. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.xlsx». Вторым параметром может быть задано значение landscape (по умолчанию) или portrait для соответствующей ориентации страниц. Третьим параметром может быть задано разрешение изображения DENSITY (по умолчанию 200). Четвертым параметром может быть задано качество изображения QUALITY (по умолчанию 90)
xlsx-to-landscape — Преобразует все файлы xlsx в текущем каталоге в альбомный режим. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.xlsx». Вторым параметром может быть путь к каталогу с файлами.
xlsx-to-pdf — Преобразует все файлы xlsx в pdf в текущем каталоге. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.xlsx». Вторым параметром может быть задано значение landscape (по умолчанию) или portrait для соответствующей ориентации страниц
xlsx-to-png — Преобразует все файлы xlsx в png в текущем каталоге. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.xlsx». Вторым параметром может быть задано значение landscape (по умолчанию) или portrait для соответствующей ориентации страниц. Третьим параметром может быть задано разрешение изображения DENSITY (по умолчанию 200). Четвертым параметром может быть задано качество изображения QUALITY (по умолчанию 90)
xlsx-to-portrait — Преобразует все файлы xlsx в текущем каталоге в портретный режим. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.xlsx». Вторым параметром может быть путь к каталогу с файлами.
xlsx-to-xls — Преобразует все файлы xlsx в xls в текущем каталоге. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.xlsx»
xml-to-html — Преобразует все файлы xml в html в текущем каталоге, используя xslt-схему, указанную в href тега xml-stylesheet. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.xml»
html-to-pdf — Преобразует все файлы html в pdf в текущем каталоге. Первым параметром может быть задана маска поиска файлов в текущем каталоге (без подкаталогов) для преобразования. По умолчанию маска равна «*.html». Вторым параметром может быть задано значение Landscape (по умолчанию) или Portrait для соответствующей ориентации страниц.
Для чего этот образ?
Образ был создан для выполнения массовых операций по преобразованию документов между форматами и подготовки офисных документов форматов docx/xlsx к печати (установка портретного/альбомного режимов, установка параметров печати, преобразование в PDF), а так же обработки сканированных документов (фильтрация, поворот на 90 градусов и т.п.). Упаковка всех необходимых утилит в Docker контейнер решает задачу установки и совместимости версий у разных пользователей и на разных ОС, а написание простых команд, таких как xlsx-to-* и других, упрощает использование всех установленных утилит людьми, которые только поверхностно знакомы с bash или с Linux вообще.