[ad_1]
やあ。 テンプレートに基づいて PDF ドキュメントを生成しています。 ドキュメントには複数のページがあります。 ドキュメントには約 5000 ページを含めることができます。 500 番目のページを作成すると、オーバーフロー RAM (メモリ) が発生します。 何か案が? 前もって感謝します。
C#
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)); } } } } }
解決策 2
やあ! 解答を見つける? 私は同じ問題を抱えており、これをサポートする必要があります。
解決策 1
私は次のように私の問題を解決しようとしています:
テンプレートに基づいて空のページを生成する
C#
private static void GeneratePdfFromTemplate(string directoryOutPdf, string nameOutPdf, string pdfTemplatePath, int countPages) { using (Document document = new Document()) { using (PdfSmartCopy copy = new PdfSmartCopy( document, new FileStream(directoryOutPdf + nameOutPdf, FileMode.Create)) ) { document.Open(); PdfReader reader = new PdfReader(pdfTemplatePath + @"\EmptyTemplateBankBlank_2012.pdf"); for (int i = 0; i < countPages; i++) { copy.AddPage(copy.GetImportedPage(reader, 1)); } reader.Close(); copy.Close(); } document.Close(); } GC.Collect(); }
しかし、生成後、フィールドに値を設定できません。
[ad_2]
コメント