使用itextsharp .net mvc以横向模式在现有pdf中写一些东西?

时间:2017-05-26 16:58:41

标签: asp.net asp.net-mvc pdf itext

我想在现有的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快照).... My New Pdf SnapShot 和我的旧PDF [{3}}和新PDF(已创建) - oldpdfFile

1 个答案:

答案 0 :(得分:0)

在回答您的其他问题"create new pdf from a old pdf itextsharp .net MVC"时,我解释了为什么页面会出现轮换以及如何抵消这一问题。

但是,很明显,您的任务是填写该证书。此任务不应通过PdfReader / PdfWriter对(用于创建包含来自其他文档的一页或两页副本的新文档)来实现,而应通过{{1}实现} / PdfReader对(用于处理现有PDF,例如表单填写)。

使用该技术,您的代码可能如下所示:

PdfStamper

导致

Screenshot result