Этот ответ проходит все тесты, но блок-схема одна в вашем тестовом документе.
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, как описано на страницах справки Office, и, следовательно, конвертация будет возможна на вашем сервере.
Вариант 2. Решите проблему
Если блок-схемы часто очень похожи и в зависимости от того, насколько вы хороши в разработке, вы можете попробовать преобразовать умное искусство отдельно. Вы можете извлечь файл Drawing1.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, а затем получить преобразованный файл обратно в свой почтовый ящик. Вы можете легко построить систему вокруг этого, где вы автоматически отправляете файл и анализируете его по электронной почте. Это не так много работы, и это лучший результат.
Заметки
- Если у кого-то есть другие службы, которые делают то же самое, пожалуйста, не стесняйтесь редактировать их в.
- Я отправил по почте поддержку Замзар, чтобы спросить, есть ли у них API. Это было бы еще проще.
- Может быть, помощь для .NET и Java также могут помочь? Или docx4java, как в этом очень похожем посте .
- Другой вариант - заглянуть в odf-конвертер, который выглядит устаревшим и зависит от openoffice, а не от libreoffice.
- Теперь я могу подтвердить, что java jodconverter также терпит неудачу при преобразовании блок-схемы.
Я действительно потратил время, чтобы проверить различные методы, предложенные на этой странице. Пожалуйста, поддержите любые комментарии с фактическими тестами.