2016-02-26 4 views
2

У меня есть строка, содержащая изображения типа «Моя строка [img src = image_from_drawable /] blablabla». Я могу разобрать эту строку как Spannable, чтобы показать, что рисует на моем TextView, со следующим кодом:Добавить изображение в iText pdf в Android

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; 
} 

Я использую библиотеку IText/iTextG для моего Android проекта для того, чтобы создать файл PDF.

Мой вопрос:: Есть ли простой способ сделать это в iText? Напишите фразу или абзац, содержащие изображения? Я полагаю, что куски помогут, но я не нахожу пути, примеры или что-то еще.

Спасибо за ваше время.

ответ

1

Создание 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); 

Надеюсь, это поможет.

+0

Спасибо. Ответы были кусками. Этот пример очень помог! –

Смежные вопросы