2016-02-26 57 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; 
} 

我爲了創建一個PDF文件利用iText/iTextG庫我的Android項目。

我的問題是:有沒有一種簡單的方法可以在iText中做到這一點?寫一個包含圖像的短語或段落?我認爲Chunks會有所幫助,但我不會找到方式,例子或其他任何東西。

謝謝你的時間。

回答

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

謝謝。大塊是答案。這個例子有很多幫助! –

相關問題