我使用iTextSharp为现有的pdf添加页脚注释。问题是当我访问pdf文件并从其内容创建另一个文件时,页面的方向会发生变化并且内容会被切断。 我使用的代码是:
//using itextsharp
string oldFile = dtroldp + strfn;
if (File.Exists(oldFile))
{
string newFile = strpath + "sys_" + docid + strext;
PdfReader reader = new PdfReader(oldFile);
int numberOfPages = reader.NumberOfPages;
FileStream fs = new FileStream(newFile, FileMode.Create, FileAccess.Write);
Document document = new Document();
// open the writer
PdfWriter writer = PdfWriter.GetInstance(document, fs);
writer.PageEvent = new PDFFooter();
document.Open();
for (int i = 1; i <= numberOfPages; i++)
{
document.SetPageSize(reader.GetPageSizeWithRotation(1));
document.NewPage();
PdfContentByte cb = writer.DirectContent;
//// select the font properties
BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
cb.SetColorFill(BaseColor.BLACK);
cb.SetFontAndSize(bf, 32);
// write the text in the pdf content
cb.BeginText();
cb.EndText();
PdfImportedPage page = writer.GetImportedPage(reader, i);
cb.AddTemplate(page, 0, 0);
}
document.Close();
fs.Close();
writer.Close();
reader.Close();
}
有谁能告诉我我做错了什么?为什么方向会自动改变?
答案 0 :(得分:0)
你的方法完全错了。请扔掉你的代码。
使用PdfReader
和PdfStamper
,非使用Document
和PdfWriter
向现有PDF添加内容。请首先阅读此问题的答案:Watermark in PDF file is hiding behind images
在此示例中,我们在绝对位置添加一些水印。在您的情况下,您有不同大小的页面,因此您不应使用绝对位置。您应该按照此问题的答案计算x
和y
值:How to watermark PDFs using text or images?
您需要知道以下问题的答案:
结合所有这些智慧,您应该能够使用适当的类和方法在适当的位置添加页脚。