Я пытаюсь преобразовать docx файлы в PDF на моем сервере Ubuntu с помощью командной строки, но ни один из преобразователей, которые я попробовал до сих пор, кажется, не преобразовывает файлы Word 2007/2010/2013 правильно.
Преобразователи Appearently онлайн могут управлять им без любых проблем, но веб-сервисы не являются опцией, потому что файлы содержат уязвимые данные. Для тестов я использую этот файл Word 2007, потому что он содержит некоторые важные элементы (формулы, векторная графика, изображения, списки, и т.д.). Я протестировал следующие инструменты (частично из этого сообщения):
lowriter
(Устройство записи LibreOffice) - неправильный вывод (круг, как предполагается, находится на последней странице, не первой),
unoconv
- то же как LibreOffice, так как это не использует свой собственный преобразователь. Преобразование в odt сначала и затем в PDF смешивает файл полностью.
abiword --to=pdf filename.doc
- неправильный и неполный (много элементов отсутствуют):
OpenOffice Writer - тот же результат что касается abiword
wvPDF
- катастрофический отказ со следующим сообщением об ошибке:
~ $ wvPDF 2007_Office_DocEncryption.docx test.pdf
Текущий каталог:/home/webmt/dev/test/
Некоторая проблема, выполняющая латекс.
Проверьте ошибки в test.log
Продолжение...
Преобразование в dvi перестало работать
Там какой-либо путь состоит в том, чтобы преобразовать docx файлы в PDF на Linux правильно? Также помогло бы мне, если бы я знал, что это работает на кого-то с любой из программ, которые я уже упомянул. Я запущу щедрость, как только SE позволяет мне.
p.s. Я использую сервер Ubuntu 12.04
Заключение:
Я должен был прийти к заключению, что что касается меня, что касается теперь, нет никакого надежного инструмента, который будет работать с новыми форматами MS Word и всем видом его элементов на Ubuntu и создавать непосредственную копию docx файлов. Ни один из инструментов, которые я протестировал, не мог преобразовать файл примера правильно. Так как я буду сталкиваться с совсем другим видом версий/содержания документа, и выходное качество имеет один из самого высокого приоритета, я закончу тем, что выполнил преобразования посредством макросов VB в Word на Windows Server, подключенном к моему Linux.
Я установлю сообщение, получая лучшие результаты как принятый ответ. Однако щедрость была предназначена для решения с абсолютно корректным преобразованием. Благодаря всем, снова.
Этот ответ проходит все тесты, но блок-схема 1 в вашем тестовом документе.
sudo apt-get install unoconv
doc2pdf respondus-docx-sample-file.docx
Я проверил другие методы, предложенные до сих пор (особенно oowriter
и ebook-convert
), но они проходят меньше тесты , чем этот метод. Метод ebook-convert
удаляет поля и часть текстов из документа.
Этот метод даже дает лучшие результаты, чем профессиональный конвертер, как rainbowpdf .
Я также пытался преобразовать его в HTML, но чертеж с квадратом в круге и блок-схемой неверны.
Кажется, что у libreoffice и unoconv есть некоторые проблемы с правильным отображением потоковой диаграммы, которая находится в файле .docx. Вероятно, это связано с тем, что он был создан с использованием smart art в Microsoft Office. Это проблема. Это ошибка , также обсуждаемая в этой теме . Текстовая и визуальная информация, как вы можете видеть, присутствует в pdf, полученном в результате вышеуказанного метода (хотя мне пришлось выбирать текст).
Цвет шрифта, например, неправильно читается, а некоторые строки слишком длинные. Я не знаю ни одного решения Linux, способного правильно отображать смарт-арт. :(
Это также причина, по которой все print
решения, размещенные на этой странице, не удовлетворят вас.
Короче, что вы делаете действительно трудно, и в настоящее время нет решений, которые бы полностью вас удовлетворили. Ахиллесова пята преобразований docx2pdf - это умное искусство. Если вы можете жить без этого или можете найти способ обнаружить умное искусство ] и конвертировать его в изображение, вы можете достичь своей цели.
Это очень не элегантное решение. Создатели контента могут сохранить их умное искусство как jpg, как описано на страницах справки для офиса , и, следовательно, преобразование будет возможно на вашем сервере.
Если блок-схемы часто очень похожи и в зависимости от того, насколько вы хороши в разработке, вы можете попробовать преобразовать смарт-арт отдельно. Вы можете извлечь файл Drawing1.xml из .do CX кластер документов, а затем использовать обработку естественного языка и некоторые сумасшедшие хаки, чтобы восстановить умное искусство. Например, вам придется возиться с этим типом xml:
<dsp:txBody>
<a:bodyPr spcFirstLastPara="0" vert="horz" wrap="square" lIns="8255" tIns="8255" rIns="8255" bIns="8255" numCol="1" spcCol="1270" anchor="ctr" anchorCtr="0">
<a:noAutofit/>
</a:bodyPr>
<a:lstStyle/>
<a:p>
<a:pPr lvl="0" algn="ctr" defTabSz="577850">
<a:lnSpc><a:spcPct val="90000"/>
</a:lnSpc>
<a:spcBef>
<a:spcPct val="0"/>
</a:spcBef>
<a:spcAft>
<a:spcPct val="35000"/>
</a:spcAft>
</a:pPr>
<a:r>
<a:rPr lang="en-US" sz="1300" b="1" kern="1200"/>
<a:t>All three sides are different lengths
</a:t>
</a:r>
</a:p>
</dsp:txBody>
Или в качестве минимального решения вы по крайней мере извлекаете текст (<a:t>
?) Из файла и сохранить его более простым способом. Или, если блок-схемы ваших PDF-файлов одинаковы, вы можете написать скрипт для изменения цвета текста и длины строки в самом xml. Тогда вы можете запустить doc2pdf
и получить файл, который по существу содержит всю необходимую информацию, но, возможно, не форматирование. В случае блок-схем вы, вероятно, также захотите включить некоторые из форматирования, потому что форматирование является частью информации.
В последние несколько дней я провел еще несколько исследований и нашел сервис, который прекрасно выполняет конвертацию: zamzar . Zamzar позволяет загрузить файл DOCX, а затем отправляет вам ссылку по электронной почте. У них также есть услуга (платная?), Где вы можете отправить любой файл по адресу pdf@zamzar.com, а затем получить преобразованный файл обратно в свой почтовый ящик. Вы можете легко построить систему вокруг этого, где вы автоматически отправляете файл и анализируете его по электронной почте. Это не так много работы, и это лучший результат.
Я действительно потратил время, чтобы проверить различные методы, предложенные на этой странице. Пожалуйста, подкрепите любые комментарии фактическими тестами.
У меня также была эта проблема в прошлом, в последнее время мне не приходилось ее использовать, поэтому я не знаю, влияет ли она на меня.
Что касается ответа на вопрос:
Этот вопрос: Как выполнить пакетное преобразование .doc или .docx в .pdf , в комментариях приводится причина, по которой ваше преобразование с помощью lowriter
может быть неудачным:
Остерегайтесь использования символа «пробел» из командной строки ... Когда вы попадаете на символ пробела, просто нажмите «tab»;) - Pitto Nov 16 '12 в 13:11
Ответ на этот вопрос также может помочь:
Как преобразовать ODT-файл в PDF?
Вы запустите libreoffice --headless --convert-to pdf *.odt
. Вы можете получить больше информации о libreoffice с помощью команды man libreoffice
, если вам нужна помощь в понимании или настройке команды для работы.
Тем не менее, вы не можете открыть LibreOffice в то время, согласно этой ошибке: https://bugs.freedesktop.org/show_bug.cgi?id=37531
Этот вопрос также относится к Ubuntu, хотя он и для SuperUser: https://superuser.com/questions/156189/how-to-convert-word-doc-to-pdf-in-linux ]
В первом ответе есть два варианта: один с использованием CUPS и созданием принтера PDF, другой с использованием LaTex, хотя вы и говорили, что LaTex провалился.
Что касается преобразования в PDF через CUPS PDF, вы должны запустить sudo apt-get install cups-pdf
, а затем oowriter -pt pdf your_word_file.doc(x)
. Это может помочь с вашей проблемой oowriter.
Это, вероятно, проблема с тем фактом, что вы пытаетесь конвертировать в PDF из DOC / DOCX, когда большинство инструментов используют ODT, так как они связаны с LibreOffice / OpenOffice / AbiWord. Таким образом, они либо терпят неудачу при попытке конвертировать его из формата Microsoft DOCX, либо при конвертации в ODT.
Есть несколько ошибок с преобразованием из .docx w. Word Art (версия включена):
https://bugs.freedesktop.org/show_bug.cgi?id=33072 - 3.3.0 RC 2 ( я считаю устаревшим)
https://bugs.freedesktop.org/show_bug.cgi?id=63289 - 4.0.2.2
https://bugs.freedesktop.org/show_bug.cgi?id=62251 - 4.0.0.3
https: / /bugs.freedesktop.org/show_bug.cgi?id=65260 - не указано
Это из форума LibreOffice, касающегося преобразования из .doc и в некотором смысле .docx: http://en.libreofficeforum.org/node/5096. Это с января 2013 года, поэтому оно должно применяться несколько.
Помимо всего этого, я действительно не знаю. Надеюсь, вы решите свою проблему!
~/.bashrc
, будет достаточен. Это работает на быть и в ttys и в графическом терминале, таким образом...
– Sergiy Kolodyazhnyy
18 June 2015 в 22:39
Это решение для командной строки, которое работает прилично - но использует проприетарное программное обеспечение.
Я думаю, что основная проблема в том, что форматы Microsoft Word полностью понятны только для Microsoft Word (даже там, есть различия между версиями - есть файлы Word из прошлого, которые открывает неправильно отформатированный в более новых версиях). Все остальные решения являются аппроксимациями и взломами, поэтому они будут работать или нет в зависимости от файла.
Итак, чтобы быть уверенным, что вам нужно обработать файлы .docx с помощью установки Microsoft Word (и да, я думаю, что это их вариант, и это справедливо. Если вы не хотите использовать Word, не используйте его --- Я работаю с LaTeX, но мне сложно убедить весь остальной мир ...).
Я использую Crossover с давних пор для запуска Microsoft Office на моем рабочем столе Linux (1), и считаю его весьма полезным. Может быть, это работает с вином тоже --- никогда не пробовал.
Я делаю преобразование, используя эту конфигурацию:
1) У меня установлен Crossover
2) У меня установлена версия Microsoft Office под Crossover
3) В Microsoft Word отключите «фоновую печать»
4) У меня установлен принтер cups-pdf
и выбран в качестве принтера по умолчанию.
5) Чтобы выполнить преобразование, запустите (подсказки здесь ):
~/cxoffice/bin/wine --cx-app winword.exe respondus-docx-sample-file.docx /q /n /mFilePrintDefault /mFileExit
6) Ваш преобразованный файл появится в каталоге ~/PDF/
.
Ваш документ получился почти идеально (в ответе № 2 есть некоторое смещение, которое отображается в моем Office Word 2007 при работе под Crossover - я не знаю, связано ли это с моей версией для Windows).
Теперь проблема в том, что графический интерфейс слов будет всплывать - я не знать, как сделать это "без головы". Параметры командной строки для Word не помогли ...
(1) Я никоим образом не связан с Codeveawers - просто счастливый пользователь.
Если у вас установлен Libreoffice, вы можете попробовать конвертировать, используя это. Просто нажмите Ctrl kbd> + Alt kbd> + T kbd> на клавиатуре, чтобы открыть терминал. Когда он откроется, выполните команду (команды) ниже:
libreoffice --headless -convert-to pdf <file_name>.docx -outdir output/path/for/pdf
Другой вариант - установить Cups PDF .
Для этого просто нажмите Ctrl kbd> + Alt kbd> + T kbd> на клавиатуре, чтобы открыть терминал. Когда он откроется, выполните команду (ы) ниже:
sudo apt-get install cups-pdf
Затем создайте новый принтер, установите его в качестве принтера PDF-файлов и назовите его как хотите, если вы знаете его имя, затем запустите:
oowriter -pt pdf your_word_file.docx
И ваш файл PDF будет в ~/PDF
.
Вот горькая правда: офисные решения для Linux - это полный провал! Я был постоянным пользователем GNU / Linux много лет, и я постоянно искал и пробовал различные офисные решения, от старого Open-Office, до более поздних Libre-Office, Abi-Word и т. Д. Они все не смогли помочь мне сделать мою офисную работу. Это даже ухудшается, когда речь идет о нелатинских языках (справа налево, таких как персидский, арабский и т. Д.). Пользователь должен бороться с этим программным обеспечением, чтобы сделать свою работу! И совместимости с офисом Microsoft просто нет. Я могу говорить часами о том, сколько я пробовал, и все они подвели меня, но суть этого вопроса не в этом.
Я также пытался установить и запустить Microsoft Office с использованием WINE, и, как-то, он был успешным, но он не удался, и в большинстве случаев он падал, когда я пытался открыть файлы Office.
LaTeX - это хорошо, но это не офисное решение. LaTeX предназначен для набора текста, он больше похож на инструмент для профессионалов, и в нем нет ни таблиц, ни презентаций.
Это не решение командной строки. Единственное решение, которое я придумал за все эти годы, чтобы держать меня в своей операционной системе GNU / Linux и выполнять свои офисные работы, - это использовать минимальную установку Microsoft Windows на виртуальной машине (например, VirtualBox) и установить костюм Microsoft Office.
Это может звучать не очень красиво, но это единственное решение, которое работает безупречно и спасает меня от борьбы с плохими офисными решениями в мое драгоценное время. Сначала я сам думал, что это не очень хорошее решение, но после неудачи со всеми остальными и выполнения этой работы с виртуальными машинами в течение более 2 лет, я действительно доволен этим :)
=============================================== =================================
ПРИМЕЧАНИЕ-1: I Я не рекламирую продукты Microsoft! Просто пытаюсь помочь решить проблему и идти дальше с жизнью.
ПРИМЕЧАНИЕ-2: Как подчеркивалось выше, это НЕ решение для командной строки. Так зачем публиковать ответ? Потому что это проверенный и хорошо работающий вариант! Если РАБОЧЕЕ решение для командной строки недоступно (что, как я подозреваю, так и есть), то вариант ALTERNATIVE лучше, чем NO.
Вот пара приложений, которые вы можете попробовать и посмотреть, работают ли они FF Multi Converter или вы можете попробовать Kingsoft Office .
Установите Caliber из Центра программного обеспечения или Synaptic и установите выход по умолчанию в PDF.
В командной строке выполните
ebook-convert dummyfilename .docx .pdf -h
~/.bashrc
~/.profile
– heemayl 18 June 2015 в 22:37