Skip to content

groupdocs-comparison/GroupDocs.Comparison-for-Node.js-via-Java

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GroupDocs.Comparison for Node.js via Java — Code Examples

This repository contains runnable code examples demonstrating how to use GroupDocs.Comparison for Node.js via Java to compare documents, spreadsheets, presentations, PDFs, images, emails, and more.

Quick Start

Prerequisites

  • Node.js 20 LTS or later
  • Java JRE/JDK 8+ (17 LTS recommended)
  • Java Environment: Set JAVA_HOME and add to PATH

Windows PowerShell:

$env:JAVA_HOME="C:\Program Files\Java\jdk-17"
$env:Path="$env:JAVA_HOME\bin;$env:Path"

Linux/macOS:

export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
export PATH=$JAVA_HOME/bin:$PATH

For detailed installation instructions and platform-specific notes, refer to the documentation:

Installation

npm install

This installs @groupdocs/groupdocs.comparison and other packages referenced in package.json.

Running Examples

Run All Examples

Execute all examples:

npm start

Outputs are saved to Output/<example-name>/.

Example Structure

Examples are organized into three categories:

QuickStart

Minimal examples to get started:

  • helloWorld.js - Basic document comparison
  • setLicense.js - License setup example
  • setMeteredLicense.js - Metered license setup

BasicUsage

Core comparison functionality examples:

File What It Demonstrates
compareDocumentsFromPath.js Compare documents using file paths
compareDocumentsFromStream.js Compare documents using file streams
compareDocumentsProtectedPath.js Compare password-protected documents (paths)
compareDocumentsProtectedStream.js Compare password-protected documents (streams)
compareCellsFromPath.js Compare Excel spreadsheets (paths)
compareCellsFromStream.js Compare Excel spreadsheets (streams)
compareImageFromPath.js Compare image files (paths)
compareImageFromStream.js Compare image files (streams)
compareMultiplePdfDocuments.js Compare multiple PDFs simultaneously
getDocumentInfoPath.js Get document properties (paths)
getDocumentInfoStream.js Get document properties (streams)
getSupportedFormats.js List all supported file formats

AdvancedUsage

Advanced scenarios organized by feature:

Comparison (AdvancedUsage/Comparison/)

  • acceptRejectDetectedChangesPath.js - Accept/reject changes programmatically (paths)
  • acceptRejectDetectedChangesStream.js - Accept/reject changes programmatically (streams)
  • compareDocumentsSettingsStream.js - Custom comparison settings (sensitivity, styles)
  • compareFolders.js - Compare entire folders, save as TXT or HTML
  • compareMultipleDocumentsPath.js - Compare multiple documents at once (paths)
  • compareMultipleDocumentsStream.js - Compare multiple documents (streams)
  • compareMultipleDocumentsProtectedPath.js - Multiple password-protected documents (paths)
  • compareMultipleDocumentsProtectedStream.js - Multiple password-protected documents (streams)
  • compareMultipleDocumentsSettingsPath.js - Multiple documents with custom settings (paths)
  • compareMultipleDocumentsSettingsStream.js - Multiple documents with custom settings (streams)

Loading (AdvancedUsage/Loading/)

  • loadDocumentFromLocalDisc.js - Load with custom options (passwords, pages, comments)
  • loadDocumentFromStream.js - Load from streams with options
  • loadTextFromString.js - Load document content from string

Saving (AdvancedUsage/Saving/)

  • setDocumentMetadataSource.js - Set metadata for source document
  • setDocumentMetadataTarget.js - Set metadata for target document
  • setPasswordForResultantDocument.js - Password-protect result document

Example Code Snippets

Basic Comparison (Path)

// Examples/BasicUsage/compareDocumentsFromPath.js
const comparer = new groupdocs.Comparer(Constants.SOURCE_WORD);
comparer.add(Constants.TARGET_WORD);
comparer.compare(outputFileName);

Basic Comparison (Stream)

// Examples/BasicUsage/compareDocumentsFromStream.js
const InputStream = java.import('java.io.FileInputStream');
const comparer = new groupdocs.Comparer(
    new InputStream(Constants.SOURCE_WORD)
);
comparer.add(new InputStream(Constants.TARGET_WORD));
comparer.compare(outputFileName);

Accept/Reject Changes

// Examples/AdvancedUsage/Comparison/acceptRejectDetectedChangesPath.js
const comparer = new groupdocs.Comparer(Constants.SOURCE_WORD);
comparer.add(Constants.TARGET_WORD);
await comparer.compare();

