[英]write something in existing pdf in landscape mode using itextsharp .net mvc?
我想在現有的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快照).... 和我的舊PDF oldpdfFile和新PDF(CREATED) -newpdfFile
在回答您的另一個問題“從舊的pdf itextsharp .net MVC創建新的pdf”時,我解釋了為什么頁面顯示為旋轉狀態以及如何對此進行抵消。
不過,在這里您可以很清楚地看到您的任務正在填寫該證書。 不應通過PdfReader
/ PdfWriter
對(用於創建包含來自其他文檔的一到兩頁的副本的新文檔)來實現此任務,而應通過PdfReader
/ PdfStamper
對(用於處理現有的PDF,例如用於表單填寫)。
使用該技術,您的代碼可能如下所示:
using (PdfReader reader = new PdfReader(oldFile))
using (FileStream fs = new FileStream(newFile, FileMode.Create, FileAccess.Write))
using (PdfStamper stamper = new PdfStamper(reader, fs))
{
PdfContentByte cb = stamper.GetOverContent(1);
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, 640, 520, 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();
}
導致
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.