i require replace hwpfdocument
paragraph
text of .doc
file if contains particular text using java
. replaces text. process writes output text in strange way. please me rectify issue. code snippet used:
public static hwpfdocument processchange(hwpfdocument doc) { try { range range = doc.getrange(); (int = 0; < range.numparagraphs(); i++) { paragraph paragraph = range.getparagraph(i); if (paragraph.text().contains("place holder")) { string text = paragraph.text(); paragraph.replacetext(text, "*******"); } } } catch (exception ex) { ex.printstacktrace(); } return doc; }
input:
place holder textvalue1 textvalue2 textvalue3
output:
*******textvalue1 textvalue1 textvalue2 textvalue3
the hwpf library not in perfect state changing / writing .doc files. (at least @ last time looked. time ago developed custom variant of hwpf client - among many other things - provides correct replace , save operations, library not publicly available.)
if absolutely must use .doc files , java may away replacing strings of same length. instance "12345"
-> "abc__"
(_
being spaces or whatever works you). might make sense find absolute location of replaced string in doc file (using hwpf) , changing in doc file directly (without using hwpf).
word file format complicated , "doing right" not trivial task. unless willing spend many man months, not possible fix part of library saving works. many data structures must handled precisely , single "slip up" lets word crash on generated output file.