@ouchli 为此,您可以使用 LayoutCollector:
Document doc = new Document("Big document.docx");
FindReplaceOptions opt = new FindReplaceOptions();
opt.setReplacingCallback(new ProcessFirstMatchOnlyCallback());
opt.setDirection(FindReplaceDirection.BACKWARD);
doc.getRange().replace("&m", "", opt);
doc.save("out.docx");
private class ProcessFirstMatchOnlyCallback implements IReplacingCallback {
@Override
public int replacing(ReplacingArgs args) throws Exception {
LayoutCollector layout = new LayoutCollector((Document) args.getMatchNode().getDocument());
int pageNumber = layout.getStartPageIndex(args.getMatchNode());
if (pageNumber == 1) {
return ReplaceAction.REPLACE;
} else {
return ReplaceAction.SKIP;
}
}
}
ouchli
23
您好,我用如下代码设置文档表格的字体颜色,但是只有部分设置成功,请问是什么原因呢?
代码如下:
Document document = new Document("D:\\Users\\Desktop\\版本号333.docx");
NodeCollection<Table> childNodes = document.getChildNodes(NodeType.TABLE, true);
for (Table childNode : childNodes) {
NodeCollection<Run> childNodes1 = childNode.getChildNodes(NodeType.RUN, true);
for (Run run : childNodes1) {
run.getFont().setColor(Color.BLUE);
}
}
document.save("D:\\Users\\Desktop\\tttttttttt456123哈哈哈.docx");
原始文档为:
版本号333.docx (24.5 KB)
修订后的文档为:
tttttttttt456123哈哈哈.docx (31.1 KB)
@ouchli 有些运行有主题的填充格式,因此也需要更改填充颜色:
run.getFont().setColor(Color.BLUE);
run.getFont().getFill().setColor(Color.BLUE);
ouchli
26
另外,请看一下,这个还是没有设置成功
文档如下:
testtest.docx (56.0 KB)
ouchli
27
我如果想要将文档的第一页转为markdown,而不是转换整个文档,有办法做到吗
转换时要求忽略文本框和图片,又该如何实现呢
@ouchli 您使用的是哪个版本的 Aspose.Words?
@ouchli 遗憾的是,在这方面没有指定的选项。唯一的办法是使用 extractPages 获取第一页,然后删除文本框和图像。
@ouchli 我用 24.4 版本检查了代码,没有异常。
ouchli
33
你好,请问我现在要设置一个段落的制表符,使用以下代码设置出来的位置却超出了页面的大小,请问这是什么原因,如何解决呢
PageSetup pageSetup = document.getSections().get(DocConstants.NUM_0).getPageSetup();
double position = pageSetup.getPageWidth() - pageSetup.getLeftMargin() - pageSetup.getRightMargin();
tabStops.add(position, TabAlignment.RIGHT, TabLeader.NONE);
@ouchli Unfortunately, I cannot reproduce the problem on my side. Here is a simple code I have used for testing:
Document doc = new Document();
doc.getFirstSection().getBody().getFirstParagraph().appendChild(new Run(doc, "testtest\ttesttest"));
TabStopCollection tabStops = doc.getFirstSection().getBody().getFirstParagraph().getParagraphFormat().getTabStops();
PageSetup pageSetup = doc.getFirstSection().getPageSetup();
double position = pageSetup.getPageWidth() - pageSetup.getLeftMargin() - pageSetup.getRightMargin();
tabStops.add(position, TabAlignment.RIGHT, TabLeader.NONE);
doc.save("C:\\Temp\\out.docx");
out.docx (7.2 KB)
ouchli
35
谢谢,按照你的代码做了改动,执行没问题了
另外,在问一个问题,如果我要将一个段落的内容设置为空字符串,该用哪个方法
@ouchli 您可以简单地删除所有段落的子节点:
para.removeAllChildren();
ouchli
37
你好,如图所示,请问如何设置段落的该属性呢
我在代码中设置paragraphformat. setWordWrap(true),没有起作用
@ouchli 您应将此属性设置为 false,否则拉丁文本将被整词包裹。