let changes = await comparer.getChanges();
changes[0].setComparisonAction(groupdocs.ComparisonAction.ACCEPT);

const applyChangeOptions = new groupdocs.ApplyChangeOptions();
applyChangeOptions.setChanges(Arrays.asList(changes));
await comparer.applyChanges(outputPath, applyChangeOptions);

Custom Comparison Settings

// Examples/AdvancedUsage/Comparison/compareDocumentsSettingsStream.js
const compareOptions = new groupdocs.CompareOptions();
const styleSettings = new groupdocs.StyleSettings();
styleSettings.setUnderline(true);
styleSettings.setFontColor(Color.GREEN);
styleSettings.setHighlightColor(Color.RED);
compareOptions.setInsertedItemStyle(styleSettings);

await comparer.compare(outputFileName, compareOptions);

Multiple Documents

// Examples/AdvancedUsage/Comparison/compareMultipleDocumentsPath.js
const comparer = new groupdocs.Comparer(Constants.SOURCE_WORD);
comparer.add(Constants.TARGET_WORD);
comparer.add(Constants.TARGET2_WORD);
comparer.add(Constants.TARGET3_WORD);
await comparer.compare(outputFileName);

Password-Protected Documents

// Examples/BasicUsage/compareDocumentsProtectedPath.js
const loadOptions = new groupdocs.LoadOptions();
loadOptions.setPassword("1234");

const comparer = new groupdocs.Comparer(
    Constants.SOURCE_WORD_PROTECTED, 
    loadOptions
);
comparer.add(Constants.TARGET_WORD_PROTECTED, loadOptions);
comparer.compare(outputFileName);

Using the Examples Module

All examples are accessible through Examples/examples.js:

const examples = require('./Examples/examples');

// Basic examples
await examples.helloWorld();
await examples.compareDocumentsFromPath();
await examples.compareDocumentsFromStream();
await examples.compareCellsFromPath();
await examples.compareImageFromPath();

// Advanced examples
await examples.acceptRejectDetectedChangesPath();
await examples.compareMultipleWordsDocuments();
await examples.compareFolderSaveAsTxt();
await examples.loadDocumentFromLocalDisc();
await examples.setDocumentMetadataSource();

Project Structure

├── Examples/               # All example code
│   ├── BasicUsage/        # Basic comparison examples
│   │   ├── compareDocumentsFromPath.js
│   │   ├── compareDocumentsFromStream.js
│   │   ├── compareCellsFromPath.js
│   │   └── ...
│   │
│   ├── AdvancedUsage/     # Advanced features
│   │   ├── Comparison/   # Advanced comparison scenarios
│   │   ├── Loading/       # Document loading options
│   │   └── Saving/        # Result saving options
│   │
│   ├── QuickStart/       # Quick start examples
│   │   ├── helloWorld.js
│   │   ├── setLicense.js
│   │   └── setMeteredLicense.js
│   │
│   ├── Resources/
│   │   └── SampleFiles/  # Sample input files
│   │       ├── source.docx
│   │       ├── target.docx
│   │       └── ...
│   │
│   ├── constants.js      # File paths and configuration
│   ├── examples.js        # Example runner module
│   └── runExamples.js     # Run all examples
│
├── Results/
│   └── Output/            # Generated results (auto-created)
│
└── package.json

Input and Output

  • Input Files: Examples/Resources/SampleFiles/ (configured in Examples/constants.js)
  • Output Files: Results/Output/<example-name>/ (auto-created per example)

Modify Examples/constants.js to change paths if needed.

License Setup (Optional)

Examples run in trial mode by default. To use a license:

Option 1: Environment variable

Create .env:

GROUPDOCS_LICENSE=C:\path\to\license.lic

Option 2: Programmatic

const examples = require('./Examples/examples');
await examples.setLicense('path/to/license.lic');

Get a temporary license: GroupDocs Temporary License

Troubleshooting

Java Not Detected

Set JAVA_HOME and add to PATH (see Prerequisites above).

Build Errors

Install build tools:

  • Windows: Visual Studio Build Tools
  • Linux: sudo apt-get install build-essential
  • macOS: xcode-select --install

Output Permission Errors

Ensure write access to Results/Output/ directory.

Missing Fonts

Install common fonts (especially on Linux servers):

  • Microsoft Core Fonts
  • Liberation Fonts
  • DejaVu Fonts

Resources


Note: These are code examples demonstrating GroupDocs.Comparison features. For production use, ensure you have a valid license.

About

GroupDocs.Comparison for Node.js via Java examples, plugins and showcase projects

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •