Преобразуйте docx в PDF

Я пытаюсь преобразовать docx файлы в PDF на моем сервере Ubuntu с помощью командной строки, но ни один из преобразователей, которые я попробовал до сих пор, кажется, не преобразовывает файлы Word 2007/2010/2013 правильно.

Преобразователи Appearently онлайн могут управлять им без любых проблем, но веб-сервисы не являются опцией, потому что файлы содержат уязвимые данные. Для тестов я использую этот файл Word 2007, потому что он содержит некоторые важные элементы (формулы, векторная графика, изображения, списки, и т.д.). Я протестировал следующие инструменты (частично из этого сообщения):

lowriter (Устройство записи LibreOffice) - неправильный вывод (круг, как предполагается, находится на последней странице, не первой),

enter image description here

unoconv - то же как LibreOffice, так как это не использует свой собственный преобразователь. Преобразование в odt сначала и затем в PDF смешивает файл полностью.

abiword --to=pdf filename.doc - неправильный и неполный (много элементов отсутствуют):

enter image description here

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.

Я установлю сообщение, получая лучшие результаты как принятый ответ. Однако щедрость была предназначена для решения с абсолютно корректным преобразованием. Благодаря всем, снова.

41
задан 20 March 2017 в 13:18

7 ответов

Этот ответ проходит все тесты, но блок-схема 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, полученном в результате вышеуказанного метода (хотя мне пришлось выбирать текст).

The flowchart that does not display completely as expected.

Цвет шрифта, например, неправильно читается, а некоторые строки слишком длинные. Я не знаю ни одного решения Linux, способного правильно отображать смарт-арт. :(

Это также причина, по которой все print решения, размещенные на этой странице, не удовлетворят вас.

Короче

Короче, что вы делаете действительно трудно, и в настоящее время нет решений, которые бы полностью вас удовлетворили. Ахиллесова пята преобразований docx2pdf - это умное искусство. Если вы можете жить без этого или можете найти способ обнаружить умное искусство ] и конвертировать его в изображение, вы можете достичь своей цели.

Вариант 1. Заставить своих пользователей справиться с проблемой

Это очень не элегантное решение. Создатели контента могут сохранить их умное искусство как jpg, как описано на страницах справки для офиса , и, следовательно, преобразование будет возможно на вашем сервере.

Вариант 2. Решите проблему

Если блок-схемы часто очень похожи и в зависимости от того, насколько вы хороши в разработке, вы можете попробовать преобразовать смарт-арт отдельно. Вы можете извлечь файл 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 и получить файл, который по существу содержит всю необходимую информацию, но, возможно, не форматирование. В случае блок-схем вы, вероятно, также захотите включить некоторые из форматирования, потому что форматирование является частью информации.

Вариант 3. Использование стороннего сервиса

В последние несколько дней я провел еще несколько исследований и нашел сервис, который прекрасно выполняет конвертацию: zamzar . Zamzar позволяет загрузить файл DOCX, а затем отправляет вам ссылку по электронной почте. У них также есть услуга (платная?), Где вы можете отправить любой файл по адресу pdf@zamzar.com, а затем получить преобразованный файл обратно в свой почтовый ящик. Вы можете легко построить систему вокруг этого, где вы автоматически отправляете файл и анализируете его по электронной почте. Это не так много работы, и это лучший результат.

Примечания

  • Если у кого-то есть другие службы, которые делают то же самое, пожалуйста, не стесняйтесь редактировать их.
  • 1128 Я отправил по почте поддержку Замзара, чтобы спросить, есть ли у них API. Это было бы еще проще.
  • Может быть, apose для .NET и Java также могут помочь? Или docx4java, как в , это очень родственное сообщение SO .
  • Другой вариант - заглянуть в odf-конвертер , который выглядит устаревшим и зависит от openoffice, а не libreoffice.
  • Теперь я могу подтвердить, что java jodconverter также терпит неудачу при преобразовании блок-схемы.

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

0
ответ дан 20 March 2017 в 13:18
  • 1
    @utkumaden В случае интерактивных терминалов входа в систему, просто замените ~/.bashrc ~/.profile – heemayl 18 June 2015 в 22:37

У меня также была эта проблема в прошлом, в последнее время мне не приходилось ее использовать, поэтому я не знаю, влияет ли она на меня.

Что касается ответа на вопрос:

Этот вопрос: Как выполнить пакетное преобразование .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 (версия включена):

Это из форума LibreOffice, касающегося преобразования из .doc и в некотором смысле .docx: http://en.libreofficeforum.org/node/5096. Это с января 2013 года, поэтому оно должно применяться несколько.

