PDF iTextSharp 替换徽标
PDF iTextSharp replacing logo
当我尝试将旧徽标 (i3screen) 替换为我的徽标时,我得到以下信息:
i3screen 标志在顶部,我不知道为什么
我的代码:
PdfReader pdfReader = new PdfReader(model.InputFile);
Document document = new Document(pdfReader.GetPageSizeWithRotation(1));
using (MemoryStream ms = new MemoryStream())
{
PdfWriter writer = PdfWriter.GetInstance(document, ms);
document.Open();
PdfContentByte cb = writer.DirectContent;
var pic = AddBlank(model.Blank);
document.Add(pic);
PdfImportedPage page = writer.GetImportedPage(pdfReader, 1);
cb.AddTemplate(page, 0, 0);
document.Close();
writer.Close();
return ms.ToArray();
}
iTextSharp.text.Image AddBlank(byte[] blank)
{
iTextSharp.text.Image pic = iTextSharp.text.Image.GetInstance(blank);
using (MemoryStream imgMs = new MemoryStream(blank))
{
System.Drawing.Image img = System.Drawing.Image.FromStream(imgMs);
}
pic.SetAbsolutePosition(10, 600 + (pic.Height / 2));
return pic;
}
可能,我可以为我的徽标设置布局,高于 i3screen 徽标或其他布局的布局?
您通过 Document
添加图像
document.Add(pic);
并且导入的页面直接到DirectContent
PdfContentByte cb = writer.DirectContent;
...
PdfImportedPage page = writer.GetImportedPage(pdfReader, 1);
cb.AddTemplate(page, 0, 0);
这可能导致结果 pdf 中的绘制顺序与您代码中的内容添加顺序不同。
要更改该顺序,请将导入的页面添加到 writer.DirectContentUnder
而不是 writer.DirectContent
。
当我尝试将旧徽标 (i3screen) 替换为我的徽标时,我得到以下信息:
i3screen 标志在顶部,我不知道为什么
我的代码:
PdfReader pdfReader = new PdfReader(model.InputFile);
Document document = new Document(pdfReader.GetPageSizeWithRotation(1));
using (MemoryStream ms = new MemoryStream())
{
PdfWriter writer = PdfWriter.GetInstance(document, ms);
document.Open();
PdfContentByte cb = writer.DirectContent;
var pic = AddBlank(model.Blank);
document.Add(pic);
PdfImportedPage page = writer.GetImportedPage(pdfReader, 1);
cb.AddTemplate(page, 0, 0);
document.Close();
writer.Close();
return ms.ToArray();
}
iTextSharp.text.Image AddBlank(byte[] blank)
{
iTextSharp.text.Image pic = iTextSharp.text.Image.GetInstance(blank);
using (MemoryStream imgMs = new MemoryStream(blank))
{
System.Drawing.Image img = System.Drawing.Image.FromStream(imgMs);
}
pic.SetAbsolutePosition(10, 600 + (pic.Height / 2));
return pic;
}
可能,我可以为我的徽标设置布局,高于 i3screen 徽标或其他布局的布局?
您通过 Document
document.Add(pic);
并且导入的页面直接到DirectContent
PdfContentByte cb = writer.DirectContent;
...
PdfImportedPage page = writer.GetImportedPage(pdfReader, 1);
cb.AddTemplate(page, 0, 0);
这可能导致结果 pdf 中的绘制顺序与您代码中的内容添加顺序不同。
要更改该顺序,请将导入的页面添加到 writer.DirectContentUnder
而不是 writer.DirectContent
。