我正在尝试使用itextsharp编写pdf文档,但我不会在两种样式之间切换:标题和段落。
我尝试过这样的事情:
Paragraph title= new Paragraph();
title.Alignment = Element.ALIGN_CENTER;
title.Font = FontFactory.GetFont("Arial", 32);
title.Add("\nTitle 1\n\n");
pdfDoc.Add(title);
Paragraph paragraph = new Paragraph();
paragraph.Alignment = Element.ALIGN_LEFT;
paragraph.Font = FontFactory.GetFont("Arial", 12);
paragraph.Add("Lorem ipsum dolor sit amet \n");
pdfDoc.Add(paragraph);
title.Add("\nTitle 2\n\n");
pdfDoc.Add(title);
paragraph.Add("Consectetur adipiscing elit \n");
pdfDoc.Add(paragraph);
但看起来我需要在添加新文本之前清除内容。是否有可能只清除文本或者我是否必须为每个paracgraph创建新变量?希望不要......
答案 0 :(得分:1)
解决问题的一种方法是更改代码:
Font titleFont = FontFactory.GetFont("Arial", 32);
Font regularFont = FontFactory.GetFont("Arial", 36);
Paragraph title;
Paragraph text;
title = new Paragraph("Title", titleFont);
title.Alignment = Element.ALIGN_CENTER;
pdfDoc.Add(title);
text = new Paragraph("Lorem ipsum dolor sit amet", regularFont);
pdfDoc.Add(text);
title = new Paragraph("Title 2", titleFont);
title.Alignment = Element.ALIGN_CENTER;
pdfDoc.Add(title);
text = new Paragraph("Consectetur adipiscing elit", regularFont);
pdfDoc.Add(text);
如果内容在添加文本后消失,则会被视为严重错误。这意味着一次使用的对象不能再被重用。简而言之:在您的问题中,您要求iTextSharp的开发人员引入错误...
通常,会创建一个单独的类,用于定义所有使用的Font
个对象。使用getTitle()
,getText()
等自定义方法创建一个辅助类也是一个好主意,类似于PojoToElementFactory类(请注意,POJO代表Plain Old Java Object。原始代码是用Java编写的,真的是你的。
使用\n
引入换行符是糟糕的想法。为什么不使用前导,之前的间距和之后的间距来定义行之间的空格?