簡體   English   中英

使用itextsharp .net mvc以橫向模式在現有pdf中寫一些東西?

[英]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快照 和我的舊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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM