public static void RunTests() { ZipOps.Test(); Validator.Test(); PdfOps.Test(); MergeOps.Test(); }
/// <summary> /// Merges a row tree with a PDF document containing form fields. /// </summary> public static void CreatePdf( MergeRowTree rowTree, bool ensureAllFieldsHaveValues, MemoryStream sourcePdfStream, Stream destinationStream, bool useLegacyBehaviorOfIgnoringInvalidFields = false) { var streams = new List <Stream>(); try { foreach (var row in rowTree.Rows) { var stream = new MemoryStream(); streams.Add(stream); using (var sourcePdfMemoryStreamCopy = new MemoryStream()) { // Aspose has decided that in the new Facades PDF library, they will close your source stream for you when you call doc.Save. sourcePdfStream.Reset(); IoMethods.CopyStream(sourcePdfStream, sourcePdfMemoryStreamCopy); var doc = new Aspose.Pdf.Facades.Form(sourcePdfMemoryStreamCopy); foreach (var mergeField in doc.FieldNames.Where(mergeField => !mergeField.StartsWith("noMerge"))) { var mergeValue = row.Values.SingleOrDefault(v => v.Name == mergeField); if (mergeValue == null) { if (useLegacyBehaviorOfIgnoringInvalidFields) { continue; } throw new MailMergingException(string.Format("PDF document contains a merge field ({0}) that does not exist.", mergeField)); } var mergeValueAsString = mergeValue as MergeValue <string>; string value = null; if (mergeValueAsString != null) { value = mergeValueAsString.Evaluate(ensureAllFieldsHaveValues); } if (value == null) { throw new MailMergingException("Merge field " + mergeValue.Name + " evaluates to an unsupported type."); } doc.FillField(mergeValue.Name, value); } doc.Save(stream); } } if (streams.Any()) { PdfOps.ConcatPdfs(streams, destinationStream); } } finally { foreach (var i in streams) { i.Dispose(); } } }
public static void RunTests() { ZipOps.Test(); PdfOps.Test(); }