/// <summary>
 /// Initializes a new instance of the <see cref="PdfObjectConfig"/> class.
 /// </summary>
 public PdfObjectConfig()
 {
     UseIndex                      = true;
     AllowCompression              = false;
     Tags                          = new SystemTagsCollection();
     CompressionThreshold          = int.MinValue;
     DeletePhysicalFilesAfterMerge = true;
     GlobalReplacements            = new GlobalReplacementsCollection();
 }
Exemple #2
0
        // Generates document
        public static void Generate(ILogger logger, YesNo useTestMode = YesNo.No)
        {
            #region Initialize timer
            var sw = new Stopwatch();
            sw.Start();
            #endregion

            #region page-1

            var page1 = new PdfInput
            {
                AutoUpdateChanges = true,
                Input             = "~/Resources/Sample-08/file-sample-1.pdf"
            };

            // Inserts report title
            page1.Replace(new ReplaceText(
                              new WithTextObject
            {
                Text           = "#TITLE#",
                NewText        = "Lorem ipsum",
                UseTestMode    = useTestMode,
                TextOffset     = PointF.Empty,
                Style          = TextStylesTable["ReportTitle"],
                ReplaceOptions = ReplaceTextOptions.AccordingToMargins
            }));


            // Inserts bar-chart image
            using (var barGraph = PdfImage.FromFile("~/Resources/Sample-08/Images/bar-chart.png"))
            {
                page1.Replace(new ReplaceText(
                                  new WithImageObject
                {
                    Text           = "#BAR-CHART#",
                    UseTestMode    = useTestMode,
                    ImageOffset    = PointF.Empty,
                    Style          = PdfImageStyle.Center,
                    ReplaceOptions = ReplaceTextOptions.AccordingToMargins,
                    Image          = barGraph
                }));
            }

            #endregion

            #region page-2

            var page2 = new PdfInput
            {
                AutoUpdateChanges = true,
                Input             = "~/Resources/Sample-08/file-sample-2.pdf"
            };

            // Inserts html table
            page2.Replace(new ReplaceText(
                              new WithTableObject
            {
                Text           = "#DATA-TABLE#",
                UseTestMode    = useTestMode,
                TableOffset    = PointF.Empty,
                Style          = PdfTableStyle.Default,
                ReplaceOptions = ReplaceTextOptions.FromPositionToRightMargin,
                Table          = PdfTable.CreateFromHtml(GenerateHtmlDatatable(), config: new PdfTableConfig {
                    HeightStrategy = TableHeightStrategy.Exact
                })
            }));

            #endregion

            #region page-3

            var page3 = new PdfInput
            {
                AutoUpdateChanges = true,
                Input             = "~/Resources/Sample-08/file-sample-3.pdf"
            };

            #endregion

            #region page-4

            var page4 = new PdfInput
            {
                AutoUpdateChanges = true,
                Input             = "~/Resources/Sample-08/file-Sample-4.pdf"
            };

            // Inserts image
            using (var image = PdfImage.FromFile("~/Resources/Sample-08/Images/image-1.jpg"))
            {
                page4.Replace(new ReplaceText(
                                  new WithImageObject
                {
                    Text           = "#IMAGE1#",
                    UseTestMode    = useTestMode,
                    ImageOffset    = PointF.Empty,
                    Style          = PdfImageStyle.Default,
                    ReplaceOptions = ReplaceTextOptions.AccordingToMargins,
                    Image          = image
                }));
            }

            #endregion

            #region merge

            // Defines system tags to replace > page number
            var systemTags = new SystemTagsCollection
            {
                new PageNumberSystemTag
                {
                    UseTestMode    = useTestMode,
                    TextOffset     = PointF.Empty,
                    Style          = TextStylesTable["PageNumber"],
                    ReplaceOptions = ReplaceTextOptions.FromPositionToRightMargin
                }
            };

            // Defines global text replacements to replace > header text
            var globalReplacements = new GlobalReplacementsCollection
            {
                new WithTextObject
                {
                    Text           = "#HEADER-TEXT#",
                    NewText        = "Report Name - Lorem ipsum dolor",
                    Style          = TextStylesTable["Header"],
                    ReplaceOptions = ReplaceTextOptions.FromLeftMarginToNextElement,
                    UseTestMode    = useTestMode,
                    TextOffset     = PointF.Empty
                }
            };

            // Defines merge configuration, includes tags, global replacements and allow compress the merged output
            var files = new PdfObject(new PdfObjectConfig {
                Tags = systemTags, GlobalReplacements = globalReplacements, AllowCompression = true
            })
            {
                Items = new List <PdfInput>
                {
                    new PdfInput {
                        Index = 0, Input = page1
                    },
                    new PdfInput {
                        Index = 1, Input = page2
                    },
                    new PdfInput {
                        Index = 2, Input = page3
                    },
                    new PdfInput {
                        Index = 3, Input = page4
                    },
                }
            };

            var mergeResult = files.TryMergeInputs();
            if (!mergeResult.Success)
            {
                logger.Info("   > Error creating output merge result");
                logger.Info($"     > Error: {mergeResult.Errors.AsMessages().ToStringBuilder()}");
                return;
            }

            #endregion

            #region save

            // Saves merged result to disk
            var saveResult = mergeResult.Result.Action(new SaveToFile {
                OutputPath = "~/Output/Sample08/Sample-08"
            });
            var ts = sw.Elapsed;
            sw.Stop();

            if (!saveResult.Success)
            {
                logger.Info("   > Error while saving to disk");
                logger.Info($"     > Error: {saveResult.Errors.AsMessages().ToStringBuilder()}");
                logger.Info($"   > Elapsed time: { ts.Hours:00}:{ ts.Minutes:00}:{ ts.Seconds:00}.{ ts.Milliseconds / 10:00}");
                return;
            }

            logger.Info("   > Saved to disk correctly");
            logger.Info("     > Path: ~/Output/Sample08/Sample-08.zip");
            logger.Info($"   > Elapsed time: { ts.Hours:00}:{ ts.Minutes:00}:{ ts.Seconds:00}.{ ts.Milliseconds / 10:00}");

            #endregion
        }