2011-02-11 16 views
6

Microsoft Word .docx dosyalarını işlemek için Apache POI kullanıyorum - örneğin, Microsoft Word'de orijinal olarak oluşturulmuş bir belgeyi açın, değiştirin, yeni bir belgeye kaydedin.Apache POI kullanarak Word .docx dosyalarında RSID öznitelikleri doğru şekilde nasıl oluşturulur?

Sık sık bir RSID veya rsidR olarak bilinen, Apache POI tarafından oluşturulan yeni paragraflar bir Revizyon kaydet kimliği eksik olduğunu fark. Bu, Word tarafından, bir oturumda bir oturumda yapılan değişiklikleri kaydetmek için kullanılır. Bu isteğe bağlıdır - kullanıcılar isterlerse Microsoft Word'de kapatabilirler - ancak gerçekte hemen hemen herkesin sahip olduğu neredeyse her belge RSID'lerin doludur. Bunun hakkında daha fazla bilgi için this excellent explanation of RSIDs'u okuyun. Bir Microsoft Word belgesinde

, word/document.xml böyle paragraflar içerir:

<w:p> 
    <w:r> 
    <w:t>Paragraph of text here.</w:t> 
    </w:r> 
</w:p> 

Bunu anladım: POI tarafından oluşturulan aynı paragraf word/document.xml bu gibi görünecektir Ancak

<w:p w:rsidR="007809A1" w:rsidRDefault="007809A1" w:rsidP="00191825"> 
    <w:r> 
    <w:t>Paragraph of text here.</w:t> 
    </w:r> 
</w:p> 

Aşağıdaki gibi bir kod kullanarak her paragrafa bir RSID eklemek için İÇN'yi zorlayabilirim:

Ancak, RSID'leri nasıl oluşturmalıyım bilmiyorum.

POI'nin bir yolu var mı, yoksa RSID'leri oluşturup saklamıyor mu? Değilse, ürettiğim bir RSID'nin belgede bulunan biriyle çakışmadığından emin olmak için herhangi bir yol var mı?

+0

Yayından le size atıfta bulundu: "Onlar tamamen rastgele ve sadece şeylerin nerede eşleştiğini görmek için kullanılır. Dolayısıyla, RSID'leri olan başka bir belgeyle birleşmedikçe çok fazla kullanılmazlar. "Böylece, uygun rastgele sayıları oluşturabilirsiniz. Çatışmalara göre, bunların bir listesi özellik bölümlerinden birinde saklanır. Bunları eklemek sadece? Bazı karşılaştırmalı/farklı durumları iyileştirir. – JasonPlutext

cevap

4

Geçerli rsid girişlerinin listesi, <w:rsids> girişinde word/settings.xml dosyasında tutulur. XWPF, size zaten erişebilmeli.

Büyük olasılıkla 8 hex rakam uzunluğunda rasgele bir sayı oluşturmak isteyip istemiyorsanız, orada olup olmadığını kontrol edin ve varsa yeniden oluşturun. Benzersiz birine sahip olduğunuzda, bu listeye ekleyin, ardından paragraflarınızı bununla etiketleyin.

Öneririm, poi dev list (mailing list details)'a katılmanızdır ve size bunun için bir yama üzerinde çalışmaya yardımcı olabiliriz. kelime/settings.xml içinde RSIDs girişi etrafında

  • Sarıcı, kolayca farklı RSID etrafında
  • bir sarıcı yeni (benzersiz bir) listesini alıp oluşturmak izin: Yapacak şeyler olduğunu düşünüyorum bir paragraf ve koşmak
  • paragraflar üzerinde Yöntem ve RSID sarmalayıcı almak için çalışır ilgili kayıtlar, yenisini ekleyebilir veya gerçi dev listesine bu almalıdır mevcut olanın

temizlemek :)

+0

Cevabınız için teşekkürler, bu mantıklı bir çözüm gibi gözüküyor ve işlevselliğe ihtiyaç duyduğumdan, onu da yapılandırabilirim! Bu yüzden bunu POI dev listesine yapacağım. . – gutch