![](/img/trans.png)
[英]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.