docx2txt
funciona nas informações do arquivo docx
, que é um conjunto compactado de arquivos XML.
No que diz respeito à quebra de linha, os dados .docx
XML incluem apenas informações sobre parágrafos e hard-breaks, não sobre pausas soft-breaks. Os soft-breaks são um resultado da renderização do texto em uma fonte específica, tamanho da fonte e largura da página. docx2txt
normalmente apenas tenta ajustar o texto em 80 colunas (80 colunas são configuráveis), sem qualquer consideração por fonte e tamanho de fonte. Se o seu .docx
contiver informações de fonte de um sistema Windows que não está disponível no Unix / Linux, fazer a exportação para .txt
via Open / LibreOffice também resultaria no mesmo layout, embora tente fazer um bom trabalho¹ .
Portanto, docx2txt
ou qualquer outro utilitário de linha de comando, incluindo processamento Open / LibreOffice orientado por linha de comando, não garante a conversão do texto para o mesmo layout da exportação do Word².
Se você quiser (ou for forçado pelos requisitos do cliente) a processar exatamente como o Word, existe em minha experiência apenas uma maneira: deixar o Word fazer a renderização. Quando confrontado com um problema semelhante ao seu³, e tendo resultados incompatíveis usando outras ferramentas, incluindo o OpenOffice, eu reverti para a instalação de uma VM do Windows no servidor Linux host. Na VM cliente, um programa observa os arquivos recebidos a serem convertidos no host, o que iniciaria e direcionaria o Word para fazer a conversão e depois copiaria o resultado⁴.
As decisões sobre o uso somente de CR / LF ou LF, ou UTF-8 ou alguma outra codificação para o .txt
, dependem em grande parte de como os arquivos resultantes são usados. Se os arquivos resultantes forem usados no Windows, eu definitivamente irei com CR / LF, UTF-8 e um BOM UTF-8 . Os programas modernos no Linux são capazes de deduzir que um arquivo é UTF-8, mas não irá invadir a BOM e / ou usar essa informação. Você deve testar todos os seus aplicativos de destino para compatibilidade se eles forem conhecidos na frente.
¹ Este tipo de incompatibilidade é a principal razão pela qual alguns dos meus amigos não podem mudar para o Linux a partir do Windows, embora eles gostariam de fazê-lo. Eles têm que usar o MicroSoft Word, pois o Open / LibreOffice de vez em quando lida com os textos que eles trocam com os clientes.
² Você pode instalar todas as fontes usadas nos arquivos do Word e pode ter sorte para alguns textos, algumas vezes.
³ Renderizando PDFs de .doc/.docx
⁴ O programa usa a automação da GUI - como se alguém estivesse clicando em seus menus - e não tenta conduzir o Word por meio de uma API. Tenho certeza que o último pode ser feito também e teria a vantagem de não quebrar coisas se o Word fosse atualizado