我使用iTextSharp将多个pdf文件合并为一个文件。 (下面我写了我正在使用的功能)。
现在我有了新的要求,我需要在第一页内设置带有一些文字的标签。标签应放在任何现有内容之上。
我想编写一个接收页面(类型为PdfImportedPage)和一个字符串作为参数的函数,修改添加标签的页面并返回修改后的页面。
感谢您的帮助
这是我使用的功能:
public byte[] Join(params byte[][] files)
{
byte[] mergedPdf = null;
using (MemoryStream ms = new MemoryStream())
{
using (Document document = new Document())
{
using (PdfCopy copy = new PdfCopy(document, ms))
{
document.Open();
for (int i = 0; i < files.Count(); ++i)
{
using (PdfReader reader = new PdfReader(files[i]))//stampedDoc))
{
// loop over the pages in that document
int n = reader.NumberOfPages;
for (int page = 0; page < n; )
{
var addPage = copy.GetImportedPage(reader, ++page);
copy.AddPage(addPage);
}
}
}
}
mergedPdf = ms.ToArray();
}
return mergedPdf;
}
}
更新1:
我写这个函数没有成功。
private void AddText(PdfCopy copy, string text)
{
var pageStamp = copy.CreatePageStamp(addPage);
var over = pageStamp.GetOverContent();
overContent.SaveState();
overContent.BeginText();
BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
overContent.SetFontAndSize(bf, 10 );
overContent.SetTextMatrix( 100, 100);
overContent.ShowText(text);
overContent.EndText();
overContent.RestoreState();
}