2013-03-20 424 views
4

我嘗試新的字體添加到我的PDF,我需要使它粗體和下劃線..iText的新字體用粗體部分和下劃線

我可以添加新的字體,但不能讓它大膽和下劃線同時。

我嘗試以下方式..

public class PdfGenerator { 

    private static final String BASE_FONT = "Trebuchet MS"; 
    private static final String BASE_FONT_BOLDITALIC = "Trebuchet MS BI"; 
    private static final String BASE_FONT_BOLD = "Trebuchet MS B"; 

    private static final Font titlefontSmall = FontFactory.getFont(
      BASE_FONT_BOLD, 10, Font.UNDERLINE); 

    static { 
     String filePath = "..my font directory"; 
     String fontPath = filePath + "\\" + "trebuc.ttf"; 
     String fontPathB = filePath + "\\" + "TREBUCBD.TTF"; 
     String fontPathBI = filePath + "\\" + "TREBUCBI.TTF"; 

     FontFactory.register(fontPath, BASE_FONT); 
     FontFactory.register(fontPathB, BASE_FONT_BOLD); 
     FontFactory.register(fontPathBI, BASE_FONT_BOLDITALIC); 
    } 

    public void genMyPdf(String filePath) { 
     try { 
      Document document = new Document(); 
      PdfWriter writer = PdfWriter.getInstance(document, 
        new FileOutputStream(filePath)); 
      document.open(); 

      Paragraph p = new Paragraph("This should be bold & underline", 
        titlefontSmall); 
      document.add(p); 
      document.close(); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (DocumentException e) { 
      e.printStackTrace(); 
     } 

    } 

} 

我在做什麼錯?

回答

5

HERE閱讀了,因爲你正在使用的iText庫。

基本上使用塊,然後將這些塊添加到文檔。

Chunk underline = new Chunk("Underline. "); 
underline.setUnderline(0.1f, -2f); //0.1 thick, -2 y-location 
document.add(underline); 

我還沒有嘗試過自己,所以我不知道它是如何變成了呢。 進一步閱讀iText文檔,似乎您必須先定義粗體字體,然後再實施它。 THIS TUTORIAL顯示了一個使用iText粗體字體和使用粗體文本製作pdf的例子。從那裏,我敢肯定,你可以實現上面的代碼中的粗體文字和walah!粗體下劃線的文本:d

+0

它的工作thankss .. :) – Shrey 2013-03-21 06:34:44

+0

@Shrey沒問題! – pattmorter 2013-03-21 15:25:08

1

嘗試

Font fontbold = FontFactory.getFont("Times-Roman", 12, Font.BOLD); 
     document.add(new Paragraph("Times-Roman, Bold", fontbold)); 

和Font.UNDERLINE它undeline

+1

我想這兩個大膽和強調.. – Shrey 2013-03-21 06:35:44

10

可以定義字體對象有兩種風格:

private static final Font SUBFONT = new Font(Font.getFamily("TIMES_ROMAN"), 12, Font.BOLD|Font.UNDERLINE); 
+0

這應該是公認的答案! – Pali 2015-07-01 09:44:49

+0

它有助於減少代碼的工作量。謝謝@卡洛斯 – 2017-04-05 13:09:35

相關問題