[英]Highlighting text ( colors ) of existing PDF using iTextsharp using C#
[英]ItextSharp MVC5 C# - text in front of existing pdf
我正在构建一个Web应用程序,用于使用iTextSharp编辑PDF文件。
当我尝试写入PDF时,文本被打印在现有内容的后面,但是我需要在其顶部打印。
有人可以向我解释如何为文本设置depth属性吗?
这是我的代码
using (var reader = new PdfReader(oldFile))
{
using (var fileStream = new FileStream(newFile, FileMode.Create, FileAccess.Write))
{
var document = new Document(reader.GetPageSizeWithRotation(1));
var writer = PdfWriter.GetInstance(document, fileStream);
document.Open();
try
{
PdfContentByte cb = writer.DirectContent;
cb.BeginText();
try
{
cb.SetFontAndSize(BaseFont.CreateFont(), 12);
cb.SetTextMatrix(10, 100);
cb.ShowText("Customer Name");
}
finally
{
cb.EndText();
}
PdfImportedPage page = writer.GetImportedPage(reader, 1);
cb.AddTemplate(page, 0, 0);
}
finally
{
document.Close();
writer.Close();
reader.Close();
}
}
}
有人可以向我解释如何为文本设置depth属性吗?
Pdf没有明确的深度或z轴属性。 因此,先绘制的内容将包含在随后绘制的内容中。
因此,如果要在添加的文本下放置模板,则应在添加文本的代码之前拉入添加模板的代码:
PdfContentByte cb = writer.DirectContent;
PdfImportedPage page = writer.GetImportedPage(reader, 1);
cb.AddTemplate(page, 0, 0);
cb.BeginText();
try
{
cb.SetFontAndSize(BaseFont.CreateFont(), 12);
cb.SetTextMatrix(10, 100);
cb.ShowText("Customer Name");
}
finally
{
cb.EndText();
}
或者,您可以使用amextextrrp功能:它实际上创建了两个内容流,直接内容和底层内容,并将底层内容放在直接内容之前。
因此,如果您不希望按照上述方法重新排列代码,则可以将背景添加到底层内容中,而不是直接内容中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.