使用 iTextsharp 错误向 pdf 添加一行看不到该行
Adding a Line to a pdf using iTextsharp Error cant see the Line
我有一个 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();
我正在尝试在此文档的末尾添加一行,但在执行该代码后,它创建了文件,当我打开它时,我看不到该文本。当我搜索那个词时,它说它就在那里。像这样
这意味着代码可以正常工作,所有的问题都是字体,谁能告诉我如何让它到达页面末尾并显示而不是隐藏?
您的代码首先绘制文本
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。
我有一个 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();
我正在尝试在此文档的末尾添加一行,但在执行该代码后,它创建了文件,当我打开它时,我看不到该文本。当我搜索那个词时,它说它就在那里。像这样
这意味着代码可以正常工作,所有的问题都是字体,谁能告诉我如何让它到达页面末尾并显示而不是隐藏?
您的代码首先绘制文本
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。