33 votos

Cómo comprimir un WordprocessingML carpeta en la legibles docx

He estado tratando de escribir una simple Markdown -> docx analizador/escritor, pero estoy completamente atascado con la última parte, que debe ser el más fácil: es decir, la compresión de la carpeta en un .docx de Word, o cualquier otro .docx lector, va a reconocer.

Mi parser-escritor es realmente irrelevante: tengo este problema si yo simplemente descomprimir cualquier Palabra-producido *.docx y, a continuación, intente volver a comprimir con el habitual utilidades de compresión, dándole el archivo de final de docx. Hay algo de misterioso encabezado que debo añadir, o necesito un especial OPC utilidad de compresión, o qué?

Yo no desean tanto una herramienta que va a hacer esto, como para averiguar lo que se supone que hay. Parece ser independiente de la WordprocessingML especificación.

Huelga decir que yo no sé nada acerca de la compresión. Todo lo que puede encontrar a través de Google tiene que ver con la fantasía de las utilidades puede utilizar en los negocios, pero estoy haciendo un pequeño ejecutable que sería GPLd o algo, y debería funcionar en cualquier cosa.

46voto

Eric White Puntos 1128

El problema más común alrededor manualmente la calma junto Abrir documentos XML es que no va a funcionar si usted zip en el directorio en lugar de los contenidos. En otras palabras, el[content_types].archivo xml, y la palabra, docProps, y _rels directorios deben residir en el nivel raíz del archivo zip.

15voto

Sam Barnum Puntos 5019

Aquí están los pasos para descomprimir my.docx y re-zip:

% mkdir unzipped
% cd unzipped/
% unzip ../my.docx    
% zip -r ../rezipped.docx *
% open ../rezipped.docx 

3voto

Charles Stewart Puntos 7698

Además de lo Mica dijo, el contenido del archivo ZIP están organizados de acuerdo a la Convención de Empaquetado Abierto; cf. Microsoft Essentials de la Convención de Empaquetado Abierto.

Usted puede utilizar el .Sistema de RED.IO.Los envases y manipular .los archivos docx; esta clase se implementa en el proyecto Mono.

1voto

Mica Puntos 7392

El algoritmo de compresión utilizado es "Zip" (Base 64) de compresión.

7zip parece ofrecer esto, aunque no tengo ni probado.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X