使用iText java为pdf中的段落设置字体
我试图用java中的iText创建pdf。当我尝试将字体设置为段落时,我失败了。确切的问题是字体大小没有得到应用。我使用了以下代码使用iText java为pdf中的段落设置字体,java,fonts,itext,paragraph,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
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));
}
StringReader strReader=新的StringReader(内容);
arrList=HTMLWorker.parsetList(strReader,null);
Font Font=新字体(BaseFont.createFont(“c:\\ARIALUN0.ttf”),BaseFont.IDENTITY\u H,
BaseFont.EMBEDDED),6,Font.BOLD,新颜色(0,0,0));
段落段落=新段落();
第1.2段setFont(字体);
对于(int k=0;k
有人能帮我找到解决办法吗?我当时很困惑,几乎贴错了答案 您的段落的字体设置正确。只需插入一个字符串即可查看 您的问题在于for循环。在段落中,您添加了一个元素对象。元素由块对象组成,每个块对象都有自己的字体数据
尝试在实例化元素时设置元素块的字体。这将解决您的问题。试试这个,它将保存文本的样式:
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));
}
段落_p=新段落();
_p、 setFont(常规);
ArrayList htmlObjs=(ArrayList)HTMLWorker.parseToList(新的StringReader(text),null);
对于(int k=0;k
//使用此代码。有时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);
}
}
要将
Font
添加到itextpdf段落
中,您只需使用块
,然后可以将Font
设置为块
将该块
添加到段落
示例:
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);
我是新来的。但我向你展示了一种设置字体的最简单方法 段落 通过这种方式,我改变了字体、字号、颜色等 这对我很有用 快乐编码
我正在使用HTMLWorker解析数据并存储在arrayList中。块只允许字符串数据。如果arraylist项被转换为字符串,则html标记在文档中应用不正确。在(元素)arrList.get(k)中,您正在添加一个由块组成的元素。块已经有字体数据了。尝试强制转换块,更改字体并重新组合元素。因为cinflict,我不认为有其他方法可以用iText做到这一点。@Nims:@Zach:我也有同样的问题,但我不明白我应该如何来处理这些块?你能举个例子吗?谢谢。这真的很奇怪,但它可以工作,当设置对齐方式时,字体必须在构造器中设置得很好!谢谢你救了我一天!
document.open();
document.add(new Paragraph(" Hello World ", FontFactory.getFont(FontFactory.TIMES_ROMAN,18, Font.BOLD, BaseColor.BLACK)));
document.close();