0
A
回答
1
在Word Office OpenXML中,自動連字設置是爲整個文檔設置的,並且可以針對單個段落進行抑制。整個文檔的設置位於軟件包的/word/settings.xml
部分。這是XWPFSettings,但直到現在才能使用apache poi
的高級對象獲取此信息。所以我們需要使用低級對象和反射來獲得這個,並有權訪問CTSettings.addNewAutoHyphenation。
單個段落自動連字符的可能抑制在CTPPrBase.addNewSuppressAutoHyphens中完成,也不能使用高級別apache poi
獲得。
例子:
import java.io.FileOutputStream;
import org.apache.poi.xwpf.usermodel.*;
import org.apache.poi.POIXMLDocumentPart;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSettings;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STSectionMark;
import java.lang.reflect.Field;
import java.math.BigInteger;
public class CreateWordAutoHyphenation {
public static void main(String[] args) throws Exception {
XWPFDocument document = new XWPFDocument();
POIXMLDocumentPart part = null;
for (int i = 0; i < document.getRelations().size(); i++) {
part = document.getRelations().get(i);
if (part instanceof XWPFSettings) break;
}
if (part instanceof XWPFSettings) {
XWPFSettings settings = (XWPFSettings)part;
Field _ctSettings = XWPFSettings.class.getDeclaredField("ctSettings");
_ctSettings.setAccessible(true);
CTSettings ctSettings = (CTSettings)_ctSettings.get(settings);
ctSettings.addNewAutoHyphenation();
}
String testtext = "This text tests whether automatic hyphenation opportunities are set on for this document and not are suppressed for this paragraph. Since in Word Office OpenXML the automatic hyphenation settings are set for the whole document and may be suppressed for single paragraphs.";
XWPFParagraph paragraph = document.createParagraph();
paragraph.setAlignment(ParagraphAlignment.BOTH);
XWPFRun run = paragraph.createRun();
run.setFontSize(18);
run.getCTR().getRPr().addNewLang().setVal("en-US");
run.setText(testtext);
paragraph = document.createParagraph();
run=paragraph.createRun();
run.addBreak(BreakType.COLUMN);
paragraph.setAlignment(ParagraphAlignment.BOTH);
paragraph.getCTP().addNewPPr().addNewSuppressAutoHyphens();
run = paragraph.createRun();
run.setFontSize(18);
run.getCTR().getRPr().addNewLang().setVal("en-US");
run.setText(testtext);
document.getDocument().getBody().addNewSectPr().addNewType().setVal(STSectionMark.CONTINUOUS);
document.getDocument().getBody().getSectPr().addNewCols().setNum(BigInteger.valueOf(2));
document.write(new FileOutputStream("CreateWordAutoHyphenation.docx"));
document.close();
}
}
相關問題
- 1. Apache poi XWPF段落行間距
- 2. 是否AEM 6.0支持intergrated Windows授權
- 3. Satchmo的Authorize.net支付模塊是否支持MasterCard部分授權?
- 4. Android支持Apache POI API
- 5. Apache POI是否支持ISO/IEC 29500的「嚴格」變體?
- 6. Oozie Java Action Error java.lang.NoClassDefFoundError:org/apache/poi/xwpf/usermodel/XWPFDocument
- 7. SKTextureAtlas的SKTexture是否支持mipmap功能?
- 8. Apache POI:替換段落文本
- 9. 谷歌應用程序引擎是否支持apache poi?
- 10. 如何在apache poi word文檔中改變文本方向(不是段落對齊方式)?(XWPF)
- 11. Mule是否支持OAuth2的密碼授權類型
- 12. 功能段落
- 13. Apache CXF是否支持HashMap?
- 14. Apache Shiro是否支持bCrypt?
- 15. J2ME是否支持Apache Lucene?
- 16. Apache webserver中的自定義授權支持
- 17. 是否有支持NPER功能的NPER或財務功能庫?
- 18. KML是否支持搜索功能
- 19. SystemVerilog是否支持全局功能?
- 20. 這些功能是否支持?
- 21. FullCalendar是否支持ViewMore功能?
- 22. PhoneGap是否支持Symbian本機功能?
- 23. 是否正式支持execution_guard_enabled功能?
- 24. 在Apache POI中,是否有方法通過id來訪問XWPF元素?
- 25. Apache POI字支持有多好?
- 26. Apache中的XMLConfiguration是否支持CDATA?
- 27. 的Web.config授權落空
- 28. apache POI XWPF文件中的圖像顏色失真
- 29. 無法使用apache poi更改ms-word文件(XWPF)的方向
- 30. 獲取使用Apache POI在Java字的縮略圖,XWPF
它完美!謝謝你,你救了我幾個小時!順便說一句CTSettings包含很多其他可用的東西,會深入研究它。 – amseager