本文介绍如何使用spire.pdf for .net为pdf文档中的文字块加上行号。
原文档:
c#
using spire.pdf;
using spire.pdf.general.find;
using spire.pdf.graphics;
using system.drawing;
namespace addlinenumber
{
class program
{
static void main(string[] args)
{
//创建pdfdocument对象
pdfdocument doc = new pdfdocument();
//加载pdf文档
doc.loadfromfile(@"c:\users\administrator\desktop\input.pdf");
//获取第一页
pdfpagebase page = doc.pages[0];
//查找第一行中的指定文字
pdftextfind topline = page.findtext("成都冰蓝科技", textfindparameter.none).finds[0];
//获取行高
float lineheight = topline.bounds.height;
//获取一个y坐标,用于写入编号的起始y坐标
float y = topline.bounds.location.y - 2;
//获取第二行中的指定文字
pdftextfind secondline = page.findtext("office控件产品", textfindparameter.none).finds[0];
//计算行间距
float linespacing = secondline.bounds.top - topline.bounds.bottom;
//查找最后一行中的指定文字
pdftextfind bottomline = page.findtext("开发并向他们", textfindparameter.none).finds[0];
//获取获取最后一行的底部y坐标,亦即添加行号区域的高度
float height = bottomline.bounds.bottom;
//创建一个字体,大小和pdf中文字大小一致
pdftruetypefont truetypefont = new pdftruetypefont(new font("黑体", 12f), true);
int i = 1;
while (y < height)
{
//绘制行号到每一行的前面
page.canvas.drawstring(i.tostring(), truetypefont, pdfbrushes.black, new pointf(15, y));
y = lineheight linespacing;
i ;
}
//保存文档
doc.savetofile("result.pdf");
}
}
}
vb.net
imports spire.pdf
imports spire.pdf.general.find
imports spire.pdf.graphics
imports system.drawing
namespace addlinenumber
class program
shared sub main(byval args() as string)
'创建pdfdocument对象
dim doc as pdfdocument = new pdfdocument()
'加载pdf文档
doc.loadfromfile("c:\users\administrator\desktop\input-cn3.pdf")
'获取第一页
dim page as pdfpagebase = doc.pages(0)
'查找第一行中的指定文字
dim topline as pdftextfind = page.findtext("成都冰蓝科技",textfindparameter.none).finds(0)
'获取行高
dim lineheight as single = topline.bounds.height
'获取一个y坐标,用于写入编号的起始y坐标
dim y as single = topline.bounds.location.y - 2
'获取第二行中的指定文字
dim secondline as pdftextfind = page.findtext("office控件产品",textfindparameter.none).finds(0)
'计算行间距
dim linespacing as single = secondline.bounds.top - topline.bounds.bottom
'查找最后一行中的指定文字
dim bottomline as pdftextfind = page.findtext("开发并向他们",textfindparameter.none).finds(0)
'获取获取最后一行的底部y坐标,亦即添加行号区域的高度
dim height as single = bottomline.bounds.bottom
'创建一个字体,大小和pdf中文字大小一致
dim truetypefont as pdftruetypefont = new pdftruetypefont(new font("黑体",12f),true)
dim i as integer = 1
while y < height
'绘制行号到每一行的前面
page.canvas.drawstring(i.tostring(),truetypefont,pdfbrushes.black,new pointf(15,y))
y = lineheight linespacing
i = i 1
end while
'保存文档
doc.savetofile("result.pdf")
end sub
end class
end namespace
结果文档: