您好 我使用如下的代码进行文档的合并 关于字体的尝试我试了很多但是并不生效
public static Document addDocument(String key,Document mainDoc,Document addDoc,Boolean isPortrait) {
try{
FontSettings fontSettings = new FontSettings();
fontSettings.setFontsFolder("/usr/share/fonts",true);
mainDoc.setFontSettings(fontSettings);
addDoc.setFontSettings(fontSettings);
DocumentBuilder Builder = new DocumentBuilder(mainDoc);
DocumentBuilder addBuilder = new DocumentBuilder(mainDoc);
Range range = mainDoc.getRange();
NodeCollection runs = mainDoc.getChildNodes(NodeType.PARAGRAPH, true); //获取所有节点
addBuilder.getFont().setName("仿宋");
addDoc.save(addDoc.getOriginalFileName());
int dell = 0 ;
for (int i = 0; i < runs.getCount(); i++) {
Paragraph r = (Paragraph) runs.get(i);
String text = r.getRange().getText();//获取段落文本
if(text.length()>=key.length() && text.indexOf(key)>=0) {
//指定段落插入表格
Builder.getPageSetup().setPaperSize(PaperSize.A4);
Section currentSection = Builder.getCurrentSection();
if (isPortrait){
currentSection.getPageSetup().setOrientation(Orientation.PORTRAIT);
}
else {
currentSection.getPageSetup().setOrientation(Orientation.LANDSCAPE);
}
Builder.moveTo(r);
Node insertAfterNode = Builder.getCurrentParagraph().getPreviousSibling();
insertDocumentAfterNode(insertAfterNode, mainDoc , addDoc);
r.remove();//删除标记所在行
break;
}
}
return mainDoc;
}catch (Exception e) {
e.printStackTrace();
return null;
}
}
private static void insertDocumentAfterNode(Node insertAfterNode, Document mainDoc, Document srcDoc) throws Exception {
if (insertAfterNode.getNodeType() != 8 && insertAfterNode.getNodeType() != 5) {
throw new Exception("The destination node should be either a paragraph or table.");
}else {
CompositeNode dstStory = insertAfterNode.getParentNode();
Body body = srcDoc.getLastSection().getBody();
while (null != body.getLastParagraph() && !body.getLastParagraph().hasChildNodes()){
srcDoc.getLastSection().getBody().getLastParagraph().remove();
}
body.getFirstParagraph().getParagraphFormat().setSpaceBefore(0);
body.getLastParagraph().getParagraphFormat().setSpaceAfter(0);
NodeImporter importer = new NodeImporter(srcDoc, mainDoc, ImportFormatMode.KEEP_DIFFERENT_STYLES);
int sectCount = srcDoc.getSections().getCount();
for (int sectIndex = 0; sectIndex < sectCount; ++sectIndex){
Section srcSection = srcDoc.getSections().get(sectIndex);
int nodeCount = srcSection.getBody().getChildNodes().getCount();
for (int nodeIndex = 0; nodeIndex < nodeCount; ++nodeIndex){
Node srcNode = srcSection.getBody().getChildNodes().get(nodeIndex);
Node newNode = importer.importNode(srcNode, true);
dstStory.insertAfter(newNode, insertAfterNode);
insertAfterNode = newNode;
}
}
}
}
需要合并的两个文本如下
adddoc.docx (5.6 KB)
maindoc.docx (29.5 KB)
addDocument 的参数key 是maindoc中的“+brief_overview” 我想让adddoc中的文档保持maindoc中的文档中的字体格式 也就是宋体,但这总是不生效。希望能够得到解答