使用iText java将字体设置为pdf中的段落

时间:2011-04-28 11:24:56

标签: java fonts itext paragraph

我试图在java中使用iText创建pdf。当我尝试将字体设置为段落时,我失败了。确切的问题是没有应用字体大小。我使用了以下代码。

StringReader strReader = new StringReader(content);
arrList = HTMLWorker.parseToList(strReader, null);

Font font = new Font(BaseFont.createFont("c:\\ARIALUN0.ttf", BaseFont.IDENTITY_H, 
    BaseFont.EMBEDDED), 6, Font.BOLD, new Color(0, 0, 0));

Paragraph para = new Paragraph();  
para.setFont(font);
for (int k = 0; k < arrList.size(); ++k) {                   
    para.add((com.lowagie.text.Element)arrList.get(k)); 
}

任何人都可以帮我找到解决方案吗?

5 个答案:

答案 0 :(得分:7)

//使用此代码。有时setfont()不适用于段落

try
{

    FileOutputStream out=new FileOutputStream(name);
    Document doc=new Document();
    PdfWriter.getInstance(doc, out);
    doc.open();

    Font f=new Font(FontFamily.TIMES_ROMAN,50.0f,Font.UNDERLINE,BaseColor.RED);
    Paragraph p=new Paragraph("New PdF",f);

    p.setAlignment(Paragraph.ALIGN_CENTER);

    doc.add(p);
    doc.close();
    }
    catch(Exception e)
    {
        System.out.println(e);
    }
}

答案 1 :(得分:3)

我很困惑,差点把错误的答案发给你。

您的段落正确设置了字体。只需尝试插入一个String即可查看。

你的问题在于你的for循环。在段落中,您要添加一个Element对象。 Element由Chunk对象组成,每个对象都有自己的Font数据。

尝试在元素实例化时设置元素的字体。这应该可以解决你的问题。

答案 2 :(得分:2)

试试这个,它会保存文字的样式:

 Paragraph _p = new Paragraph();

         _p.setFont(regular);

        ArrayList htmlObjs = (ArrayList) HTMLWorker.parseToList(new StringReader(text_), null);

        for (int k = 0; k < htmlObjs.size(); ++k)
        {
            ArrayList<Chunk> chunk = ((Paragraph) htmlObjs.get(k)).getChunks();
            for (int l = 0; l < chunk.size(); l++)
            {
                Font _original_chunk_font = chunk.get(l).getFont();
                Font _newchunk_font = new Font(unicode);

                _newchunk_font.setFamily(_original_chunk_font.getFamilyname());
                _newchunk_font.setStyle(_original_chunk_font.getStyle());
                _newchunk_font.setSize(_original_chunk_font.getSize());
                _newchunk_font.setColor(_original_chunk_font.getColor());

                chunk.get(l).setFont(_newchunk_font);
            }
            _p.add((Element)htmlObjs.get(k));
        }

答案 3 :(得分:0)

要将Font添加到 itextpdf Paragraph,您只需使用Chunk,然后就可以将Font设置为Chunk之后ChunkParagraph

示例:

Font f3 = new Font(Font.FontFamily.TIMES_ROMAN, 18.0f, Font.BOLD, BaseColor.BLACK);
Chunk c3 = new Chunk("INVOICE", f3);
c3.setBackground(BaseColor.WHITE);       
Paragraph p3 = new Paragraph(c3);
p3.setAlignment(Element.ALIGN_CENTER);

答案 4 :(得分:0)

  

我是新手。
     但我告诉你一个设置字体的最简单方法   段落。

document.open();
document.add(new Paragraph(" Hello World ", FontFactory.getFont(FontFactory.TIMES_ROMAN,18, Font.BOLD, BaseColor.BLACK)));
document.close();
  

通过这种方式,我正在改变字体,字体大小,颜色等。

     

这对我有用..

     

快乐编码..