Перетворити docx в PDF


41

Я намагаюся перетворити 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 правильно? Також мені допомогло б, якби я знав, що це працює для когось із будь-якої з програм, про які я вже згадував. Я розпочну баунті, як тільки мені дозволить.

ps Я використовую сервер Ubuntu 12.04


Висновок :

Мені довелося зробити висновок, що для мене, як і зараз, немає надійного інструменту, який би працював з новими форматами MS Word та всіма його елементами на Ubuntu та створював копію файлів docx. Жоден із перевірених інструментів не міг належним чином перетворити зразок. Оскільки у мене будуть стикатися з дуже різними видами версій / вмісту документів, а якість виходу є одним із найвищих пріоритетів, я закінчу виконувати перетворення за допомогою макросів VB в Word на сервері Windows, підключеному до мого Linux.

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


3
спробував латекс?
Брайам

@ScepticalJule, Так, проблема є наприкінці. Я просто переглянув першу сторінку.

1
@Braiam Чи можете ви перейти до перетворення з латексу?
Скептичний Джул


2
@ScepticalJule Я думаю, що Брайам мав на увазі, що ви повинні спробувати написати ваш документ негайно. Перетворення з docx в латекс набагато болючіші, ніж перетворення з docx в pdf. Ви можете спробувати зробити перетворення з docx в doc, а потім з doc в pdf. Але для цього вам доведеться знайти незалежний інструмент LO. Повідомте мене, чи можу я допомогти іншим способом і чи допомогла моя відповідь.
don.joey

Відповіді:


58

Ця відповідь проходить усі тести, але схему потоку у вашому тестовому документі.

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>?) З файлу і зберігаєте його більш простим способом. Або якщо діаграми потоку ваших pdfs однакові, ви можете написати сценарій для зміни кольору тексту та довжини рядка в самій xml. Тоді ви можете запустити, doc2pdfі у вас буде файл, який по суті має всю потрібну інформацію, але, можливо, не форматування. У випадку діаграм потоку, ймовірно, ви також хочете включити частину форматування, оскільки форматування є частиною інформації.

Варіант 3. Використовуйте послугу третьої сторони

За останні кілька днів я провів ще кілька досліджень і знайшов службу, яка робить перетворення ідеально: zamzar . Zamzar дозволяє завантажувати docx файл, а потім надсилає вам електронне посилання. У них також є (платна?) Послуга, де ви можете надіслати будь-який файл на pdf@zamzar.com, а потім отримати конвертований файл назад у свою поштову скриньку. Ви можете легко створити систему навколо цього, де ви автоматично надсилаєте файл та аналізуєте його з електронної пошти. Це не стільки робота, і кінцевий результат найкращий.

Примітки

  • Якщо у когось є інші сервіси, які роблять те саме, будь ласка, відредагуйте їх.
  • Я надіслав підтримку замзара, щоб запитати, чи є у них api. Це було б ще простіше.
  • Може допомогти .NET і Java також можуть допомогти? Або docx4java, як у цій дуже пов'язаній публікації SO .
  • Інший варіант полягає в тому, щоб заглянути в коефіцієнт odf, який здається датованим і не залежить від openoffice, а не libreoffice.
  • Тепер я можу підтвердити, що jvaconverter Java також страждає не в змозі перетворення діаграми.

Я фактично зайняв час, щоб перевірити різні методи, запропоновані на цій сторінці. Будь ласка, поверніть будь-які коментарі до фактичних тестів.


1
Я отримав новини від zamzar: "В даний час у нас є API, який ми сподіваємося запустити в Beta в найближчі пару місяців - ми могли б вас додати до бета-версії, якщо це зацікавить?" Вони також зазначили, що їхня система перетворення - це те, що вони розробили у себе.
don.joey

@jasonplutext Я погоджуюся з рецензентами, що ваша редакція не була корисною. Як автор plutext (я думаю?) Я б запропонував вам додати власну відповідь із відмовою від відповідальності із зазначенням вашої приналежності. Спасибі.
don.joey

Будь-які оновлення за останні кілька років?
бекко

@becko Я не дотримувався цього. Може, встановити виграш для когось іншого?
don.joey

Зверніть увагу , з майбутнього: правильне використання в останніх версіях lowriterтепер lowriter --convert-to pdf input_file.docx. Використання --pt pdfне вдасться безшумно.
ACK_stoverflow

6

Це рішення командного рядка, яке працює пристойно --- але використовує власні програми.

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

Отже, щоб переконатися, що вам потрібно обробити ваші .docx файли з установкою Microsoft Word (і так, я думаю, це їх варіант і це справедливо. Якщо ви не хочете використовувати Word, не використовуйте його --- я переходжу з LaTeX для моєї роботи, але важко переконати решту світу навколо ...).

