Simple NodeJS wrapper for libreoffice CLI for converting office documents to different formats.
Please install libreoffice in /Applications (Mac), with your favorite package manager (Linux), or with the msi (Windows).
LibreOfficeFileConverter
constructor accepts optional configuration object.
Array of paths to LibreOffice binary executables.
child_process.ExecFileOptions
object. Can be used to configure such things as timeout, etc.
Enables debug output for LibreOffice command execution.
tmp.DirOptions
object. Can be used to configure behavior of tmp
package, which is used to create temporary folders for LibreOffice data.
Converts provided file, Buffer
or Readable
stream to the request format.
Input type: buffer
| file
| stream
.
Defines corresponding field for input: buffer
| inputPath
| stream
.
Output type: buffer
| file
| stream
.
Requires outputPath
field to be present when set to file
.
Defines return type: Promise<Buffer>
| Promise<void>
| Promise<Readable>
.
Conversion format.
LibreOffice input filter, see docs.
LibreOffice output filter, see docs.
LibreOffice output filter, see docs.
Deprecated, use outputFilter
instead.
Overrides for LibreOfficeFileConverter instance options.
From Buffer
to Buffer
.
import { readFile } from 'fs/promises';
import { join } from 'path';
import { LibreOfficeFileConverter } from 'libreoffice-file-converter';
const inputPath = join(__dirname, './resources/example.doc');
const run = async () => {
const libreOfficeFileConverter = new LibreOfficeFileConverter({
childProcessOptions: {
timeout: 60 * 1000,
},
});
const inputBuffer = await readFile(inputPath);
const outputBuffer = await libreOfficeFileConverter.convert({
buffer: inputBuffer,
format: 'pdf',
input: 'buffer',
output: 'buffer'
})
};
run();
From Buffer
to file.
import { readFile } from 'fs/promises';
import { join } from 'path';
import { LibreOfficeFileConverter } from 'libreoffice-file-converter';
const inputPath = join(__dirname, './resources/example.doc');
const outputPath = join(__dirname, './resources/output/result.pdf');
const run = async () => {
const libreOfficeFileConverter = new LibreOfficeFileConverter({
childProcessOptions: {
timeout: 60 * 1000,
},
});
const inputBuffer = await readFile(inputPath);
await libreOfficeFileConverter.convert({
buffer: inputBuffer,
format: 'pdf',
input: 'buffer',
output: 'fille',
outputPath,
})
};
run();
From Buffer
to Readable
stream.
import { readFile } from 'fs/promises';
import { join } from 'path';
import { LibreOfficeFileConverter } from 'libreoffice-file-converter';
const inputPath = join(__dirname, './resources/example.doc');
const run = async () => {
const libreOfficeFileConverter = new LibreOfficeFileConverter({
childProcessOptions: {
timeout: 60 * 1000,
},
});
const inputBuffer = await readFile(inputPath);
const outputStream = await libreOfficeFileConverter.convert({
buffer: inputBuffer,
format: 'pdf',
input: 'buffer',
output: 'stream',
})
};
run();
From file to Buffer
.
import { readFile } from 'fs/promises';
import { join } from 'path';
import { LibreOfficeFileConverter } from 'libreoffice-file-converter';
const inputPath = join(__dirname, './resources/example.doc');
const run = async () => {
const libreOfficeFileConverter = new LibreOfficeFileConverter({
childProcessOptions: {
timeout: 60 * 1000,
},
});
const outputBuffer = await libreOfficeFileConverter.convert({
format: 'pdf',
input: 'file',
inputPath,
output: 'buffer',
})
};
run();
From file to file.
import { readFile } from 'fs/promises';
import { join } from 'path';
import { LibreOfficeFileConverter } from 'libreoffice-file-converter';
const inputPath = join(__dirname, './resources/example.doc');
const outputPath = join(__dirname, './resources/output/result.pdf');
const run = async () => {
const libreOfficeFileConverter = new LibreOfficeFileConverter({
childProcessOptions: {
timeout: 60 * 1000,
},
});
await libreOfficeFileConverter.convert({
format: 'pdf',
input: 'file',
inputPath,
output: 'file',
outputPath,
})
};
run();
From file to Readable
stream.
import { readFile } from 'fs/promises';
import { join } from 'path';
import { LibreOfficeFileConverter } from 'libreoffice-file-converter';
const inputPath = join(__dirname, './resources/example.doc');
const run = async () => {
const libreOfficeFileConverter = new LibreOfficeFileConverter({
childProcessOptions: {
timeout: 60 * 1000,
},
});
const outputStream = await libreOfficeFileConverter.convert({
format: 'pdf',
input: 'file',
inputPath,
output: 'stream',
})
};
run();
From Readable
stream to Buffer
.
import { createReadStream } from 'fs';
import { join } from 'path';
import { LibreOfficeFileConverter } from 'libreoffice-file-converter';
const inputPath = join(__dirname, './resources/example.doc');
const run = async () => {
const libreOfficeFileConverter = new LibreOfficeFileConverter({
childProcessOptions: {
timeout: 60 * 1000,
},
});
const inputStream = createReadStream(inputPath);
const outputBuffer = await libreOfficeFileConverter.convert({
format: 'pdf',
input: 'stream',
output: 'buffer',
stream: inputStream,
})
};
run();
From Readable
stream to file.
import { createReadStream } from 'fs';
import { join } from 'path';
import { LibreOfficeFileConverter } from 'libreoffice-file-converter';
const inputPath = join(__dirname, './resources/example.doc');
const outputPath = join(__dirname, './resources/output/result.pdf');
const run = async () => {
const libreOfficeFileConverter = new LibreOfficeFileConverter({
childProcessOptions: {
timeout: 60 * 1000,
},
});
const inputStream = createReadStream(inputPath);
await libreOfficeFileConverter.convert({
format: 'pdf',
input: 'stream',
output: 'file',
outputPath,
stream: inputStream,
})
};
run();
From Readable
stream to Readable
stream.
import { createReadStream } from 'fs';
import { join } from 'path';
import { LibreOfficeFileConverter } from 'libreoffice-file-converter';
const inputPath = join(__dirname, './resources/example.doc');
const run = async () => {
const libreOfficeFileConverter = new LibreOfficeFileConverter({
childProcessOptions: {
timeout: 60 * 1000,
},
});
const inputStream = createReadStream(inputPath);
const outputStream = await libreOfficeFileConverter.convert({
format: 'pdf',
input: 'stream',
output: 'stream',
stream: inputStream,
})
};
run();