iTextSharp PDF编写器内容被削减

时间:2015-06-23 11:01:11

标签: c# asp.net itextsharp

我使用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();
}

有谁能告诉我我做错了什么?为什么方向会自动改变?

1 个答案:

答案 0 :(得分:0)

你的方法完全错了。请扔掉你的代码。

使用PdfReaderPdfStamper使用DocumentPdfWriter向现有PDF添加内容。请首先阅读此问题的答案:Watermark in PDF file is hiding behind images

在此示例中,我们在绝对位置添加一些水印。在您的情况下,您有不同大小的页面,因此您不应使用绝对位置。您应该按照此问题的答案计算xy值:How to watermark PDFs using text or images?

您需要知道以下问题的答案:

结合所有这些智慧,您应该能够使用适当的类和方法在适当的位置添加页脚。