使用 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
引入换行符是一个 糟糕的 想法。为什么不使用诸如 leading、before 和 spacing 之类的属性来在行之间定义白色 space?
我正在尝试使用 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
引入换行符是一个 糟糕的 想法。为什么不使用诸如 leading、before 和 spacing 之类的属性来在行之间定义白色 space?