c# iText使用

发布于:2024-06-10 ⋅ 阅读:(58) ⋅ 点赞:(0)

引入包

用nuget安装itext和itext.bouncy-castle-adapter包:
在这里插入图片描述
在这里插入图片描述

创建pdf

string path = "a.pdf";
PdfWriter writer = new PdfWriter(path);
PdfDocument pdfDoc = new PdfDocument(writer);
var doc=new Document(pdfDoc);
Paragraph p = new Paragraph("hello,测试一下");
PdfFont font = PdfFontFactory.CreateFont(@"C:\Windows\Fonts\SIMKAI.TTF", PdfEncodings.IDENTITY_H);
p.SetFont(font);

doc.Add(p);
doc.Close();

操作表格

string path = "a.pdf";
PdfWriter writer = new PdfWriter(path);
PdfDocument pdfDoc = new PdfDocument(writer);
var doc = new Document(pdfDoc);

var headerTexts = new[] {
	"标识", "姓名"
};

var table = new Table(headerTexts.Length)  // 设置表格列数
	.SetTextAlignment(iText.Layout.Properties.TextAlignment.CENTER);

//设置字体
PdfFont font = PdfFontFactory.CreateFont(@"C:\Windows\Fonts\SIMKAI.TTF", PdfEncodings.IDENTITY_H);
table.SetFont(font);

//添加表头
foreach (var header in headerTexts)
{
	table.AddHeaderCell(new Cell()
		.Add(new Paragraph(header))
		.SetBold()//设置粗体
		);
}

//第一行
table.AddCell(new Cell(0, 1).Add(new Paragraph("1"))//序号
		  .SetVerticalAlignment(iText.Layout.Properties.VerticalAlignment.MIDDLE))

	  .AddCell(new Cell(0, 1).Add(new Paragraph("abc,测试")).SetMinWidth(25)//姓名  设置最小列宽25,方便名字横向显示
		  .SetVerticalAlignment(iText.Layout.Properties.VerticalAlignment.MIDDLE));

//增加一行
table.StartNewRow();

//第二行
table.AddCell(new Cell(0, 1).Add(new Paragraph("2"))//序号
		  .SetVerticalAlignment(iText.Layout.Properties.VerticalAlignment.MIDDLE))

	  .AddCell(new Cell(0, 1).Add(new Paragraph("abc,测试2")).SetMinWidth(25)//姓名  设置最小列宽25,方便名字横向显示
		  .SetVerticalAlignment(iText.Layout.Properties.VerticalAlignment.MIDDLE));

//增加到文档
doc.Add(table);

//关闭文档
doc.Close();

读取文本

string path = "a.pdf";
PdfReader reader = new PdfReader(path);

PdfDocument pdfDoc= new PdfDocument(reader);
int numberOfPages = pdfDoc.GetNumberOfPages();
for(int i = 1; i <= numberOfPages; i++)
{
	var page=pdfDoc.GetPage(i);

	//提取文本
	string s=PdfTextExtractor.GetTextFromPage(page);

	
}


reader.Close();