【问题标题】:How to get hyperlink boundaries of inline words with Aspose Words for Androd?如何使用 Aspose Words for Android 获取内联词的超链接边界?
【发布时间】:2020-06-17 09:56:01
【问题描述】:

Android 应用程序使用 Aspose Words for Android 库读取 Ms Word 文档中的段落和一些属性。它获取段落文本、样式名称和单独的值。有一些单词在段落行中有超链接。如何获取单词超链接的开始和结束边界?例如:

这是一个内联 hyperlink 段落示例,起始边界为 18,结束边界为 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;
}

【问题讨论】:

  • 是“字符串内容”的超链接部分吗?如果是这样,您是否需要超链接的开始和结束位置以及超链接本身作为字符串?

标签: java android parsing aspose aspose.words


【解决方案1】:

MS Word 文档中的超链接表示为字段。如果您在 MS Word 中按 Alt+F9,您将看到类似这样的内容

{ HYPERLINK "https://aspose.com" }

点击链接以了解有关 Aspose.Words 文档模型和 MS Word 中的字段的更多信息。 https://docs.aspose.com/display/wordsjava/Introduction+to+Fields

在您的情况下,您需要定位 FieldStart 的位置——这将是开始位置,然后测量 FieldSeparator 和 FieldEnd 之间的内容长度——开始位置加上计算出的长度将是结束位置。

披露:我在 Aspose.Words 团队工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-13
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多