代码之家  ›  专栏  ›  技术社区  ›  Juha Syrjälä

如何使用iText在PDF中嵌入Helvetica字体?

  •  1
  • Juha Syrjälä  · 技术社区  · 16 年前

    以下操作不起作用:

    BaseFont helvetica = BaseFont.createFont(BaseFont.HELVETICA,
            BaseFont.CP1252, BaseFont.EMBEDDED);
    Font font = new Font(helvetica, 20, Font.BOLD);
    

    也就是说,这将返回false:

    font.getBaseFont().isEmbedded()
    

    如果我自己将TrueType文件作为参数提供给createFont()方法,则嵌入可以工作。

    4 回复  |  直到 16 年前
        1
  •  2
  •   Cjxcz Odjcayrwl    15 年前

    是的,嵌入已定义字体将不起作用。
    它不能工作。

        2
  •  3
  •   Juha Syrjälä    16 年前

    我对源代码做了一些深入的研究,似乎iText显式地忽略了这一点 BaseFont.EMBEDDED 特定字体的标志,Helvetica就是其中之一。

    如果您为Helvetica提供字体文件(例如TrueType.ttf),则嵌入可能有效。

        3
  •  1
  •   mark stephens    16 年前

        4
  •  1
  •   Mohit Singh    10 年前

    public class FontStyle{
    public static void main(String[] args) {
    
        // creation of the document with a certain size and certain margins
        // may want to use PageSize.LETTER instead
        Document document = new Document(PageSize.A4, 50, 50, 50, 50);
        try {
            // creation of the different writers
            PdfWriter writer = PdfWriter.getInstance(document,
                    new FileOutputStream("SupportedFontsStyle.pdf"));
    
            final Chunk NEWLINE = new ChunkPF("\n");
            document.open();
            Phrase phrase = new Phrase();
    
            LineSeparator lineSeperator = new LineSeparator();
            final Font font_h1_normal = FontFactory.getFont("Courier",8F, Font.NORMAL);
            phrase.add(new Chunk("Courier", font_h1_normal));
            phrase.add(ChunkPF.NEWLINE);
            final Font font_h2_normal = FontFactory.getFont("Courier-Bold", 8F,Font.BOLD);
            phrase.add(new Chunk("Courier-Bold  ", font_h2_normal));
            phrase.add(ChunkPF.NEWLINE);
            final Font font_h3_normal = FontFactory.getFont("Courier-Oblique",8F, Font.NORMAL);
            phrase.add(new Chunk("Courier-Oblique  ", font_h3_normal));
            phrase.add(ChunkPF.NEWLINE);
            final Font font_h4_normal = FontFactory.getFont("Courier-BoldOblique", 8F,Font.BOLD);
            phrase.add(new Chunk("Courier-BoldOblique", font_h4_normal));
            phrase.add(ChunkPF.NEWLINE);
            final Font font_h5_normal = FontFactory.getFont("Helvetica",8F, Font.NORMAL);
            phrase.add(new Chunk("Helvetica  ", font_h5_normal));
            phrase.add(ChunkPF.NEWLINE);
            final Font font_h6_normal = FontFactory.getFont("Helvetica-Bold", 8F,Font.BOLD);
            phrase.add(new Chunk("Helvetica-Bold  ", font_h6_normal));
            phrase.add(ChunkPF.NEWLINE);
            final Font font_h7_normal = FontFactory.getFont("Helvetica-BoldOblique",8F, Font.BOLD);
            phrase.add(new Chunk("Helvetica-BoldOblique", font_h7_normal));
            phrase.add(ChunkPF.NEWLINE);
            final Font font_h8_normal = FontFactory.getFont("Symbol", 8F,Font.NORMAL);
            phrase.add(new Chunk("Symbol", font_h8_normal));
            phrase.add(ChunkPF.NEWLINE);
            final Font font_h9_normal = FontFactory.getFont("Times-Bold",8F, Font.BOLD);
            phrase.add(new Chunk("Times-Bold  ", font_h9_normal));
            phrase.add(ChunkPF.NEWLINE);
            final Font font_h10_normal = FontFactory.getFont("Times", 8F,Font.NORMAL);
            phrase.add(new Chunk("Times  ", font_h10_normal));
            phrase.add(ChunkPF.NEWLINE);
            final Font font_h12_normal = FontFactory.getFont("Times-BoldItalic", 8F,Font.BOLDITALIC);
            phrase.add(new Chunk("Times-BoldItalic  ", font_h12_normal));
            phrase.add(ChunkPF.NEWLINE);            
            final Font font_h13_normal = FontFactory.getFont("Times-Italic",8F, Font.ITALIC);
            phrase.add(new Chunk("Times-Italic  ", font_h13_normal));
            phrase.add(ChunkPF.NEWLINE);
            final Font font_h14_normal = FontFactory.getFont("Times-Roman", 8F,Font.NORMAL);
            phrase.add(new Chunk("Times-Roman ", font_h14_normal));
            phrase.add(ChunkPF.NEWLINE);
            final Font font_h15_normal = FontFactory.getFont("ZapfDingbats",8F, Font.NORMAL);
            phrase.add(new Chunk("ZapfDingbats  ", font_h15_normal));
            phrase.add(ChunkPF.NEWLINE);        
    
            document.add(phrase);
    
            document.close();
    
        } catch (Exception ex) {
            System.err.println(ex.getMessage());
        }
    }
    

    }