GroupDocs.Parser provides the functionality to generate document page previews by the generatePreview(PreviewOptions) method:
parser.generatePreview(previewOptions)
The PreviewOptions class is used to set requirements and stream callbacks for preview generation. The callbacks are Java interfaces, so in Node.js you implement them with java.newProxy from the java package:
Interface
Method
Description
com.groupdocs.parser.options.ICreatePageStream
createPageStream(pageNumber)
Returns a java.io.OutputStream for the page preview. Required.
com.groupdocs.parser.options.IReleasePageStream
releasePageStream(pageNumber, stream)
Called when the page preview is written. Optional.
com.groupdocs.parser.options.IPreviewPageRender
previewPageRender(pageRenderInfo)
Receives PageRenderInfo before a page is rendered. Optional.
PreviewOptions also has setPreviewFormat (PreviewFormats.Png, PreviewFormats.Jpeg, PreviewFormats.Bmp), setDpi, setWidth, setHeight and setPageNumbers.
Here are the steps to generate document page previews:
Prepare the PreviewOptions object;
Instantiate the Parser object;
Call the generatePreview(PreviewOptions) method.
The following example shows how to generate document page previews:
constfs=require('fs');constpath=require('path');constjava=require('java');constgroupdocs=require('@groupdocs/groupdocs.parser');constFileOutputStream=java.import('java.io.FileOutputStream');constoutputDir='previews';fs.mkdirSync(outputDir,{recursive:true});// Create an instance of Parser class to generate document page previews
constparser=newgroupdocs.Parser('SampleWithToc.pdf');try{// Implement ICreatePageStream: return a Java output stream for each page
constcreatePageStream=java.newProxy('com.groupdocs.parser.options.ICreatePageStream',{createPageStream:(pageNumber)=>newFileOutputStream(path.join(outputDir,`preview_${pageNumber}.png`)),});// Create preview options
constpreviewOptions=newgroupdocs.PreviewOptions(createPageStream);// Set PNG as an output image format
previewOptions.setPreviewFormat(groupdocs.PreviewFormats.Png);// Set DPI for the output image
previewOptions.setDpi(72);// Generate previews
parser.generatePreview(previewOptions);}finally{parser.close();}process.exit(0);
For the three-page SampleWithToc.pdf this creates preview_1.png, preview_2.png and preview_3.png (612 x 792 pixels at 72 DPI).
Close page streams
To control when the page stream is closed, pass an IReleasePageStream implementation as the second constructor argument:
// Implement IReleasePageStream: close the stream when the page preview is written
constreleasePageStream=java.newProxy('com.groupdocs.parser.options.IReleasePageStream',{releasePageStream:(pageNumber,stream)=>stream.close(),});// Create preview options with both callbacks
constpreviewOptions=newgroupdocs.PreviewOptions(createPageStream,releasePageStream);
Generate spreadsheet previews
Note
Spreadsheets are rendered by tiles. See the example below.
Here are the steps to generate spreadsheet page previews:
Prepare the PreviewOptions object;
Set the IPreviewPageRender callback to obtain the PageRenderInfo (row and column of each tile);
Instantiate the Parser object;
Call the generatePreview(PreviewOptions) method.
The following example shows how to generate spreadsheet page previews:
constfs=require('fs');constpath=require('path');constjava=require('java');constgroupdocs=require('@groupdocs/groupdocs.parser');constFileOutputStream=java.import('java.io.FileOutputStream');constoutputDir='previews';// Get the output file path. If the render info is set, then tile name is {PageNumber}/{Row}x{Column}.png
functiongetOutputPath(renderInfo,pageNumber){constfileName=renderInfo==null?`preview_${pageNumber}.png`:path.join(`${renderInfo.getPageNumber()}`,`${renderInfo.getRow(pageNumber)}x${renderInfo.getColumn(pageNumber)}.png`);constfilePath=path.join(outputDir,fileName);fs.mkdirSync(path.dirname(filePath),{recursive:true});returnfilePath;}// Create an instance of Parser class to generate spreadsheet page previews
constparser=newgroupdocs.Parser('sample.xlsx');try{letrenderInfo=null;// Create preview options
constpreviewOptions=newgroupdocs.PreviewOptions(java.newProxy('com.groupdocs.parser.options.ICreatePageStream',{createPageStream:(pageNumber)=>newFileOutputStream(getOutputPath(renderInfo,pageNumber)),}));// Set the callback to obtain the render info
previewOptions.setPreviewPageRender(java.newProxy('com.groupdocs.parser.options.IPreviewPageRender',{previewPageRender:(pageRenderInfo)=>{renderInfo=pageRenderInfo;},}));// Set PNG as an output image format
previewOptions.setPreviewFormat(groupdocs.PreviewFormats.Png);// Set DPI for the output image
previewOptions.setDpi(72);// Generate previews
parser.generatePreview(previewOptions);}finally{parser.close();}process.exit(0);
For sample.xlsx (two worksheets) this creates previews/1/0x0.png and previews/2/0x0.png.
More resources
Free online document parser App
Along with the full-featured library we provide simple but powerful free Apps.
You are welcome to parse documents and extract data from PDF, DOC, DOCX, PPT, PPTX, XLS, XLSX, Emails and more with our Free Online Document Parser App.
Was this page helpful?
Any additional feedback you'd like to share with us?
Please tell us how we can improve this page.
Thank you for your feedback!
We value your opinion. Your feedback will help us improve our documentation.
On this page
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.