Преобразование docx в PDF

32

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

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

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

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, подключенном к моей Linux.

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

    
задан Sceptical Jule 28.12.2013 в 15:12
источник

7 ответов

46

Этот ответ передает все тесты, но блок-схема 1 в тестовом документе.

sudo apt-get install unoconv
doc2pdf respondus-docx-sample-file.docx

Почему это лучше, чем другие методы, предлагаемые до сих пор?

Я тестировал другие предложенные методы (особенно oowriter и ebook-convert ), но они пропускают меньше тестов , чем этот метод. Метод ebook-convert разбивает поля и часть текстов из документа.

Этот метод даже дает лучшие результаты, чем профессиональный конвертер, как rainbowpdf .

Я также попытался преобразовать его в html, но рисунок с квадратом в круге и блок-схема неверны.

Почему завершился тест на блок-схеме?

Кажется, что libreoffice и unoconv имеют некоторые проблемы с правильным отображением блок-схемы, которая находится в файле .docx. Вероятно, это связано с тем, что он был создан с использованием умного искусства в Microsoft Office. Это проблема. Это ошибка , также обсуждаемая на этот поток . Текстовая и визуальная информация присутствует в pdf, полученном в результате вышеуказанного метода, как вы можете видеть (я должен был выбрать текст, хотя).

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

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

Короче

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

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

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

Вариант 2. Повреждение проблемы

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

Примечания

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

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

    
ответ дан don.joey 01.01.2014 в 14:11
источник
4

Это решение командной строки, которое работает достойно, но использует проприетарное программное обеспечение.

Я думаю, что основная проблема заключается в том, что Форматы Microsoft Word полностью понятны только для Microsoft Word (даже там есть различия между версиями --- есть файлы Word из прошлого, которые неправильно отображаются отформатированный в более новых версиях). Все остальные решения - это аппроксимации и хаки, поэтому они будут работать или не зависят от файла.

Поэтому, чтобы быть уверенным, что вам нужно обработать ваши .docx-файлы с установкой Microsoft Word (и да, я думаю, что это их вариант, и это справедливо. Если вы не хотите использовать Word, не используйте его --- Я иду с LaTeX для своей работы, но трудно убедить весь остальной мир ...).

Я использую с возрастом Кроссовер для запуска Microsoft Office на моем рабочем столе Linux (1), считая его весьма полезным. Возможно, он тоже работает с вином - никогда не пробовал.

Я делаю преобразование, используя эту конфигурацию:

1) У меня установлен кроссовер

2) У меня установлена ​​версия Microsoft Office под кроссовером

3) В Microsoft Word отключите «фоновое печать»

4) У меня установлен принтер cups-pdf и выбран в качестве принтера по умолчанию.

5) Чтобы выполнить преобразование, запустите (hints здесь ):

~/cxoffice/bin/wine --cx-app winword.exe respondus-docx-sample-file.docx /q /n /mFilePrintDefault /mFileExit

6) Ваш преобразованный файл появится в каталоге ~/PDF/ .

Документ выйдет почти идеально (есть некоторая несогласованность в ответе # 2, которые показаны в моем Word Word 2007 при работе под кроссовером --- я не знаю, связано ли это с моей версией Windows).

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

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

    
ответ дан Rmano 03.01.2014 в 18:17
3

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

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

Этот вопрос: Как конвертировать .doc или. docx в .pdf дает повод в комментариях, почему может произойти сбой при конвертации с lowriter :

  

Остерегайтесь использования символа "пробел" из командной строки ... Когда вы доберетесь до   пробел просто нажмите "tab";) - Pitto ноя 16 '12 в 13:11

Ответ на этот вопрос также может помочь:

Как конвертировать ODT в PDF?

Запустится libreoffice --headless --convert-to pdf *.odt . Вы можете получить дополнительную информацию о libreoffice с командой man libreoffice , если вам нужна помощь в понимании или настройке команды для работы.

Тем не менее, вы не можете открывать LibreOffice в то время, согласно этой ошибке: Ссылка

Этот вопрос также связан с Ubuntu, хотя он находится на SuperUser: Ссылка

Первый ответ имеет два варианта: один использует 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: Ссылка . Это с января 2013 года, поэтому оно должно применяться несколько.

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

    
ответ дан RPi Awesomeness 31.12.2013 в 03:40
2

Если у вас установлен 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 .

    
ответ дан Mitch 01.01.2014 в 12:49
2

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

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

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

Итак, какое решение?

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

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

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

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

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

    
ответ дан Seyed Mohammad 01.01.2014 в 10:49
1

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

ответ дан rstreeter78 03.01.2014 в 03:55
0

Установите Калибр из Software Center или Synaptic и установите выходной файл по умолчанию в формате PDF.

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

  

ebook-convert dummyfilename .docx .pdf -h

    
ответ дан K7AAY 01.01.2014 в 00:35