我正在尝试创建一个Java“脚本”,以便给定模板和目标文档:
总结一下,这是我到现在为止所提出的,也基于API reference for the StyleCollection
class:
Document target = new Document(targetPath);
StyleCollection targetStyles = target.getStyles();
for (Style style : source.getStyles()) {
switch (style.getType()) {
case StyleType.PARAGRAPH:
case StyleType.TABLE:
case StyleType.LIST:
if (!style.getName().trim().toLowerCase().endsWith("carattere")) {
String name = style.getName();
Style copied = styles.addCopy(style);
switch (style.getType()) {
case StyleType.PARAGRAPH:
copied.setNextParagraphStyleName(style.getNextParagraphStyleName());
// fallthrough
case StyleType.CHARACTER:
case StyleType.TABLE:
copied.setBaseStyleName(style.getBaseStyleName());
break;
default:
break;
}
copied.setName(name);
}
break;
default:
break;
}
}
target.save(savePath);
截至目前,我发现的问题如下:
如何获得文档中所有样式的干净副本?
答案 0 :(得分:1)
如果我尝试使用标准MS Word样式(“Normal”,“Title 1”,...), 当它们被复制时,即使使用setName(),它们也会被复制 “特技”
请使用以下示例代码段,它将帮助您获得没有样式重复的输出。
Document source = new Document(MyDir + "template.doc");
Document target = new Document(MyDir + "target.doc");
StyleCollection sourceStyles = source.getStyles();
StyleCollection targetStyles = target.getStyles();
System.out.println("SORGENTE = " + sourceStyles.getCount() + " stili");
System.out.println("DESTINAZIONE = " + targetStyles.getCount() + " stili");
for (Style style : sourceStyles) {
String name = style.getName();
if (name.endsWith("Carattere")) continue;
if (style.getType() == StyleType.PARAGRAPH
|| style.getType() == StyleType.TABLE)
{
Style copied = targetStyles.addCopy(style);
copied.setBaseStyleName(style.getBaseStyleName());
if (style.getType() == StyleType.PARAGRAPH) {
copied.setNextParagraphStyleName(style.getNextParagraphStyleName());
}
copied.setName(name);
System.out.println("COPIA STILE " + name + " -> " + copied.getName());
}
}
target.cleanup();
target.save(MyDir + "output.docx");
如果我使用自定义样式,我的表样式有问题,在 文本颜色改变
请注意Aspose.Words模仿MS Word行为。如果你import the styles from your template to target document using MS Word,它将显示与Aspose.Words相同的结果。
我与Aspose一起担任开发人员Evangelist。