Я пытаюсь конвертировать файлы 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 позволит мне.
PS Я использую сервер Ubuntu 12.04
Вывод :
Я должен был сделать вывод, что на данный момент у меня нет надежного инструмента, который будет работать с новыми форматами MS Word и всеми его элементами в Ubuntu и создавать копию файлов docx «один к одному». Ни один из протестированных мной инструментов не смог правильно преобразовать файл примера. Поскольку я буду сталкиваться с совершенно разными видами версий / содержимого документов, а качество вывода имеет один из самых высоких приоритетов, я в конечном итоге выполню преобразования с помощью макросов VB в Word на сервере Windows, подключенном к моему Linux.
Я установлю сообщение, получающее лучшие результаты как принятый ответ. Тем не менее, награда была предназначена для решения с абсолютно правильным преобразованием. Спасибо всем, снова.
источник
Ответы:
Этот ответ проходит все тесты, но блок-схема одна в вашем тестовом документе.
Почему это лучше, чем предлагают другие методы до сих пор?
Я проверил другие методы, предложенные до сих пор (особенно
oowriter
иebook-convert
), но они проходят меньше тестов, чем этот метод.ebook-convert
Метод полос полей и часть текстов из документа.Этот метод даже дает лучшие результаты, чем профессиональный конвертер, как rainbowpdf .
Я также попытался преобразовать его в HTML, но чертеж с квадратом в круге и блок-схема неверны.
Почему проверка блок-схемы не проходит?
Кажется, что у libreoffice и unoconv есть некоторые проблемы с правильным отображением блок-схемы, которая находится в файле .docx. Это, вероятно, потому, что это было сделано с использованием смарт-искусства в Microsoft Office. Это проблема. Эта ошибка также обсуждается в этой теме . Текстовая и визуальная информация присутствует в pdf, как видно из вышеприведенного метода (я должен был выбрать текст, хотя).
Например, цвет шрифта неправильно читается, а некоторые строки слишком длинные. Я не знаю ни одного решения Linux, способного правильно отображать смарт-арт. :(
Это также причина, по которой все
print
решения, размещенные на этой странице, не удовлетворят вас.Короче
Короче говоря, то, что вы делаете, действительно сложно, и в настоящее время нет решений, которые бы полностью вас удовлетворили. Ахиллесова пята преобразований docx2pdf - умное искусство. Если вы можете жить без этого или если вы можете найти способ обнаружить умное искусство и каким-то образом превратить его в изображение, вы можете достичь своей цели.
Вариант 1. Заставьте своих пользователей справиться с проблемой
Это очень не элегантное решение. Создатели контента могут сохранить свои умные изображения в формате jpg, как описано на страницах справки Office, и, следовательно, конвертация будет возможна на вашем сервере.
Вариант 2. Решите проблему
Если блок-схемы часто очень похожи и в зависимости от того, насколько вы хороши в разработке, вы можете попробовать преобразовать умное искусство отдельно. Вы можете извлечь файл Drawing1.xml из кластера документов .docx, а затем использовать обработку на естественном языке и некоторые сумасшедшие хаки, чтобы восстановить умное искусство. Например, вам придется возиться с этим типом xml:
Или, как минимальное решение, вы хотя бы извлекаете текст (
<a:t>
?) Из файла и сохраняете его более простым способом. Или, если блок-схемы ваших PDF-файлов одинаковы, вы можете написать скрипт для изменения цвета текста и длины строки в самом xml. Тогда вы можете запустить,doc2pdf
и у вас будет файл, который по существу содержит всю необходимую информацию, но, возможно, не форматирование. В случае блок-схем вы, возможно, также захотите включить некоторые из форматирования, потому что форматирование является частью информации.Вариант 3. Использовать сторонний сервис
За последние несколько дней я провел еще несколько исследований и нашел сервис, который отлично выполняет конверсию: zamzar . Zamzar позволяет загрузить файл DOCX, а затем отправляет вам ссылку по электронной почте. У них также есть услуга (платная?), Где вы можете отправить любой файл по адресу pdf@zamzar.com, а затем получить преобразованный файл обратно в свой почтовый ящик. Вы можете легко построить систему вокруг этого, где вы автоматически отправляете файл и анализируете его по электронной почте. Это не так много работы, и это лучший результат.
Заметки
Я действительно потратил время, чтобы проверить различные методы, предложенные на этой странице. Пожалуйста, поддержите любые комментарии с фактическими тестами.
источник
lowriter
сейчасlowriter --convert-to pdf input_file.docx
. Использование--pt pdf
не удастся молча.Это решение командной строки, которое работает прилично - но использует проприетарное программное обеспечение.
Я думаю, что основная проблема в том, что форматы Microsoft Word полностью понятны только для Microsoft Word (даже там, есть различия между версиями - есть файлы Word из прошлого, которые открываются неправильно отформатированными в более новых версиях). Все остальные решения являются аппроксимациями и взломами, поэтому они будут работать или нет в зависимости от файла.
Поэтому, чтобы быть уверенным, что вам нужно обработать файлы .docx с помощью установки Microsoft Word (и да, я думаю, что это их вариант, и это справедливо. Если вы не хотите использовать Word, не используйте его - я иду с LaTeX для моей работы, но трудно убедить остальной мир вокруг ...).
Я использую Crossover возрастов для запуска Microsoft Office на моем рабочем столе Linux (1), и считаю его весьма полезным. Может быть, это работает с вином тоже --- никогда не пробовал.
Я делаю преобразование, используя эту конфигурацию:
1) У меня установлен кроссовер
2) У меня установлена версия Microsoft Office под кроссовером
3) В Microsoft Word отключите «фоновую печать»
4) У меня
cups-pdf
установлен принтер и выбран принтер по умолчанию.5) Чтобы сделать преобразование, запустите (подсказки здесь ):
6) Ваш преобразованный файл появится в
~/PDF/
каталоге.Ваш документ получился почти идеально (в ответе № 2 есть некоторое смещение, которое отображается в моем Office Word 2007 при работе под Crossover - я не знаю, связано ли это с моей версией Windows).
Теперь проблема в том, что всплывающий графический интерфейс слов --- я не знаю, как сделать его "безголовым". Параметры командной строки для Word не помогли ...
(1) Я никоим образом не связан с Codeveawers - просто счастливый пользователь.
источник
У меня также была эта проблема в прошлом, мне не приходилось использовать ее в последнее время, поэтому я не знаю, влияет ли она на меня.
Что касается ответа на вопрос:
Этот вопрос: Как выполнить пакетное преобразование .doc или .docx в .pdf, в комментариях объясняется причина, по которой ваше преобразование с
lowriter
может быть неудачным:Ответ на этот вопрос также может помочь:
Как я могу преобразовать файл 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 года, поэтому оно должно применяться несколько.
Помимо всего этого, я действительно не знаю. Надеюсь, вы решите свою проблему!
источник
Если у вас установлен Libreoffice, вы можете попробовать конвертировать, используя это. Просто нажмите Ctrl+ Alt+ Tна клавиатуре, чтобы открыть терминал. Когда он откроется, выполните команду (ы) ниже:
Другой вариант - установить чашки PDF .
Для этого просто нажмите Ctrl+ Alt+ Tна клавиатуре, чтобы открыть терминал. Когда он откроется, выполните команду (ы) ниже:
Затем создайте новый принтер, установите его как принтер PDF-файлов и назовите его как хотите, если вы знаете его имя, затем запустите:
И ваш файл PDF будет в
~/PDF
.источник
Вот горькая правда: офисные решения для Linux - это полный провал! Я был постоянным пользователем GNU / Linux много лет, и я постоянно искал и пробовал различные офисные решения, от старого Open-Office, до более поздних Libre-Office, Abi-Word и т. Д. Они все не смогли помочь мне сделать мою офисную работу. Это даже ухудшается, когда речь идет о нелатинских языках (справа налево, таких как персидский, арабский и т. Д.). Пользователь должен бороться с этим программным обеспечением, чтобы сделать свою работу! И совместимости с офисом Microsoft просто нет. Я могу говорить часами о том, сколько я пробовал, и все они подвели меня, но суть этого вопроса не в этом.
Я также пытался установить и запустить Microsoft Office, используя WINE, и, в некоторой степени, успешно, но это не получилось, и в большинстве случаев он падал, когда я пытался открыть свои офисные файлы.
LaTeX - это хорошо, но это не офисное решение. LaTeX предназначен для набора текста, он больше похож на инструмент для профессионалов, и в нем нет ни таблиц, ни презентаций.
Так в чем же решение?
Это не решение командной строки. Единственное решение, которое я придумал за все эти годы, чтобы держать меня в своей операционной системе GNU / Linux и выполнять свои офисные работы, - это использовать минимальную установку Microsoft Windows на виртуальной машине (например, VirtualBox) и установить костюм Microsoft Office.
Это может звучать не очень красиво, но это единственное решение, которое работает безупречно и спасает меня от борьбы с плохими офисными решениями в мое драгоценное время. Сначала я сам думал, что это не очень хорошее решение, но после неудачи со всеми остальными и работы над этой виртуальной машиной в течение более 2 лет, я действительно доволен этим
:)
================================================== ==============================
ПРИМЕЧАНИЕ-1: я не рекламирую продукты Microsoft! Просто пытаюсь помочь решить проблему и двигаться дальше по жизни.
ПРИМЕЧАНИЕ-2: Как подчеркивалось выше, это НЕ решение для командной строки. Так зачем публиковать ответ? Потому что это проверенный и хорошо работающий вариант! Если РАБОЧЕЕ решение для командной строки недоступно (что, я подозреваю, так и есть), то вариант ALTERNATIVE лучше, чем NO.
источник
wine
вместо виртуальной машины?WINE
не прошел успешно. Программа не работала, как в Windows (показала некорректное поведение), а также сильно зависала!Вот пара приложений, которые вы можете попробовать и посмотреть, работают ли они FF Multi Converter, или вы можете попробовать Kingsoft Office .
источник
Установите Caliber из Центра программного обеспечения или Synaptic и установите вывод по умолчанию PDF.
В командной строке выполните
источник
ValueError: No plugin to handle input format: docx
. Google не помог в этом, поэтому я сообщу об ошибке.