This repository contains runnable code examples demonstrating how to use GroupDocs.Conversion for Node.js via Java to convert documents, spreadsheets, presentations, PDFs, images, emails, and more between various formats.
- Node.js 20 LTS or later
- Java JRE/JDK 8+ (17 LTS recommended)
- Java Environment: Set
JAVA_HOMEand add toPATH
Note: This project uses ES Modules (import/export syntax). Ensure your Node.js version supports ES Modules (Node.js 12+).
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:$PATHFor detailed installation instructions and platform-specific notes, refer to the documentation:
npm installThis installs the bundled package (@groupdocs/groupdocs.conversion) referenced in package.json.
Execute all examples:
npm startOr directly:
node Examples/runExamples.jsOutputs are saved to Examples/Output/<example-name>/.
Examples are organized into three categories:
Minimal examples to get started:
setLicense.js- License setup from stream (callback-based API)setLicenseFromFile.js- License setup from file pathsetLicenseFromStream.js- License setup from file stream
Core conversion functionality examples:
| File | What It Demonstrates |
|---|---|
convertToPdf.js |
Convert DOCX to PDF |
convertToHtml.js |
Convert document to HTML |
convertToWordProcessing.js |
Convert PDF to DOCX |
convertToSpreadsheet.js |
Convert DOCX to XLSX |
convertToPresentation.js |
Convert DOCX to PPTX |
convertToImagePng.js |
Convert DOCX to PNG image |
getPossibleConversions.js |
Get all supported conversion formats for a document |
getSourceDocumenInfo.js |
Get document metadata and properties |
Advanced scenarios organized by feature:
convertToPdfWithAdvancedOptions.js- Convert password-protected document to PDF with page selection, rotation, DPI, and custom dimensionsconvertToHtmlWithAdvancedOptions.js- Convert password-protected document to HTML with fixed layout and page selectionconvertToImageWithAdvancedOptions.js- Convert PDF to PNG with image transformations (flip, brightness, contrast, gamma, grayscale, resolution)convertToWordProcessingWithAdvancedOptions.js- Convert PDF to DOCX with page selection and format specificationconvertToSpreadsheetWithAdvancedOptions.js- Convert password-protected document to XLS with page selectionconvertToPresentationWithAdvancedOptions.js- Convert password-protected document to PPT with page selectioncommon/addWatermark.js- Add watermark text during conversioncommon/convertNConsecutivePages.js- Convert a range of consecutive pagescommon/convertSpecificPages.js- Convert specific pages by page numbers
LoadOptionsFromDifferentSources:
loadDocumentFromLocalDisk.js- Load document from local file systemloadDocumentFromStream.js- Load document from file streamloadDocumentFromUrl.js- Download and convert document from URL
LoadOptionsByDocumentType:
PDF:
Pdf/convertPdfAndFlattenAllFields.js- Flatten PDF form fields during conversionPdf/convertPdfAndHideAnnotations.js- Hide PDF annotations during conversionPdf/convertPdfAndRemoveEmbeddedFiles.js- Remove embedded files from PDF
Word Processing:
WordProcessing/convertWordProcessingByHidingComments.js- Hide comments in Word documentsWordProcessing/convertWordProcessingByHidingTrackedChanges.js- Hide tracked changes in Word documentsWordProcessing/convertWordProcessingBySpecifyingFontSubstitution.js- Custom font substitution for Word documents
Spreadsheet:
Spreadsheet/convertSpreadsheetAndHideComments.js- Hide comments in spreadsheetsSpreadsheet/convertSpreadsheetByShowingGridLines.js- Show grid lines in spreadsheet conversionSpreadsheet/convertSpreadsheetBySkippingEmptyRowsAndColumns.js- Skip empty rows and columnsSpreadsheet/convertSpreadsheetBySpecifyingRange.js- Convert specific row range (e.g., rows 10-30)Spreadsheet/convertSpreadsheetBySpecifyingFontsubstitution.js- Custom font substitution for spreadsheetsSpreadsheet/convertSpreadsheetWithHiddenSheetsIncluded.js- Include hidden sheets in conversion
Presentation:
Presentation/convertPresentationByHidingComments.js- Hide comments in presentationsPresentation/convertPresentationBySpecifyingFontSubstitution.js- Custom font substitution for presentationsPresentation/convertPresentationWithHiddenSlidesIncluded.js- Include hidden slides in conversion
Text:
Txt/convertTxtBySpecifyingEncoding.js- Convert text files with specific encoding (e.g., Shift-JIS)Txt/convertTxtByControllingLeadingSpacesBehavior.js- Control leading spaces behavior (convert to indent)Txt/convertTxtByControllingTrailingSpacesBehavior.js- Control trailing spaces behavior (trim)
CSV:
Csv/convertCsvBySpecifyingDelimiter.js- Convert CSV with custom delimiterCsv/convertCsvBySpecifyingEncoding.js- Convert CSV with specific encodingCsv/convertCsvByConvertingDateTimeAndNumericData.js- Automatic date/time and numeric data conversion
XML:
Xml/convertXmlAsDataSourceToSpreadsheet.js- Convert XML as data source to spreadsheet
Email:
Email/convertEmailWithAlteringFieldsVisibility.js- Control email field visibility (header, addresses, etc.)
CAD:
Cad/convertCadAndSpecifyLayouts.js- Convert specific CAD layoutsCad/convertCadAndSpecifyWidthAndHeight.js- Convert CAD with custom dimensions
Note:
Note/convertNoteBySpecifyingFontSubstitution.js- Custom font substitution for OneNote documents
// BasicUsage/convertToPdf.js
import groupdocs from '@groupdocs/groupdocs.conversion';
import Constants from './constants.js';
const converter = new groupdocs.Converter(Constants.SAMPLE_DOCX);
const convertOptions = new groupdocs.PdfConvertOptions();
const outputPath = `${Constants.OUTPUT_FOLDER}/ConvertToPdf.pdf`;
await converter.convert(outputPath, convertOptions);// BasicUsage/convertToHtml.js
import groupdocs from '@groupdocs/groupdocs.conversion';
import Constants from './constants.js';
const converter = new groupdocs.Converter(Constants.SAMPLE_DOCX);
const convertOptions = new groupdocs.MarkupConvertOptions();
const outputPath = `${Constants.OUTPUT_FOLDER}/ConvertToHtml.html`;
await converter.convert(outputPath, convertOptions);// AdvancedUsage/Converting/convertToPdfWithAdvancedOptions.js
import groupdocs from '@groupdocs/groupdocs.conversion';
import Constants from './constants.js';
const loadOptions = new groupdocs.WordProcessingLoadOptions();
loadOptions.setPassword('12345');
const converter = new groupdocs.Converter(Constants.SAMPLE_DOCX_WITH_PASSWORD, loadOptions);
const convertOptions = new groupdocs.PdfConvertOptions();
convertOptions.setPageNumber(2);
convertOptions.setPagesCount(1);
convertOptions.setRotate(groupdocs.Rotation.On180);
convertOptions.setDpi(300);
convertOptions.setWidth(1024);
convertOptions.setHeight(768);
await converter.convert(outputPath, convertOptions);// AdvancedUsage/Converting/common/addWatermark.js
import groupdocs from '@groupdocs/groupdocs.conversion';
import Constants from './constants.js';
const converter = new groupdocs.Converter(Constants.SAMPLE_DOCX);
const convertOptions = new groupdocs.PdfConvertOptions();
const watermark = new groupdocs.WatermarkTextOptions("Sample watermark");
watermark.setColor("red");
watermark.setWidth(100);
watermark.setHeight(100);
watermark.setBackground(true);
convertOptions.setWatermark(watermark);
await converter.convert(outputPath, convertOptions);// AdvancedUsage/Converting/common/convertSpecificPages.js
import java from 'java';
import groupdocs from '@groupdocs/groupdocs.conversion';
import Constants from './constants.js';
const ArrayList = java.import('java.util.ArrayList');
const converter = new groupdocs.Converter(Constants.SAMPLE_DOCX);
const convertOptions = new groupdocs.PdfConvertOptions();
const pages = new ArrayList();
pages.add(1); // First page
pages.add(3); // Third page
convertOptions.setPages(pages);
await converter.convert(outputPath, convertOptions);// AdvancedUsage/Loading/LoadOptionsFromDifferentSources/loadDocumentFromStream.js
import { createReadStream } from 'fs';
import java from 'java';
import groupdocs from '@groupdocs/groupdocs.conversion';
import Constants from './constants.js';
const readStream = createReadStream(Constants.SAMPLE_DOCX);
const stream = await groupdocs.readDataFromStream(readStream);
// Create Supplier<InputStream> that returns the stream
const streamSupplier = java.newProxy('java.util.function.Supplier', {
get: function() {
return stream;
}
});
const converter = new groupdocs.Converter(streamSupplier);
const convertOptions = new groupdocs.PdfConvertOptions();
await converter.convert(outputPath, convertOptions);// AdvancedUsage/Loading/LoadOptionsFromDifferentSources/loadDocumentFromUrl.js
import java from 'java';
import groupdocs from '@groupdocs/groupdocs.conversion';
const URL = java.import('java.net.URL');
const url = 'https://example.com/document.docx';
const stream = new URL(url).openStream();
const converter = new groupdocs.Converter(stream);
const convertOptions = new groupdocs.PdfConvertOptions();
await converter.convert(outputPath, convertOptions);// BasicUsage/getSourceDocumenInfo.js
import groupdocs from '@groupdocs/groupdocs.conversion';
import Constants from './constants.js';
const converter = new groupdocs.Converter(Constants.SAMPLE_DOCX);
const documentInfo = converter.getDocumentInfo();
console.log(`Author: ${documentInfo.getAuthor()}`);
console.log(`Pages count: ${documentInfo.getPagesCount()}`);
console.log(`Width: ${documentInfo.getWidth()}`);
console.log(`Height: ${documentInfo.getHeight()}`);// BasicUsage/getPossibleConversions.js
import groupdocs from '@groupdocs/groupdocs.conversion';
import Constants from './constants.js';
const converter = new groupdocs.Converter(Constants.SAMPLE_DOCX);
const conversions = converter.getPossibleConversions();
console.log(`Source type: ${conversions.getSource().getExtension()}`);
const items = conversions.getAll();
for (let i = 0; i < items.size(); i += 1) {
const item = items.get(i);
console.log(`${item.getFormat().getExtension()} as ${item.isPrimary() ? 'primary' : 'secondary'} conversion`);
}All examples are accessible through Examples/examples.js:
import examples from './Examples/examples.js';
// Basic examples
await examples.getPossibleConversions();
await examples.getSourceDocumentInfo();
await examples.convertToHtml();
await examples.convertToPdf();
await examples.convertToWordProcessing();
await examples.convertToSpreadsheet();
await examples.convertToPresentation();
await examples.convertToImagePng();
// Advanced examples
await examples.convertToPdfWithAdvancedOptions();
await examples.addWatermark();
await examples.convertConsecutivePagesPdf();
await examples.convertSpecificPagesPdf();
await examples.loadDocumentFromStream();
await examples.loadDocumentFromUrl();
await examples.convertPdfAndFlattenAllFields();
await examples.convertWordProcessingByHidingComments();├── Examples/
│ ├── BasicUsage/ # Basic conversion examples
│ │ ├── convertToPdf.js
│ │ ├── convertToHtml.js
│ │ ├── convertToWordProcessing.js
│ │ ├── convertToSpreadsheet.js
│ │ ├── convertToPresentation.js
│ │ ├── convertToImagePng.js
│ │ ├── getPossibleConversions.js
│ │ └── getSourceDocumenInfo.js
│ │
│ ├── AdvancedUsage/ # Advanced features
│ │ ├── Converting/ # Advanced conversion scenarios
│ │ │ ├── convertToPdfWithAdvancedOptions.js
│ │ │ ├── convertToHtmlWithAdvancedOptions.js
│ │ │ ├── convertToImageWithAdvancedOptions.js
│ │ │ └── common/
│ │ │ ├── addWatermark.js
│ │ │ ├── convertNConsecutivePages.js
│ │ │ └── convertSpecificPages.js
│ │ │
│ │ └── Loading/ # Document loading options
│ │ ├── LoadOptionsFromDifferentSources/
│ │ │ ├── loadDocumentFromLocalDisk.js
│ │ │ ├── loadDocumentFromStream.js
│ │ │ └── loadDocumentFromUrl.js
│ │ │
│ │ └── LoadOptionsByDocumentType/
│ │ ├── Pdf/
│ │ ├── WordProcessing/
│ │ ├── Spreadsheet/
│ │ ├── Presentation/
│ │ ├── Txt/
│ │ ├── Csv/
│ │ ├── Xml/
│ │ ├── Email/
│ │ ├── Cad/
│ │ └── Note/
│ │
│ ├── QuickStart/ # Quick start examples
│ │ ├── setLicense.js
│ │ ├── setLicenseFromFile.js
│ │ └── setLicenseFromStream.js
│ │
│ ├── Resources/
│ │ └── SampleFiles/ # Sample input files
│ │ ├── sample.docx
│ │ ├── sample.pdf
│ │ ├── sample.xlsx
│ │ └── ...
│ │
│ ├── Output/ # Generated results (auto-created)
│ │
│ ├── constants.js # File paths and configuration
│ ├── examples.js # Example runner module
│ └── runExamples.js # Run all examples
│
├── .env.example # Environment variables template
├── package.json
└── README.md
- Input Files:
Examples/Resources/SampleFiles/(configured inExamples/constants.js) - Output Files:
Examples/Output/<example-name>/(auto-created per example)
Modify Examples/constants.js to change paths if needed.
Examples run in trial mode by default. To use a license:
Option 1: Environment variable
Create .env:
GROUPDOCS_LICENSE=C:\path\to\license.licOption 2: Programmatic
import examples from './Examples/examples.js';
import Constants from './Examples/constants.js';
await examples.setLicenseFromFile(Constants.LICENSE_PATH);Get a temporary license: GroupDocs Temporary License
GroupDocs.Conversion supports conversion between 50+ document formats including:
- Word Processing: DOC, DOCX, RTF, ODT, TXT
- Spreadsheet: XLS, XLSX, CSV, ODS
- Presentation: PPT, PPTX, ODP
- PDF: PDF
- Images: PNG, JPEG, BMP, TIFF, GIF, SVG
- Markup: HTML, XML
- Email: MSG, EML, EMLX
- CAD: DWG, DXF, DWF
- Note: ONE
- And more...
For a complete list, see: Supported File Formats
Set JAVA_HOME and add to PATH (see Prerequisites above).
Install build tools:
- Windows: Visual Studio Build Tools
- Linux:
sudo apt-get install build-essential - macOS:
xcode-select --install
Ensure write access to Examples/Output/ directory.
Install common fonts (especially on Linux servers):
- Microsoft Core Fonts
- Liberation Fonts
- DejaVu Fonts
If you see license-related messages, ensure:
- License file path is correct in
.envorConstants.LICENSE_PATH - License file is valid and not expired
- License matches the product version
- Documentation: docs.groupdocs.com/conversion/nodejs-java
- API Reference: apireference.groupdocs.com/conversion/nodejs-java
- Support Forum: forum.groupdocs.com/c/conversion
- Product Page: products.groupdocs.com/conversion/nodejs-java
Note: These are code examples demonstrating GroupDocs.Conversion features. For production use, ensure you have a valid license.