我想在现有的pdf中写一些东西。 到目前为止我做了=>
public void certificate()
{
//get user info using UserId from database
//UserDetail UserDetail = db.UserDetails.Where(x => x.UserId == UserId).FirstOrDefault();
string oldFile = Server.MapPath("~/Content/img/tsms/Certificate/Certificate-of-Completion-Award-Template-Blue.pdf");
string newFile = Server.MapPath("~/Content/img/tsms/Certificate/newFile.pdf");
// open the reader
PdfReader reader = new PdfReader(oldFile);
Document document = new Document(new Rectangle(288f, 144f), 10, 10, 10, 10);
document.SetPageSize(PageSize.A4);
// open the writer
FileStream fs = new FileStream(newFile, FileMode.Create, FileAccess.Write);
PdfWriter writer = PdfWriter.GetInstance(document, fs);
document.Open();
// the pdf content
PdfContentByte cb = writer.DirectContent;
// select the font properties
BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
cb.SetColorFill(BaseColor.DARK_GRAY);
cb.SetFontAndSize(bf, 8);
// write the text in the pdf content
cb.BeginText();
string text = "Some random blablablabla...";
// put the alignment and coordinates here
cb.ShowTextAligned(1, text, 520, 640, 0);
cb.EndText();
// write the text in the pdf content
cb.BeginText();
text = "Other random blabla...";
// put the alignment and coordinates here
cb.ShowTextAligned(2, text, 100, 200, 0);
cb.EndText();
// create the new page and add it to the pdf
PdfImportedPage page = writer.GetImportedPage(reader, 1);
cb.AddTemplate(page, 0, 0);
// close the streams and voilá the file should be changed :)
document.Close();
fs.Close();
writer.Close();
reader.Close();
}
这很有效。我的问题是:我提供的文档old document
处于横向模式。我希望新文档处于横向模式。但这为我提供了纵向模式的pdf。所以我试试.....
更新1 =>
document.SetPageSize(PageSize.A4.Rotate());
这也不起作用..
此外,我在旧页面下显示的旧文字中添加了新文字......
表示 - (下面是pdf快照).... 和我的旧PDF [{3}}和新PDF(已创建) - oldpdfFile
答案 0 :(得分:0)
在回答您的其他问题"create new pdf from a old pdf itextsharp .net MVC"时,我解释了为什么页面会出现轮换以及如何抵消这一问题。
但是,很明显,您的任务是填写该证书。此任务不应通过PdfReader
/ PdfWriter
对(用于创建包含来自其他文档的一页或两页副本的新文档)来实现,而应通过{{1}实现} / PdfReader
对(用于处理现有PDF,例如表单填写)。
使用该技术,您的代码可能如下所示:
PdfStamper
导致