Converter docx para PDF

32

Eu estou tentando converter arquivos docx para pdf no meu servidor Ubuntu usando a linha de comando mas nenhum dos conversores que eu tentei até agora parece converter o Word 2007/2010 / 2013 arquivos corretamente.

Os conversores on-line de aparência podem gerenciá-lo sem problemas, mas os serviços da Web não são uma opção, pois os arquivos contêm dados confidenciais. Para testes eu uso este arquivo do Word 2007 porque contém alguns elementos importantes (fórmulas, gráficos vetoriais, imagens, listas, etc.). Eu testei as seguintes ferramentas (em parte de este post ):

lowriter (LibreOffice Writer) - saída incorreta (o círculo deve estar na última página, não no primeiro)

unoconv - o mesmo que o LibreOffice, pois não usa seu próprio conversor. Converter para odt primeiro e depois para pdf estraga o arquivo completamente.

abiword --to=pdf filename.doc - incorreto e incompleto (muitos elementos estão ausentes):

OpenOffice Writer - mesmo resultado que para o abiword

wvPDF - falha com a seguinte mensagem de erro:

  

~ $ wvPDF 2007_Office_DocEncryption.docx test.pdf

     

Diretório atual: / home / webmt / dev / test /

     

Algum problema com o látex.

     

Verifique se há erros no test.log

     

Continuando ...

     

Conversão em dvi falhou

Existe alguma maneira de converter arquivos docx para PDF no Linux corretamente? Também me ajudaria se soubesse que funciona para alguém com qualquer um dos programas que já mencionei. Vou começar uma recompensa assim que o SE me permitir.

p.s. Estou usando o servidor Ubuntu 12.04

Conclusão :

Eu tive que concluir que quanto a mim, por enquanto, não há nenhuma ferramenta confiável que funcione com novos formatos do MS Word e todos os tipos de elementos no Ubuntu e crie uma cópia um para um dos arquivos docx. Nenhuma das ferramentas que testei pôde converter o arquivo de amostra corretamente. Como estarei enfrentando tipos muito diferentes de versões / conteúdos de documentos e a qualidade de saída tem uma das mais altas prioridades, acabarei realizando as conversões por meio de macros VB no Word em um servidor Windows conectado ao meu Linux.

Vou definir o post para obter os melhores resultados como a resposta aceita. No entanto, a recompensa foi planejada para uma solução com conversão absolutamente correta. Obrigado a todos, novamente.

    
por Sceptical Jule 28.12.2013 / 15:12

7 respostas

47

Esta resposta passa em todos os testes, mas no fluxograma no seu documento de teste.

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

Por que isso é melhor do que outros métodos sugerem até agora?

Eu testei os outros métodos sugeridos até agora (especialmente oowriter e ebook-convert ), mas eles passam menos testes do que esse método. O método ebook-convert retira as margens e uma parte dos textos do documento.

Este método produz até melhores resultados do que um conversor profissional como rainbowpdf .

Eu também tentei convertê-lo para html, mas o desenho com o quadrado no círculo e o fluxograma estão incorretos.

Por que o teste do fluxograma falha?

Parece que o libreoffice e o unoconv têm alguns problemas com a renderização correta do fluxograma que está no arquivo .docx. Isto é provavelmente porque foi feito usando smart art no Microsoft Office. Esse é o problema. Isso é um bug também discutido em esta discussão . A informação textual e visual está presente no pdf resultante do método acima, como você pode ver (eu tive que selecionar o texto, no entanto).

