Ejemplo n.º 1
0
 public static void RunTests()
 {
     ZipOps.Test();
     Validator.Test();
     PdfOps.Test();
     MergeOps.Test();
 }
Ejemplo n.º 2
0
        /// <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();
                }
            }
        }
Ejemplo n.º 3
0
 public static void RunTests()
 {
     ZipOps.Test();
     PdfOps.Test();
 }