3

「My string [img src=image_from_drawable/] blablabla」のような画像を含む文字列があります。次のコードを使用して、この文字列を Spannable として解析し、TextView でそのドローアブルを表示できます。

static public Spannable formatAbility(String _ability) {
    Spannable spannable = spannableFactory.newSpannable(_ability);
    addImages(mContext, spannable);
    return spannable;
}

private static boolean addImages(Context context, Spannable spannable) {
    Pattern refImg = Pattern
            .compile("\\Q[img src=\\E([a-zA-Z0-9_]+?)\\Q/]\\E");
    boolean hasChanges = false;

    Matcher matcher = refImg.matcher(spannable);
    while (matcher.find()) {
        boolean set = true;
        for (ImageSpan span : spannable.getSpans(matcher.start(),
                matcher.end(), ImageSpan.class)) {
            if (spannable.getSpanStart(span) >= matcher.start()
                    && spannable.getSpanEnd(span) <= matcher.end()) {
                spannable.removeSpan(span);
            } else {
                set = false;
                break;
            }
        }
        String resname = spannable
                .subSequence(matcher.start(1), matcher.end(1)).toString()
                .trim();
        int id = context.getResources().getIdentifier(resname, "drawable",
                context.getPackageName());

        if (set) {
            hasChanges = true;

            spannable.setSpan(new ImageSpan(context, id,
                    ImageSpan.ALIGN_BASELINE), matcher.start(), matcher
                    .end(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        }
    }

    return hasChanges;
}

PDFファイルを作成するために、AndroidプロジェクトにiText/iTextGライブラリを使用しています。

私の質問は: iText でこれを行う簡単な方法はありますか? 画像を含む句や段落を書きますか? チャンクが役立つと思いますが、その方法、例、またはその他のものは見つかりません。

御時間ありがとうございます。

4

1 に答える 1