Some test text!

Search
Hamburger Icon

Xamarin / Guides / Overlay comparison

Compare files with overlay

Apryse SDK allows you to compare files visually using overlays.

File comparison in Xamarin

This tutorial only applies to Xamarin.Android. See Xamarin.iOS equivalent here .

You can visually compare pages. This resolution independent comparison allows you to quickly spot differences between pages.

There are two main ways to integrate the out-of-box UI components in your application:

  1. Standalone activity
  2. Comparison options dialog

Standalone activity

The DiffActivity is a standalone component that handles from picking two files to generating the comparison result.

diff-activity
  1. Define the activity
Storage Permission
Please follow the latest Android best practices and guidelines outlined here
<activity
    android:name="com.pdftron.pdf.controls.DiffActivity"
    android:configChanges="keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize"
    android:theme="@style/PDFTronAppTheme"
    android:windowSoftInputMode="adjustPan" />
  1. Show the activity
DiffActivity.Open(this);

Comparison options dialog

If you have your own viewer already and only want to show the comparison options in your application, the DiffOptionsDialogFragment can be used.

diff-frag
public void Show(Context context, FragmentManager fragmentManager, List<Android.Net.Uri> files)
{
    var fragment = pdftron.PDF.Dialog.Diffing.DiffOptionsDialogFragment.NewInstance(
        files[0], files[1]
    );
    fragment.SetStyle((int)DialogFragmentStyle.Normal, Resource.Style.PDFTronAppTheme);
    fragment.DiffOptionsConfirmed += (sender, e) =>
    {
        CompareFiles(context, files, e.Color1, e.Color2, e.BlendMode);
    };
    fragment.Show(fragmentManager, "diff_options_dialog");
}

where compareFile is:

private void CompareFiles(Context context, List<Android.Net.Uri> files, int color1, int color2, int blendMode)
{
    Android.Net.Uri uri = pdftron.PDF.Dialog.Diffing.DiffUtils.CompareFilesImpl(context, files, color1, color2, blendMode);
    // do something with the output
}
AsyncTask pattern can be used instead of Disposable pattern if desired.

Trial setup questions? Ask experts on Discord
Need other help? Contact Support
Pricing or product questions? Contact Sales