android - 在 Android 中将图像添加到 iText pdf

标签 android image itext spannable itextg

我有一个包含图像的字符串,例如“我的字符串 [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;
}

我正在为我的 Android 项目使用 iText/iTextG 库来创建 pdf 文件。

我的问题是:在 iText 中是否有一种简单的方法可以做到这一点?写一个包含图像的短语或段落?我认为 Chunks 会有所帮助,但我找不到方法、示例或其他任何东西。

感谢您的宝贵时间。

最佳答案

用图像创建一个 Chunk 确实是可行的方法。请看一下ZUGFeRD教程的这一章:Creating PDF/A files with iText

它有一个用图像创建文本的示例,如下所示:

enter image description here

是这样的:

Paragraph p = new Paragraph();
Chunk c = new Chunk("The quick brown ");
p.add(c);
Image i = Image.getInstance("resources/images/fox.bmp"");
c = new Chunk(i, 0, -24);
p.add(c);
c = new Chunk(" jumps over the lazy ");
p.add(c);
i = Image.getInstance("resources/images/dog.bmp"");
c = new Chunk(i, 0, -24);
p.add(c);
document.add(p);

希望对您有所帮助。

关于android - 在 Android 中将图像添加到 iText pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35654918/

相关文章:

android - java插件中的Flutter依赖

java - 在java中以编程方式设置android复选框的属性

android - 为什么线程停止时出现 java.lang.UnsupportedOperationException?

java - 如何捕捉菜单项上的长按?

image - 用于在社交网站中存储图像的文件层次结构?

java - iText 页面换行 - 更改元素的顺序

java - iText 水平分割单元格

Android:如何以原始大小显示图像

javascript - 使用 Colorbox(JQuery 灯箱插件),如何单击图像关闭灯箱?

java - 读取加密的 pdf 元数据而不解密文件