A cor da fonte, por exemplo, não é lida corretamente e algumas linhas são muito longas. Não tenho conhecimento de nenhuma solução do Linux que seja capaz de exibir a arte inteligente corretamente. :(

Esta é também a razão pela qual todas as soluções de print postadas nesta página não irão satisfazê-lo.

Em suma

Em suma, o que você está fazendo é realmente difícil e não há soluções que satisfaçam você. O calcanhar de Aquiles das conversões docx2pdf é a arte inteligente. Se você pode viver sem isso ou se puder encontrar uma maneira de identificar a arte inteligente e convertê-la de alguma forma em uma imagem, poderá alcançar sua meta.

Opção 1. Forçar seus usuários a lidar com o problema

Esta é uma solução muito deselegante. Seus criadores de conteúdo poderiam salvar suas artes inteligentes como jpg, conforme descrito no páginas de ajuda do escritório e, portanto, a conversão seria possível no seu servidor.

Opção 2. Abra seu caminho em torno do problema

Se os fluxogramas costumam ser muito semelhantes e dependendo de quão bom você é um desenvolvedor, você pode tentar converter a arte inteligente separadamente. Você pode extrair o arquivo drawing1.xml do cluster de documentos .docx e, em seguida, usar o processamento de linguagem natural e alguns hacks malucos para reconstruir uma arte inteligente. Por exemplo, você teria que mexer com esse tipo de 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>

Ou como uma solução mínima, pelo menos extraia o texto ( <a:t> ?) do arquivo e salve-o de uma maneira mais fácil. Ou se os fluxogramas dos seus pdfs forem todos iguais, você pode escrever um script para alterar a cor do texto e o comprimento da linha no próprio xml. Então você poderia executar doc2pdf e você teria um arquivo que essencialmente tem todas as informações corretas, mas talvez não a formatação. No caso dos fluxogramas, você provavelmente também incluiria parte da formatação, porque a formatação é parte da informação.

Opção 3. Use um serviço de terceiros

Eu fiz mais pesquisas nos últimos dias e encontrei um serviço que faz a conversão perfeitamente: zamzar . O Zamzar permite que você faça upload de um arquivo docx e, em seguida, envia um link para você por e-mail. Eles também têm um serviço (pago?) Onde você pode enviar qualquer arquivo para [email protected] e, em seguida, obter o arquivo convertido de volta em sua caixa de entrada. Você poderia facilmente construir um sistema em torno disso, onde você envia automaticamente o arquivo e analisa-o a partir do e-mail. Isso não é muito trabalho e o resultado final é o melhor.

Notas

  • Se alguém tiver outros serviços que façam o mesmo, sinta-se à vontade para editá-los.
  • Eu enviei o suporte do zamzar para perguntar se eles têm uma API. Isso seria ainda mais fácil.
  • Talvez o aplicativo para .NET e Java também possa ajudar ? Ou docx4java como em este post SO muito relacionado .
  • Outra opção é olhar para o odf-converter que parece datado e depende do openoffice em vez de libreoffice.
  • Agora posso confirmar que o java jodconverter também sofre falha no fluxo conversão de gráficos.

Na verdade, aproveitei o tempo para testar os diferentes métodos propostos nesta página. Por favor, envie todos os comentários com testes reais.

    
por don.joey 01.01.2014 / 14:11
4

Eu também tive esse problema no passado, não tive que usá-lo ultimamente, então não sei se ainda está me afetando.

Quanto a responder a pergunta:

Esta pergunta: Como converter em lote .doc ou. docx para .pdf dá um motivo nos comentários porque sua conversão com lowriter pode estar falhando:

  

Cuidado com o uso do caractere "espaço" da linha de comando ... Quando você chegar   o personagem do espaço simplesmente pressione "tab";) - Pitto Nov 16 '12 at 13:11

A resposta desta pergunta também pode ajudar:

Como posso converter um Arquivo ODT para um PDF?

Você executaria libreoffice --headless --convert-to pdf *.odt . Você pode obter mais informações sobre o libreoffice com o comando man libreoffice se precisar de ajuda para entender ou ajustar o comando para trabalhar.

No entanto, você não pode abrir o LibreOffice no momento, de acordo com esse bug: link

Esta questão também é relacionada ao Ubuntu, mesmo que esteja no SuperUser: link

A primeira resposta tem duas opções, uma usando o CUPS e criando uma impressora PDF, a outra usando o LaTex, embora você tenha dito que o LaTex estava falhando.

Quanto à conversão para PDF via PDF do CUPS, você executaria sudo apt-get install cups-pdf seguido por oowriter -pt pdf your_word_file.doc(x) . Isso pode ajudar com seu problema de oowriter.

Este é provavelmente um problema com o fato de que você está tentando converter para PDF a partir de DOC / DOCX, quando a maioria das ferramentas usa ODT, pois elas estão relacionadas ao LibreOffice / OpenOffice / AbiWord. Assim, eles falham ao tentar convertê-lo do formato DOCX da Microsofts ou na conversão para ODT.

Existem vários bugs com uma conversão de .docx w. Word Art (versão incluída):

Isso é do fórum do LibreOffice sobre conversão de .doc e um pouco de .docx: link . É de janeiro de 2013, por isso deve aplicar um pouco.

Além de tudo isso, eu realmente não sei. Espero que você resolva seu problema!

    
por RPi Awesomeness 31.12.2013 / 03:40
4

Esta é uma solução de linha de comando que funciona decentemente - mas usa software proprietário.

Acho que o problema básico é que os formatos do Microsoft Word são totalmente compreensíveis apenas para o Microsoft Word (mesmo havendo diferenças entre as versões --- existem arquivos do Word do passado que são exibidos incorretamente formatado em versões mais recentes). Todas as outras soluções são aproximações e hacks, então elas funcionarão ou não dependendo do arquivo.

Portanto, para ter certeza de que você precisa processar seus arquivos .docx com uma instalação do Microsoft Word (e sim, acho que é a opção deles e é justa. Se você não quiser usar o Word, não o use --- Eu vou com LaTeX para o meu trabalho, mas é difícil convencer o resto do mundo ao redor ...).

