For the complete documentation index, see llms.txt. This page is also available as Markdown.
Viewing

VisualComparisonTest

Sample C# code for using Apryse SDK to overlay two PDF files allowing for a visual color difference between them. This is commonly used to see changes between two document revisions or in drawing blueprints that are overlayed with updated data.

//
// Copyright (c) 2001-2020 by PDFTron Systems Inc. All Rights Reserved.
//

using System;
using System.IO;
using System.Threading.Tasks;
using Windows.Foundation;

using pdftron.PDF;
using pdftron.SDF;

using PDFNetUniversalSamples.ViewModels;

namespace PDFNetSamples
{
    public sealed class VisualComparisionTest : Sample
    {
        public VisualComparisionTest() :
            base("VisualComparision", "PDFNet can generate a visual comparison between two different documents. The comparison result itself is a resolution independent PDF -- well suited for adding high-quality diff support into existing app workflows.")
        {
        }

        public override IAsyncAction RunAsync()
        {
            return Task.Run(new System.Action(async () => {
                WriteLine("--------------------------------");
                WriteLine("Starting Visual Comparision Test...");
                WriteLine("--------------------------------\n");

                bool error = await DiffingTestAsync();

                if (error)
                {
                    WriteLine("Visual Comparision failed");
                }
                else
                {
                    WriteLine("Visual Comparision succeeded");
                }

                WriteLine("\n--------------------------------");
                WriteLine("Done Visual Comparision Test.");
                WriteLine("--------------------------------\n");
            })).AsAsyncAction();
        }

        private async Task<bool> DiffingTestAsync()
        {
            bool error = false;

            string firstDocumentPath = Path.Combine(InputPath, "diff_doc_1.pdf");
            string secondDocumentPath = Path.Combine(InputPath, "diff_doc_2.pdf");
            string outputDocumentPath = Path.Combine(OutputPath, "VisualComparision.pdf");

            if ((!File.Exists(firstDocumentPath)) || (!File.Exists(secondDocumentPath)))
            {
                WriteLine("Atleast one input file does not exist. Aborting.");
                error = true;
                return error;
            }

            try
            {
				using (PDFDoc firstDocument = new PDFDoc(firstDocumentPath))
				using (PDFDoc secondDocument = new PDFDoc(secondDocumentPath))
				{
					Page firstDocumentPage = firstDocument.GetPage(1);
					Page secondDocumentPage = secondDocument.GetPage(1);

					DiffOptions diffOptions = new DiffOptions();
					diffOptions.SetColorA(new ColorPt(1, 0, 0));
					diffOptions.SetColorB(new ColorPt(0, 0, 0));
					diffOptions.SetBlendMode(GStateBlendMode.e_bl_normal);

					PDFDoc outputDocument = new PDFDoc();
					outputDocument.AppendVisualDiff(firstDocumentPage, secondDocumentPage, diffOptions);
					await outputDocument.SaveAsync(outputDocumentPath, SDFDocSaveOptions.e_linearized);
                    await AddFileToOutputList(outputDocumentPath).ConfigureAwait(false);
                }
            }
            catch (Exception e)
            {
                WriteLine(GetExceptionMessage(e));
                error = true;
            }

            return error;
        }
    }
}