2009-03-14 13 views
7

Estoy buscando una manera de identificar los archivos DOCX si se mueven o cambian de nombre. La razón es obvia, estoy jugando con Open XML SDK, construyendo un corrector de hipervínculos.El mejor lugar para la identificación única en DOCX (Open XML WordprocessingDocument)

Funciona perfecto, al menos puede agregar o actualizar hipervínculos en un documento.

El problema es, sin embargo, si cambio el nombre de un archivo externo (source.docx + target.docx a targetB.docx) el enlace está roto. Puedo encontrar enlaces rotos (simplemente marcando si el archivo vinculado está en su lugar).

Pero quiero más. Quiero poder recuperar estos enlaces perdidos, buscando todos los documentos en un directorio (docx) y escaneando si son el "objetivo". La forma más simple debe ser un GUID almacenado en alguna parte de las propiedades del documento, que no cambiará si el documento cambia de nombre o se edita (la suma de comprobación no es aplicable).

Luego creo una lista separada de enlaces y de acuerdo con los ID, y si se cambia el nombre de cualquier documento, simplemente actualizo el enlace. Espero que el concepto sea claro.

por lo que hay algunas preguntas básicas:

  • ¿Hay una "mejor práctica" para almacenar esta "información personalizada" en un documento abierto XML
  • funciona un wordprocessingdocument (DOCX) ya han creado algún identificador único por la Palabra
  • ¿Dónde guardar la asignación (GUID de destino de hipervínculo)

espero que la pregunta es clara, si no trato de aclarar, solo comentario si preguntas ..

Gracias, Chris

Respuesta

0

Acrobat/PDF tiene algo similar. Busque Bates numbering que se utiliza para identificar documentos mediante la colocación de un número único.

Normalmente debe colocar esto en la sección de metadatos, si corresponde. O bien, agregue una parte personalizada al archivo docx que mantiene la asignación (por supuesto, permaneciendo dentro de los límites de la especificación). (No estoy muy familiarizado con el formato docx, así que tendrás que resolverlo.)

1

Como esto fue hace cinco años, espero que encuentres una respuesta. En caso de que alguien más esté interesado en esto, la mejor opción sería crear una nueva propiedad personalizada en el archivo ZIP (\ docProps \ custom.xml) y almacenar sus metadatos. La manera más fácil será generar una en la Palabra de interfaz de usuario para ver cómo funcionan, pero usted va a terminar con un custom.xml dentro del archivo DOCX que se ve algo como:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/custom-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"> 
    <property fmtid="{D5CDD505-2E9C-101B-9397-08002B2CF9AE}" pid="2" name="test"> 
    <vt:lpwstr>chris</vt:lpwstr> 
    </property> 
</Properties> 

cómo estos trabajos se documentó todo en ECMA 376, el estándar que documenta el formato de archivo.

Hasta donde yo sé, Word no almacena ningún GUID para identificar un archivo de forma exclusiva.

Cuestiones relacionadas