Estou usando desde as idades Crossover para executar o Microsoft Office na minha área de trabalho do Linux (1), achando-o bastante útil. Talvez funcione com vinho também - nunca tentei.

Eu faço a conversão usando esta configuração:

1) Eu tenho o Crossover instalado

2) Eu tenho minha versão do Microsoft Office instalado em Crossover

3) No Microsoft Word, desabilite "impressão em segundo plano"

4) Eu tenho a impressora cups-pdf instalada e selecionada como impressora padrão.

5) Para fazer a conversão, execute (dicas aqui ):

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

6) Seu arquivo convertido aparecerá no diretório ~/PDF/ .

O seu documento sai quase perfeitamente (há algum desalinhamento na resposta # 2, que é mostrado no meu Office Word 2007 quando executado em Crossover - não sei se está relacionado à minha versão do Windows).

Agora, o problema é que a interface da palavra gráfica será pop-up --- não sei como torná-la "sem cabeça". Opções de linha de comando para o Word não ajudou ...

(1) Eu não estou de forma alguma relacionado a Codeveawers - apenas um usuário feliz.

    
por Rmano 03.01.2014 / 18:17
2

Se você tiver o Libreoffice instalado, você pode tentar converter usando isso. Apenas pressione Ctrl + Alt + T no seu teclado para abrir o Terminal. Quando se abre, execute o (s) comando (s) abaixo:

libreoffice --headless -convert-to pdf <file_name>.docx -outdir output/path/for/pdf

Outra opção é instalar o Cups PDF .

Para isso, basta pressionar Ctrl + Alt + T no seu teclado para abrir o Terminal. Quando se abre, execute o (s) comando (s) abaixo:

sudo apt-get install cups-pdf

Em seguida, crie uma nova impressora, defina-a como uma impressora de arquivos PDF e nomeie-a como quiser, contanto que você saiba o nome e execute:

oowriter -pt pdf your_word_file.docx

E o seu arquivo PDF estará em ~/PDF .

    
por Mitch 01.01.2014 / 12:49
2

Aqui está a amarga verdade: as soluções do Office para Linux são falhas totais! Sou usuário GNU / Linux em tempo integral há muitos anos e sempre pesquisei e experimentei diferentes soluções de escritório, desde o antigo Open-Office até o posterior Libre-Office, Abi-Word, etc. todos falharam em me ajudar a fazer o meu trabalho de escritório. Ele ainda piora quando se trata de idiomas não latinos (idiomas da direita para a esquerda, como persa, árabe, etc). O usuário tem que lutar com esses softwares para realizar seu trabalho! E a compatibilidade com o Microsoft Office simplesmente não está lá. Eu posso falar horas e horas de quanto eu tentei e todos falharam comigo, mas este não é o ponto desta questão.

Eu também tentei instalar e rodar o Microsoft Office usando o WINE, e de alguma forma bem-sucedida, mas não deu certo e quase caiu quando tentei abrir meus arquivos do escritório.

O LaTeX é bom, mas não é uma solução de escritório. O LaTeX é para definição de tipos, e é mais como uma ferramenta profissional, e não há planilhas nem apresentações.

Então, qual é a solução?

Esta não é uma solução de linha de comando. A única solução que eu criei em todos esses anos, para me manter dentro do meu sistema operacional GNU / Linux e também fazer meus trabalhos de escritório, é usar uma instalação mínima do Microsoft Windows em uma máquina virtual (como o VirtualBox) e instalar um terno do Microsoft Office.

Pode não parecer bonito, mas é a única solução que funciona na perfeição e evita que eu lute com soluções de escritório ruim em meu precioso tempo. No começo, eu mesmo achei que essa não era uma boa solução, mas depois de falhar com todos os outros e fazer essas coisas de VMs por mais de dois anos, estou muito feliz com isso :)

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

NOTE-1: não estou anunciando produtos da Microsoft! Apenas tentando ajudar a resolver o problema e seguir em frente com a vida.

NOTA-2: Conforme enfatizado acima, esta NÃO é uma solução de linha de comando. Então, por que postar a resposta? Porque é uma opção TESTADA e BEM TRABALHADORA! Se nenhuma solução de linha de comando WORKING estiver disponível (o que eu suspeito altamente é o caso), então ter uma opção ALTERNATIVE é melhor que as opções NO.

    
por Seyed Mohammad 01.01.2014 / 10:49
1

Aqui estão alguns aplicativos que você pode testar e ver se funcionam Conversor Multi FF ou você pode tentar o Kingsoft Office .

    
por rstreeter78 03.01.2014 / 03:55
0

Instale o Caliber do Centro de Software ou Synaptic e defina a saída padrão como PDF.

Em um prompt de shell, execute

  

ebook-converter dummyfilename .docx .pdf -h

    
por K7AAY 01.01.2014 / 00:35