2009-03-14 20 views
7

Tôi đang tìm cách để xác định các tệp DOCX nếu chúng được di chuyển hoặc đổi tên. Lý do là hiển nhiên, tôi đang chơi với Open XML SDK, xây dựng một trình kiểm tra siêu kết nối.Nơi tốt nhất cho ID duy nhất trong DOCX (Open XML WordprocessingDocument)

Hoạt động hoàn hảo, ít nhất nó có thể thêm hoặc cập nhật siêu liên kết trong tài liệu.

Vấn đề là, nếu tôi đổi tên tệp bên ngoài (source.docx + target.docx thành targetB.docx) thì liên kết bị hỏng. Tôi có thể tìm thấy các liên kết bị hỏng (chỉ cần kiểm tra xem tệp được liên kết có ở vị trí đã cho) hay không.

Nhưng tôi muốn nhiều hơn nữa. Tôi muốn có thể khôi phục liên kết bị mất này, bằng cách tìm kiếm tất cả tài liệu trong thư mục (docx) và quét nếu chúng là "mục tiêu". Cách đơn giản nhất phải là GUID được lưu trữ ở đâu đó trong thuộc tính tài liệu, điều này sẽ không thay đổi nếu tài liệu được đổi tên hoặc chỉnh sửa (kiểm tra không áp dụng).

Sau đó, tôi tạo danh sách liên kết riêng biệt và ID theo, và nếu bất kỳ tài liệu nào được đổi tên, tôi chỉ cập nhật liên kết. Tôi hy vọng khái niệm này rõ ràng.

Vì vậy, có một số câu hỏi cơ bản:

  • Có một "thực hành tốt nhất" để lưu trữ này "thông tin tùy chỉnh" trong một tài liệu Open XML
  • Liệu một wordprocessingdocument (DOCX) đã có một số mã định danh duy nhất được tạo theo Word
  • Bạn sẽ lưu bản đồ ở đâu (GUID của mục tiêu siêu liên kết)

Tôi hy vọng câu hỏi là rõ ràng, nếu không nói là tôi cố gắng làm rõ, chỉ góp ý, nếu câu hỏi ..

Cảm ơn, Chris

Trả lời

0

Acrobat/PDF có một cái gì đó tương tự. Tra cứu Bates numbering được sử dụng để xác định tài liệu bằng cách đặt một số không xác định.

Bạn thường nên đặt điều này trong phần siêu dữ liệu, nếu có. Hoặc, thêm một phần tùy chỉnh vào tệp docx giữ bản đồ (tất nhiên, còn lại trong giới hạn của thông số kỹ thuật). (Tôi không quen thuộc với định dạng docx, vì vậy bạn sẽ tìm ra điều này.)

1

Vì đây là năm năm trước, tôi hy vọng bạn tìm thấy câu trả lời. Trong trường hợp bất kỳ ai quan tâm đến điều này, đặt cược tốt nhất là tạo một thuộc tính tùy chỉnh mới trong kho lưu trữ ZIP (\ docProps \ custom.xml) và lưu trữ siêu dữ liệu của bạn trong đó. Cách đơn giản nhất sẽ được để tạo ra một trong giao diện người dùng Word để xem cách họ làm việc, nhưng bạn sẽ kết thúc với một custom.xml bên trong các kho lưu trữ DOCX trông giống như sau:

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

Làm thế nào các công việc được tất cả các tài liệu trong ECMA 376, tiêu chuẩn ghi lại định dạng tệp.

Theo như tôi biết, Word không lưu trữ bất kỳ GUID nào để nhận dạng duy nhất một tệp.

Các vấn đề liên quan