2009-03-14 12 views
7

Je cherche un moyen d'identifier les fichiers DOCX s'ils sont déplacés ou renommés. Raison est évidente, je joue avec le SDK Open XML, la construction d'un vérificateur d'hyperliens.Meilleur endroit pour un ID unique dans DOCX (Open XML WordprocessingDocument)

Fonctionne parfaitement, au moins il peut ajouter ou mettre à jour des liens hypertexte dans un document.

Le problème est, cependant, si je renomme un fichier externe (source.docx + target.docx en targetB.docx), le lien est rompu. Je peux trouver des liens brisés (en vérifiant simplement si le fichier lié est à sa place).

Mais je veux plus. Je veux être en mesure de récupérer ces liens perdus, en recherchant tous les documents dans un répertoire (docx) et en scannant s'ils sont la "cible". La manière la plus simple devrait être un GUID stocké quelque part dans les propriétés du document, qui ne changera pas si le document est renommé ou édité (la somme de contrôle n'est pas applicable).

Ensuite, je crée une liste séparée de liens et d'ID, et si un document est renommé, je mets juste à jour le lien. J'espère que le concept est clair.

Donc, il y a quelques questions fondamentales:

  • est-il une "meilleure pratique" pour stocker cette "information personnalisée" dans un document XML Ouvrir
  • Est-ce qu'un WordprocessingDocument (DOCX) déjà ont un certain identifiant unique créé par Word
  • Où voulez-vous enregistrer le mappage (GUID de cible de lien hypertexte)

J'espère que la question est claire, sinon je tente de clarifier, tout commentaire si des questions ..

Merci, Chris

Répondre

0

Acrobat/PDF a quelque chose de similaire. Rechercher Bates numbering qui est utilisé pour identifier les documents en mettant un nombre unqiue.

Vous devriez généralement placer ceci dans la section des métadonnées, le cas échéant. Ou, ajoutez une partie personnalisée au fichier docx qui conserve le mappage (bien sûr, en restant dans les limites de la spécification). (Je ne suis pas très familier avec le format docx, donc vous l'aurez compris.)

1

Comme c'était il y a cinq ans, j'espère que vous avez trouvé une réponse. Dans le cas où quelqu'un d'autre serait intéressé, le mieux serait de créer une nouvelle propriété personnalisée dans l'archive ZIP (\ docProps \ custom.xml) et de stocker vos métadonnées dans celle-ci. meilleure façon sera de générer dans l'interface utilisateur Word pour voir comment ils fonctionnent, mais vous finirez avec un custom.xml dans l'archive DOCX qui ressemble à:

<?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> 

Comment ces travaux est tout documenté dans ECMA 376, la norme documentant le format de fichier. Pour autant que je sache, Word ne stocke aucun GUID pour identifier de façon unique un fichier.