Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android中向iText pdf添加图像_Android_Image_Itext_Spannable_Itextg - Fatal编程技术网

在Android中向iText pdf添加图像

在Android中向iText pdf添加图像,android,image,itext,spannable,itextg,Android,Image,Itext,Spannable,Itextg,我有一个包含图像的字符串,比如“我的字符串[img src=image_from_drawable/]blablabla”。我可以将此字符串解析为Spanable,以在我的TextView上显示该drawable,代码如下: static public Spannable formatAbility(String _ability) { Spannable spannable = spannableFactory.newSpannable(_ability); addImages

我有一个包含图像的字符串,比如“我的字符串[img src=image_from_drawable/]blablabla”。我可以将此字符串解析为Spanable,以在我的TextView上显示该drawable,代码如下:

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;
}
静态公共可扩展格式化能力(字符串能力){
Spannable Spannable=spannableFactory.newspanable(_能力);
添加图像(mContext,可扩展);
回程可调;
}
私有静态布尔加法映像(上下文上下文,可扩展){
模式refImg=模式
.compile(\\Q[img src=\\E([a-zA-Z0-9+?)\\Q/]\\E);
布尔hasChanges=false;
匹配器匹配器=细分匹配器(可扩展);
while(matcher.find()){
布尔集合=真;
对于(ImageSpan:spannable.getspan)(matcher.start(),
matcher.end(),ImageSpan.class)){
if(spannable.getSpanStart(span)>=matcher.start()

&&spannable.getSpanEnd(span)创建带有图像的
,确实是一个不错的选择。请看一下ZUGFeRD教程的这一章:

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

这是如何做到的:

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);
我希望这有帮助