Я використовую з віків Crossover для роботи Microsoft Office на своєму робочому столі Linux (1), вважаючи це досить корисним. Можливо, він працює і з вином --- ніколи не пробував.

Перетворення я здійснюю за допомогою цієї конфігурації:

1) У мене встановлений кросовер

2) У мене в Crossover встановлена ​​моя версія Microsoft Office

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).

сторінка 1-2

сторінки 3-4

Тепер проблема полягає в тому, що графічний інтерфейс слова спливе --- Я не знаю, як зробити це "безголовим". Параметри командного рядка для Word не допомогли ...

(1) Я жодним чином не пов'язаний із Codeveawers --- просто щасливий користувач.


4

У мене також була ця проблема в минулому, не довелося їй користуватися останнім часом, так що я не знаю, чи все ще впливає на мене.

Що стосується відповіді на питання:

Це питання: Як отримати пакетну конвертацію .doc або .docx у .pdf, у коментарях пояснюється причина, чому ваша конверсія за допомогою lowriterможе бути невдалою:

Остерігайтеся використання символу "пробіл" з командного рядка ... Коли ви потрапите на пробіл символу, просто натисніть "вкладку";) - Пітто 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 через PDF CUPS, то ви запускаєте sudo apt-get install cups-pdfйого oowriter -pt pdf your_word_file.doc(x). Це може допомогти у вирішенні проблеми з власником.

Це, мабуть, проблема в тому, що ви намагаєтеся перетворити в PDF з DOC / DOCX, коли більшість інструментів використовують ODT, оскільки вони пов'язані з LibreOffice / OpenOffice / AbiWord. Таким чином, вони або не намагаються перетворити його з формату DOCX Microsofts або перетворити його в ODT.

Існує кілька помилок з перетворенням .docx w. Word Art (версія включена):

Це з форуму LibreOffice щодо перетворення з .doc і дещо .docx: http://en.libreofficeforum.org/node/5096 . Це з січня 2013 року, тому це має бути дещо застосовано.

Поза цим, я насправді не знаю. Сподіваюся, ви вирішите свою проблему!


Вибачте, але жоден із запропонованих вами інструментів не зміг зробити конверсію.
Скептичний Джуль

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.


1
У них не було успіху.
Скептичний Джуль

Це може відповісти чому.
Скептичний Джул

Я ціную вашу відповідь. Це має багато сенсу, але я здивований, що друк не працював, оскільки це подобається друк на папері ... :)
Мітч

Ключова проблема полягає в тому, що LibreOffice навіть не в змозі правильно відкрити та відобразити документ. Отже, вихід також невірний. Це працювало на вашому Linux?
Скептичний Джуль

Це добре знати. Я використовую офіс лише для базових документів, необхідність не виникає в чомусь більш складному, але коли це станеться, я переконаюсь і звернусь до цього. Дякуємо за чудове запитання, і я обов'язково додаю його як фаворит для подальшого ознайомлення. Я буду зберігати цю відповідь та коментарі як посилання для інших користувачів.
Мітч

2

Ось гірка правда: рішення для Office для 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.


1
Навіщо просто використовувати слово MS wineзамість віртуальної машини?
totti

1
Як я вже згадував, мій досвід встановлення та використання MS-Office WINEне вдався. Програма не працювала, як у Windows (показала неправильну поведінку), а також сильно вийшла з ладу!
засідає Мохаммед

3
Немає Оха має downvoted ще , але питання явно просить командний рядок рішення. Це не марно через MS, воно марне, оскільки воно повністю ігнорує питання.
djeikyb

3
Зверніть увагу, що ОП явно просить рішення командного рядка, яке буде працювати на його сервері Ubuntu (який, швидше за все, навіть не має графічного інтерфейсу!). Ваша відповідь не є поганою, але вона просто не актуальна в цьому випадку.
Глутанімат

2
@ScepticalJule Смішні. Ви явно ставите щедрість на рішення командного рядка. Потім ви вибираєте відповідь, яка навіть не є відповіддю на питання. Ви навіть вивчали інші відповіді. Включаючи цей і мій?
don.joey

1

Ось кілька додатків, які ви можете спробувати і побачити, чи працюють вони FF Multi Converter або ви можете спробувати Kingsoft Office .


Встановив FF Multi Converter, виконав команду ... нічого не сталося. У Kingsoft є гарний графічний інтерфейс, але він не зміг правильно відкрити / показати файл (формули були відсутні навіть після того, як я встановив потрібні шрифти. Букви в колі також відсутні).
Скептичний Джул

0

Встановіть « Калібр» з Software Center або Synaptic і встановіть вихідний файл за замовчуванням у PDF.

З оболонки підкажіть, виконайте

перетворення електронної книги .dumx .pdf -h


Це якось скорочує текст.
don.joey

Збийте с ValueError: No plugin to handle input format: docx. Google не допомагав у цьому, тому я повідомляю про помилку.
Скептичний Джул
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.