【问题标题】:Adding a Line to a pdf using iTextsharp Error cant see the Line使用 iTextsharp 将行添加到 pdf 错误无法看到行
【发布时间】:2017-10-26 15:01:08
【问题描述】:

我有一个 PDF 文件,我正在尝试像这样使用 iTextSharp 在其中添加一行。

string Oldfile = @"C:\ThisTest.pdf";
    string NewFile = @"C:\NewOne.pdf";
    PdfReader reader = new PdfReader(Oldfile);
    iTextSharp.text.Rectangle Size = reader.GetPageSizeWithRotation(1);
    Document document = new Document(Size);
    FileStream fs = new FileStream(NewFile, FileMode.Create, FileAccess.Write);
    PdfWriter weiter = PdfWriter.GetInstance(document, fs);
    document.Open();
    PdfContentByte cb = weiter.DirectContent;
    BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.EMBEDDED);
    cb.SetColorFill(BaseColor.DARK_GRAY);
    cb.SetFontAndSize(bf, 8);
    cb.BeginText();
    string text = "Haseeb Ahmad";
    cb.ShowTextAligned(1, text, 520, 640, 0);
    cb.EndText();
    PdfImportedPage page = weiter.GetImportedPage(reader, 1);
    cb.AddTemplate(page, 0, 0);
    document.Close();
    fs.Close();
    weiter.Close();
    reader.Close();

我正在尝试在此文档的末尾添加一行,但在执行该代码后它会创建文件,当我打开它时,我看不到该文本。当我搜索那个词时,它说它在那里。像这样

这意味着代码工作的所有问题是字体任何人都可以告诉我如何使它来到页面的末尾并显示而不是被隐藏?

【问题讨论】:

    标签: c# asp.net itext pdf-generation


    【解决方案1】:

    您的代码首先绘制文本

    cb.SetColorFill(BaseColor.DARK_GRAY);
    cb.SetFontAndSize(bf, 8);
    cb.BeginText();
    string text = "Haseeb Ahmad";
    cb.ShowTextAligned(1, text, 520, 640, 0);
    cb.EndText();
    

    然后将原始页面复制到此

    PdfImportedPage page = weiter.GetImportedPage(reader, 1);
    cb.AddTemplate(page, 0, 0);
    

    因此,您的原始页面内容(可能包括白色背景填充)覆盖了您的新文本。

    请更改顺序,先复制页面再写正文。


    如果您的任务确实是将一些文本放到现有 PDF 的现有页面上,您应该完全使用其他 iText 类:PdfStamper 仅用于此类任务,而 PdfWriter更适合从头开始创建新的 PDF。

    您的方法非常有损(它会丢弃文档级别的信息和表单字段等交互部分),而PdfStamper 会尽可能多地保留原始 PDF。

    【讨论】:

    • 好的,让我快速尝试一下。好的,所以我如何使用 pdfstamper 而不是作者的代码是什么谢谢你的回复。
    • @Haseeb 这是一个不同的问题。不要使用 cmets 提出新问题,因为这样的问题通常无法在评论字段中以方便的方式回答。另外:你的问题不清楚。你有什么问题?你试过什么?您是否努力寻找在线提供的众多 PdfStamper 示例之一?
    • 现在就开始。对不起,我想创建一个问题,我将很快发布该问题堆栈溢出不会让我在 90 分钟之前发布,所以必须等待。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-07
    • 1970-01-01
    • 2011-05-06
    • 2013-02-09
    • 2013-02-10
    • 1970-01-01
    • 2013-06-13
    相关资源
    最近更新 更多