如何使用 Aspose Words for Android 获取内联词的超链接边界?
How to get hyperlink boundaries of inline words with Aspose Words for Androd?
android 应用程序使用 Aspose Words for Android 库阅读 Ms Word 文档中的段落和一些属性。它获取段落文本、样式名称并且是单独的值。段落行中有些词有超链接。如何获取单词超链接的开始和结束边界?例如:
This is an inline hyperlink paragraph example that the start bound is 18 and end bound is 27.
public static ArrayList<String[]> GetBookLinesByTag(String file) {
ArrayList<String[]> bookLines = new ArrayList<>();
try {
Document doc = new Document(file);
ParagraphCollection paras = doc.getFirstSection().getBody().getParagraphs();
for(int i = 0; i < paras.getCount(); i++){
String styleName = paras.get(i).getParagraphFormat().getStyleName().trim();
String isStyleSeparator = Integer.toString(paras.get(i).getBreakIsStyleSeparator() ? 1 : 0);
String content = paras.get(i).toString(SaveFormat.TEXT).trim();
bookLines.add(new String[]{content, styleName, isStyleSeparator});
}
} catch (Exception e){}
return bookLines;
}
编辑:
谢谢Alexey Noskov,和你一起解决
public static ArrayList<String[]> GetBookLinesByTag(String file) {
ArrayList<String[]> bookLines = new ArrayList<>();
try {
Document doc = new Document(file);
ParagraphCollection paras = doc.getFirstSection().getBody().getParagraphs();
for(int i = 0; i < paras.getCount(); i++){
String styleName = paras.get(i).getParagraphFormat().getStyleName().trim();
String isStyleSeparator = Integer.toString(paras.get(i).getBreakIsStyleSeparator() ? 1 : 0);
String content = paras.get(i).toString(SaveFormat.TEXT).trim();
for (Field field : paras.get(i).getRange().getFields()) {
if (field.getType() == FieldType.FIELD_HYPERLINK) {
FieldHyperlink hyperlink = (FieldHyperlink) field;
String urlId = hyperlink.getSubAddress();
String urlText = hyperlink.getResult();
// Reformat linked text: urlText:urlId
content = urlText + ":" + urlId;
}
}
bookLines.add(new String[]{content, styleName, isStyleSeparator});
}
} catch (Exception e){}
return bookLines;
}
Hyperlink在 MS Word 文档中表示为字段。如果您在 MS Word 中按 Alt+F9,您将看到类似这样的内容
{ HYPERLINK "https://aspose.com" }
关注 link 以了解有关 Aspose.Words 文档模型和 MS Word 中字段的更多信息。
https://docs.aspose.com/display/wordsjava/Introduction+to+Fields
在您的情况下,您需要定位 FieldStart 的位置——这将是开始位置,然后测量 FieldSeparator 和 FieldEnd 之间内容的长度——开始位置加上计算的长度就是结束位置。
披露:我在 Aspose.Words 团队工作。
android 应用程序使用 Aspose Words for Android 库阅读 Ms Word 文档中的段落和一些属性。它获取段落文本、样式名称并且是单独的值。段落行中有些词有超链接。如何获取单词超链接的开始和结束边界?例如:
This is an inline hyperlink paragraph example that the start bound is 18 and end bound is 27.
public static ArrayList<String[]> GetBookLinesByTag(String file) {
ArrayList<String[]> bookLines = new ArrayList<>();
try {
Document doc = new Document(file);
ParagraphCollection paras = doc.getFirstSection().getBody().getParagraphs();
for(int i = 0; i < paras.getCount(); i++){
String styleName = paras.get(i).getParagraphFormat().getStyleName().trim();
String isStyleSeparator = Integer.toString(paras.get(i).getBreakIsStyleSeparator() ? 1 : 0);
String content = paras.get(i).toString(SaveFormat.TEXT).trim();
bookLines.add(new String[]{content, styleName, isStyleSeparator});
}
} catch (Exception e){}
return bookLines;
}
编辑: 谢谢Alexey Noskov,和你一起解决
public static ArrayList<String[]> GetBookLinesByTag(String file) {
ArrayList<String[]> bookLines = new ArrayList<>();
try {
Document doc = new Document(file);
ParagraphCollection paras = doc.getFirstSection().getBody().getParagraphs();
for(int i = 0; i < paras.getCount(); i++){
String styleName = paras.get(i).getParagraphFormat().getStyleName().trim();
String isStyleSeparator = Integer.toString(paras.get(i).getBreakIsStyleSeparator() ? 1 : 0);
String content = paras.get(i).toString(SaveFormat.TEXT).trim();
for (Field field : paras.get(i).getRange().getFields()) {
if (field.getType() == FieldType.FIELD_HYPERLINK) {
FieldHyperlink hyperlink = (FieldHyperlink) field;
String urlId = hyperlink.getSubAddress();
String urlText = hyperlink.getResult();
// Reformat linked text: urlText:urlId
content = urlText + ":" + urlId;
}
}
bookLines.add(new String[]{content, styleName, isStyleSeparator});
}
} catch (Exception e){}
return bookLines;
}
Hyperlink在 MS Word 文档中表示为字段。如果您在 MS Word 中按 Alt+F9,您将看到类似这样的内容
{ HYPERLINK "https://aspose.com" }
关注 link 以了解有关 Aspose.Words 文档模型和 MS Word 中字段的更多信息。 https://docs.aspose.com/display/wordsjava/Introduction+to+Fields
在您的情况下,您需要定位 FieldStart 的位置——这将是开始位置,然后测量 FieldSeparator 和 FieldEnd 之间内容的长度——开始位置加上计算的长度就是结束位置。
披露:我在 Aspose.Words 团队工作。