8

DOCX ファイルが移動または名前変更された場合にそれらを識別する方法を探しています。理由は明らかです。私は Open XML SDK をいじり、ハイパーリンク チェッカーを構築しています。

完璧に機能します。少なくとも、ドキュメント内のハイパーリンクを追加または更新できます。

ただし、問題は、外部ファイルの名前を変更すると (source.docx + target.docx から targetB.docx に) リンクが壊れることです。壊れたリンクを見つけることができます (リンクされたファイルが所定の場所にあるかどうかを確認するだけです)。

でももっと欲しい。ディレクトリ(docx)内のすべてのドキュメントを検索し、それらが「ターゲット」であるかどうかをスキャンすることにより、この失われたリンクを回復できるようにしたいと考えています。最も簡単な方法は、ドキュメント プロパティのどこかに GUID を保存することです。この GUID は、ドキュメントの名前が変更されたり編集されたりしても変更されません (チェックサムは適用されません)。

次に、リンクとそれに応じた ID の個別のリストを作成し、ドキュメントの名前が変更された場合は、リンクを更新するだけです。コンセプトが明確であることを願っています。

したがって、いくつかの基本的な質問があります。

  • この「カスタム情報」を Open XML ドキュメントに保存するための「ベスト プラクティス」はありますか
  • ワードプロセッシング ドキュメント (DOCX) には、Word によって作成された一意の識別子が既に含まれていますか?
  • マッピングを保存する場所 (ハイパーリンク ターゲットの GUID)

質問が明確であることを願っています。明確にしようとしない場合は、質問があればコメントしてください..

ありがとう、クリス

4

3 に答える 3

1

これは5年前のことなので、答えを見つけていただければ幸いです。他の誰かがこれに興味を持っている場合は、ZIP アーカイブ (\docProps\custom.xml) に新しいカスタム プロパティを作成し、そこにメタデータを保存することをお勧めします。最も簡単な方法は、Word UI で生成して動作を確認することですが、最終的には DOCX アーカイブ内に次のような custom.xml が作成されます。

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

これらの仕組みはすべて、ファイル形式を文書化する標準であるECMA 376に文書化されています。

私の知る限り、Word はファイルを一意に識別するための GUID を保存していません。

于 2014-01-04T00:01:17.297 に答える
0

Acrobat/PDF にも似たようなものがあります。一意の番号を入力してドキュメントを識別するために使用される通し番号を調べます。

通常、メタデータ セクションがある場合は、これを配置する必要があります。または、マッピングを保持するカスタム パーツを docx ファイルに追加します (もちろん、仕様の範囲内にとどまります)。(私は docx 形式にあまり詳しくないので、これを理解する必要があります。)

于 2009-03-14T06:40:02.613 に答える