Site Feedback Post

Single Post Permalink

View Thread: iTextSharp RAM (memory) overflow
  • User profile image
    KapMaximus

    I'm generating a PDF document based on template. The document has multiple pages. The document can have about 5000 pages. When creating the 500-th page I get an overflow RAM (memory). Any idea?

    Thanks in advance.

    public static void CreateBankBlank2012Year(string pdfTemplatePath, string directoryOutPdf, string nameOutPdf, AnnualReportsFilterParameters filterParametrs, string serverPath)
    {
    // Get details salary
    IEnumerable<SalayDetailsForPdf> dataSalaryDetails = (IEnumerable<SalayDetailsForPdf>) GetSalaryData(filterParametrs); 
    
    String fontPath = Path.Combine(serverPath + "\\Fonts", "STSONG.ttf");
    Font font = FontFactory.GetFont(fontPath, BaseFont.IDENTITY_H, 8);
    
    using (Document document = new Document())
    {
    using (PdfSmartCopy copy = new PdfSmartCopy(
    document, new FileStream(directoryOutPdf + nameOutPdf, FileMode.Create))
    )
    {
    document.Open();
    
    foreach (var data in dataSalaryDetails) 
    {
    PdfReader reader = new PdfReader(pdfTemplatePath + @"\EmptyTemplateBankBlank_2012.pdf");
    using (var ms = new MemoryStream())
    {
    using (PdfStamper stamper = new PdfStamper(reader, ms))
    {
    stamper.AcroFields.AddSubstitutionFont(font.BaseFont);
    AcroFields form = stamper.AcroFields;
    form.SetField("t1_address1", data.Address1);
    
    form.SetField("t1_name", data.NameHieroglyphic);
    
    // Other field ...
    
    stamper.FormFlattening = true;
    }
    reader = new PdfReader(ms.ToArray());
    
    copy.AddPage(copy.GetImportedPage(reader, 1));
    }
    }
    } 
    }
    }