使用 itextsharp 在标题和段落之间交替

Alternate between titles and paragraphs with itextsharp

我正在尝试使用 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);

但是看来我需要在添加新文本之前清除内容。是否可以只清除文本,或者我是否必须为每个段落创建新变量?希望不会....

解决问题的一种方法是像这样更改代码:

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 的开发人员引入一个错误...

通常,创建一个单独的 class 定义所有使用的 Font 对象。使用 getTitle()getText() 等自定义方法创建助手 class 也是一个好主意,类似于 PojoToElementFactory class(注意POJO 代表 Plain Old Java Object。原始代码是在 Java 中编写的,由...真正的。

使用 \n 引入换行符是一个 糟糕的 想法。为什么不使用诸如 leadingbeforespacing 之类的属性来在行之间定义白色 space?