Document comparison API to diff PDF, DOCX, XLSX, PPTX and other the most popular document formats using JavaScript.
npm install @groupdocs/groupdocs.comparisonPowerful document comparison API for Node.js (powered by Java) to diff 50+ document and image formats, including Microsoft Office and OpenDocument types, PDF documents, and common raster images (TIFF, JPEG, GIF, PNG, BMP). Retrieve changes in a convenient format with line-by-line comparison of content, paragraphs, characters, styles, shapes, and positions.
js
'use strict';
const groupdocs = require('@groupdocs/groupdocs.comparison');
// Apply license, required for non-evaluation usage
const license = new groupdocs.License();
license.setLicense("GroupDocs.Comparison.lic");
// Compare documents
const comparer = new groupdocs.Comparer("proposal_v1.docx");
comparer.add("proposal_v2.docx");
comparer.compare("proposal_diff.docx");
// Exit
process.exit(0);
`
The output proposal_diff.docx file shows changes made in the second version of the file and lists all the changes on an additional summary page.
$3
`javascript
'use strict';
const groupdocs = require('@groupdocs/groupdocs.comparison');
// Apply license, required for non-evaluation usage
const license = new groupdocs.License();
license.setLicense("GroupDocs.Comparison.lic");
// Compare documents
const comparer = new groupdocs.Comparer("proposal_v1.docx");
comparer.add("proposal_v2.docx");
comparer.compare();
// Print out changes
const changes = comparer.getChanges();
for (let index = 0; index < changes.length; index++) {
const change = changes[index];
const page = change.getPageInfo().getPageNumber();
const type = change.getType().name();
const text = (change.getText() || "").trim();
const src = (change.getSourceText() || "").trim();
const tgt = (change.getTargetText() || "").trim();
console.log([Page ${page}] ${type} "${text}", "${src}" -> "${tgt}");
}
// Exit
process.exit(0);
`
This code example compares two DOCX files and outputs details on changes, such as page, change type, source, and changed text. See the expected console output:
`log
[Page 3] INSERTED "7", "$12 per user/month" -> "$7 per user/month"
[Page 3] DELETED "12", "$12 per user/month" -> "$7 per user/month"
[Page 3] DELETED "5", "$25 per user/month" -> "$20 per user/month"
[Page 3] INSERTED "0", "$25 per user/month" -> "$20 per user/month"
`
$3
This code example shows how to accept or reject changes between two versions of the same document.
`javascript
'use strict';
const java = require('java');
const groupdocs = require('@groupdocs/groupdocs.comparison');
// Apply license, required for non-evaluation usage
const license = new groupdocs.License()
license.setLicense("GroupDocs.Comparison.lic");
// Compare documents
const comparer = new groupdocs.Comparer("proposal_v1.docx");
comparer.add("proposal_v2.docx");
comparer.compare();
// Accept all chanes
const changes = comparer.getChanges();
for (let index = 0; index < changes.length; index++) {
const change = changes[index];
change.setComparisonAction(groupdocs.ComparisonAction.ACCEPT); // or REJECT
}
// Apply changes and save result
const changeArray = java.newArray('com.groupdocs.comparison.result.ChangeInfo', changes);
const saveOptions = new groupdocs.ApplyChangeOptions(changeArray);
comparer.applyChanges("proposal_accepted_changes.docx", saveOptions);
// Exit
process.exit(0);
`
This example accepts all the changes and saves the output file with all changes accepted.
Troubleshooting
- Download during installation fails (corporate proxy/firewall): Ensure your environment allows downloading the required JAR during postinstall. If needed, download the file manually to the lib/ directory as described in the Installation Guide.
- Java not found: Make sure Java (JRE 8+) is installed and available on your system PATH.
- Permission issues when writing output files: Verify your process has write access to the target directory.
Licensing
For testing without trial limitations, you can request a 30-day Temporary License:
* Visit the Get a Temporary License page
* Follow the instructions to request your temporary license
* Copy the license file and apply it using the code example
`javascript
'use strict';
const groupdocs = require('@groupdocs/groupdocs.comparison');
// Apply license
const license = new groupdocs.License();
license.setLicense("GroupDocs.Comparison.lic");
``