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