Помимо всего этого, я действительно не знаю. Надеюсь, вы решите свою проблему!

0
ответ дан 20 March 2017 в 13:18
  • 1
    @heemayl я думаю для большинства задач, что пользователю нужно, ~/.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).

pagew 1-2

pages 3-4

Теперь проблема в том, что графический интерфейс слов будет всплывать - я не знать, как сделать это "без головы". Параметры командной строки для Word не помогли ...

(1) Я никоим образом не связан с Codeveawers - просто счастливый пользователь.

0
ответ дан 20 March 2017 в 13:18

Если у вас установлен Libreoffice, вы можете попробовать конвертировать, используя это. Просто нажмите Ctrl + Alt + T на клавиатуре, чтобы открыть терминал. Когда он откроется, выполните команду (команды) ниже:

libreoffice --headless -convert-to pdf <file_name>.docx -outdir output/path/for/pdf

Другой вариант - установить Cups PDF .

Для этого просто нажмите Ctrl + Alt + T на клавиатуре, чтобы открыть терминал. Когда он откроется, выполните команду (ы) ниже:

sudo apt-get install cups-pdf

Затем создайте новый принтер, установите его в качестве принтера PDF-файлов и назовите его как хотите, если вы знаете его имя, затем запустите:

oowriter -pt pdf your_word_file.docx

И ваш файл PDF будет в ~/PDF.

0
ответ дан 20 March 2017 в 13:18
  • 1
    Я желаю, чтобы это работало бы. Это не сделало. Я проверил не, входят в систему терминал. Это действительно работало там. Я мог бы хотеть попробовать @Serg ' s отвечают за это. – utkumaden 18 June 2015 в 22:52

Вот горькая правда: офисные решения для Linux - это полный провал! Я был постоянным пользователем GNU / Linux много лет, и я постоянно искал и пробовал различные офисные решения, от старого Open-Office, до более поздних Libre-Office, Abi-Word и т. Д. Они все не смогли помочь мне сделать мою офисную работу. Это даже ухудшается, когда речь идет о нелатинских языках (справа налево, таких как персидский, арабский и т. Д.). Пользователь должен бороться с этим программным обеспечением, чтобы сделать свою работу! И совместимости с офисом Microsoft просто нет. Я могу говорить часами о том, сколько я пробовал, и все они подвели меня, но суть этого вопроса не в этом.

Я также пытался установить и запустить Microsoft Office с использованием WINE, и, как-то, он был успешным, но он не удался, и в большинстве случаев он падал, когда я пытался открыть файлы Office.

LaTeX - это хорошо, но это не офисное решение. LaTeX предназначен для набора текста, он больше похож на инструмент для профессионалов, и в нем нет ни таблиц, ни презентаций.

Так в чем же решение?

Это не решение командной строки. Единственное решение, которое я придумал за все эти годы, чтобы держать меня в своей операционной системе GNU / Linux и выполнять свои офисные работы, - это использовать минимальную установку Microsoft Windows на виртуальной машине (например, VirtualBox) и установить костюм Microsoft Office.

enter image description here

Это может звучать не очень красиво, но это единственное решение, которое работает безупречно и спасает меня от борьбы с плохими офисными решениями в мое драгоценное время. Сначала я сам думал, что это не очень хорошее решение, но после неудачи со всеми остальными и выполнения этой работы с виртуальными машинами в течение более 2 лет, я действительно доволен этим :)

=============================================== =================================

ПРИМЕЧАНИЕ-1: I Я не рекламирую продукты Microsoft! Просто пытаюсь помочь решить проблему и идти дальше с жизнью.

ПРИМЕЧАНИЕ-2: Как подчеркивалось выше, это НЕ решение для командной строки. Так зачем публиковать ответ? Потому что это проверенный и хорошо работающий вариант! Если РАБОЧЕЕ решение для командной строки недоступно (что, как я подозреваю, так и есть), то вариант ALTERNATIVE лучше, чем NO.

0
ответ дан 20 March 2017 в 13:18
  • 1
    Были точно, что строка идет? Я can' t находят, где я, как предполагается, добавляю его. – utkumaden 18 June 2015 в 22:21

Вот пара приложений, которые вы можете попробовать и посмотреть, работают ли они FF Multi Converter или вы можете попробовать Kingsoft Office .

0
ответ дан 20 March 2017 в 13:18

Установите Caliber из Центра программного обеспечения или Synaptic и установите выход по умолчанию в PDF.

В командной строке выполните

ebook-convert dummyfilename .docx .pdf -h

0
ответ дан 20 March 2017 в 13:18

Другие вопросы по тегам:

Похожие вопросы: