私はdocx4jを使用してMS Word文書を作成していますが、MS Wordではすべてのテキストがスペルチェッカーで表示されていますが、テキストは英語として帰属しますが、別の言語です。 docx4jまたはApache POIを使用してスペルチェックを無効にする方法はありますか?JavaでWord文書のスペルチェックを無効にする方法はありますか?
答えて
情報開示:私はあなたがXHTMLImporterを使用すると、あなたは、適切な言語設定とdocxファイルにインポートする必要があります
docx4j維持します。典型的には、これは、スタイルの一部で行われる
、W:スタイル/ W:docDefaults/W:rPrDefault/W:RPR:
<w:styles xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:docDefaults>
<w:rPrDefault>
<w:rPr>
<w:lang w:val="en-US" w:eastAsia="ko-KR" w:bidi="ar-SA"/>
</w:rPr>
</w:rPrDefault>
</w:docDefaults>
この値は、スタイルのオーバーライドされない限り有効であること、又はう他の答えのいくつかを議論する直接フォーマットで。 themeFontLang:
<w:settings xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" >
<w:themeFontLang w:val="en-US" w:eastAsia="ko-KR"/>
あなたがあたり言語テンプレートを維持するか、またはあなたが動的にこれらの設定を変更するdocx4j使用することができます
また、/word/settings.xmlで、ワットをご確認ください。あなたがそれをして何か問題がある場合は、別の質問を投稿してください。、スペル/文法の誤りを隠蔽MainDocumentPartのMDPを仮定について
:
DocumentSettingsPart dsp = mdp.getDocumentSettingsPart();
dsp.getContents().setHideGrammaticalErrors(new BooleanDefaultTrue());
dsp.getContents().setHideSpellingErrors(new BooleanDefaultTrue());
私が知る限り、POIはそのユーザーの好みに到達できません。しかし、あなたはそれを自分で変更し、その文書を将来のすべての文書のテンプレートとして使用することができます。
POIは確かにそれに到達することができます、私の答えを参照してください。 – jmarkmurphy
ありがとうございました!それは私のニーズにはあまりにも非効率的ですが、<1000,000ページ<20万回のレポートを作成しています(カスタマイズされた表セル段落の実行のため) –
ドキュメント全体に対して校正をオフにすることはできません。代わりに、文書内のすべての実行ごとにオフにする必要があります。 Apache POIで行うことができますが、このプロパティはまだ浮上していないため、CTクラスを使用する必要があります。ここでは、1回の実行でそれについて調べる方法の1つですr
。
public static void setNoProof (XWPFRun run) {
CTR ctR = run.getCTR();
CTRPr ctRPr = ctR.isSetRPr() ? ctR.getRPr() : ctR.addNewRPr();
if (!ctRPr.isSetNoProof()) {
// If the noProof property is missing, add it
ctRPr.addNewNoProof();
} else {
// If the noProof property is present, make sure it is not
// FALSE, OFF, or X_0
CTOnOff noProof = ctRPr.getNoProof();
if (noProof.isSetVal() &&
(noProof.getVal() == STOnOff.FALSE ||
noProof.getVal() == STOnOff.OFF ||
noProof.getVal() == STOnOff.X_0)) {
noProof.setVal(STOnOff.TRUE);
}
}
}
実行をループして、実行ごとにこのメソッドを呼び出します。
「この文書でのみスペルミスを隠す」と「この文書では文法エラーを隠す」の可能性があります。 How to Temporarily Disable Spell Check in Wordを参照してください。 XWPF(*.docx
)を使用して
このためXMLは/word/settings.xml
に含まれているとされるようになります:私たちはOPCPackage
、PackagePart
とorg.openxmlformats.schemas.wordprocessingml.x2006.main.*
オブジェクトを使用して、全体XWPFWorkbook
を作成せずにこれを設定することができます
<w:settings ...>
...
<w:hideSpellingErrors/>
<w:hideGrammaticalErrors/>
...
</w:settings >
。
例:このコードの後
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.openxml4j.opc.PackagePart;
import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.regex.Pattern;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.SettingsDocument;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSettings;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STOnOff;
import org.openxmlformats.schemas.officeDocument.x2006.relationships.STRelationshipId;
import org.apache.xmlbeans.XmlOptions;
import javax.xml.namespace.QName;
import java.util.Map;
import java.util.HashMap;
public class XWPFDisableSpellCheck {
public static void main(String[] args) throws Exception {
File file = new File("XWPFDisableSpellCheck.docx");
OPCPackage opcPackage = OPCPackage.open(file);
PackagePart settingsPart = opcPackage.getPartsByName(Pattern.compile("/word/settings.xml")).get(0);
SettingsDocument settingsDocument = SettingsDocument.Factory.parse(settingsPart.getInputStream());
CTSettings settings = settingsDocument.getSettings();
if (settings.getHideSpellingErrors() == null) settings.addNewHideSpellingErrors();
if (settings.getHideGrammaticalErrors() == null) settings.addNewHideGrammaticalErrors();
//settings.getHideSpellingErrors().setVal(STOnOff.ON);
//settings.getHideGrammaticalErrors().setVal(STOnOff.ON);
//create XmlOptions for saving the settings
XmlOptions xmlOptions = new XmlOptions();
xmlOptions.setSaveOuter();
xmlOptions.setUseDefaultNamespace();
xmlOptions.setSaveAggressiveNamespaces();
xmlOptions.setCharacterEncoding("UTF-8");
xmlOptions.setSaveSyntheticDocumentElement(new QName(CTSettings.type.getName().getNamespaceURI(), "settings"));
Map<String, String> map = new HashMap<String, String>();
map.put(STRelationshipId.type.getName().getNamespaceURI(), "w");
map.put(STRelationshipId.type.getName().getNamespaceURI(), "m");
map.put(STRelationshipId.type.getName().getNamespaceURI(), "o");
xmlOptions.setSaveSuggestedPrefixes(map);
//save the settings
OutputStream out = settingsPart.getOutputStream();
settings.save(out, xmlOptions);
out.close();
opcPackage.close();
}
}
オプションは、「これだけ文書でスペルミスを隠す」と「この文書の非表示文法エラーのみ」文書XWPFDisableSpellCheck.docx
に設定されています。
- 1. PyQt - スペルチェックを有効または無効にする方法
- 2. Word文書用の無料の.NETライブラリはありますか?
- 3. Java EE 1.4 JSPでコメントを無効にする方法はありますか?
- 4. Word文書を有効にする方法は?
- 5. すべてのマイプロジェクトのスペルチェックを無効にする方法
- 6. CSSでスペルチェックを無効にする
- 7. textViewで "スペルチェック"を無効にする
- 8. 2つのMicrosoft Word文書を比較するJava APIがありますか?
- 9. k8sリスケジューラを無効にする方法はありますか?
- 10. after_findを無効にする方法はありますか?
- 11. Doctrine2エンティティを「無効にする」方法はありますか?
- 12. アンドロイドマーケットを無効にする方法はありますか?
- 13. 。Word文書への追加:無効なプロパティの割り当て
- 14. jHTMLArea:無効にするブラウザのスペルチェック
- 15. WindowsでJava Runtime Engineをプログラムで有効/無効にする方法はありますか?
- 16. アトムでスペルチェックを高速に実行する方法はありますか?
- 17. カスタムキーボード辞書(スペルチェック)はどこにありますか?
- 18. Javaのバックスペースキーを無視する方法はありますか?
- 19. Pythonを使用してWord文書のズームレベルをプログラムで設定する方法はありますか?
- 20. Revitで文書をクローンする方法はありますか
- 21. アサーションを有効/無効にする方法はありますか?
- 22. Excel文書をWord文書にリンクする方法
- 23. Javaで安全でないコード(セキュリティマネージャを無効にする)を実行する方法はありますか?
- 24. SSRS 2005のPDF出力をWord文書に変換する方法はありますか?
- 25. Word(Microsoft Office)でプログラマブルにスペルチェックと文章校正を切り替えます
- 26. SwiftでUIButtonのマルチクリックを無効にする方法はありますか?
- 27. CocoaPodsでデフォルトのpchファイルを無効にする方法はありますか?
- 28. 特定のスプリングプロファイルでフライウェイを無効にする方法はありますか?
- 29. プログラミングでTebleViewのクリックを無効にする方法はありますか?
- 30. IIS7でアプリケーションプールのアイドルタイムアウトを無効にする方法はありますか?
私はスペルチェックをかなり確信しているが、ユーザーの好みで、文書自体とは何の関係もありません。そういうわけで、答えは難しいと思います。 – rmlan
ええと、それ以外の方法で簡単に:-)ドキュメント全体に適切な言語を定義できますか? –
適切な言語設定を有効にしてWordで作成したdocxファイルを解凍し、そのプロパティを見つけることができるかもしれません – JonK