Save Each Worksheet to a Different PDF File with JavaScript via C++
Contents
[
Hide
]
Aspose.Cells supports converting XLS files (that contain images, charts, etc.) to PDF documents. Aspose.Cells for JavaScript via C++ can work independently to convert a spreadsheet to PDF, and you do not need to use Aspose.PDF for JavaScript via C++ for the conversion. The conversion does not require the software to create or use any temporary files as the whole process can be done in memory.
Save Each Worksheet to a Different PDF File
If you need to save each worksheet in your template Excel file to generate different PDF files, you can achieve this easily. You may try to set one sheet index to PdfSaveOptions.SheetSet option at a time to render to PDF.
<!DOCTYPE html>
<html>
<head>
<title>Aspose.Cells Example - Export Each Worksheet to PDF</title>
</head>
<body>
<h1>Export Each Worksheet to PDF</h1>
<input type="file" id="fileInput" accept=".xls,.xlsx,.csv" />
<button id="runExample">Run Example</button>
<a id="downloadLink" style="display: none;">Download Result</a>
<div id="result"></div>
</body>
<script src="aspose.cells.js.min.js"></script>
<script type="text/javascript">
const { Workbook, PdfSaveOptions, SheetSet, SaveFormat } = AsposeCells;
AsposeCells.onReady({
license: "/lic/aspose.cells.enc",
fontPath: "/fonts/",
fontList: [
"arial.ttf",
"NotoSansSC-Regular.ttf"
]
}).then(() => {
console.log("Aspose.Cells initialized");
});
document.getElementById('runExample').addEventListener('click', async () => {
const fileInput = document.getElementById('fileInput');
const resultDiv = document.getElementById('result');
const mainDownloadLink = document.getElementById('downloadLink');
resultDiv.innerHTML = '';
mainDownloadLink.style.display = 'none';
mainDownloadLink.href = '';
mainDownloadLink.textContent = '';
if (!fileInput.files.length) {
resultDiv.innerHTML = '<p style="color: red;">Please select an Excel file.</p>';
return;
}
const file = fileInput.files[0];
const arrayBuffer = await file.arrayBuffer();
// Instantiate a new workbook and open the Excel file from the uploaded file
const workbook = new Workbook(new Uint8Array(arrayBuffer));
// Get the count of the worksheets in the workbook
const sheetCount = workbook.worksheets.count;
// Prepare container for links
const linksContainer = document.createElement('div');
for (let j = 0; j < sheetCount; j++) {
const ws = workbook.worksheets.get(j);
// set worksheet to output
const sheetSet = new SheetSet([ws.index]);
const pdfSaveOptions = new PdfSaveOptions();
pdfSaveOptions.sheetSet = sheetSet;
// Save current worksheet as PDF
const outputData = workbook.save(SaveFormat.Pdf, pdfSaveOptions);
const blob = new Blob([outputData], { type: 'application/pdf' });
const fileName = `worksheet-${ws.name}.out.pdf`;
const url = URL.createObjectURL(blob);
const link = document.createElement('a');
link.href = url;
link.download = fileName;
link.textContent = `Download ${fileName}`;
link.style.display = 'block';
linksContainer.appendChild(link);
// For the first generated PDF, also set the main download link element
if (j === 0) {
mainDownloadLink.href = url;
mainDownloadLink.download = fileName;
mainDownloadLink.style.display = 'block';
mainDownloadLink.textContent = `Download ${fileName}`;
}
}
resultDiv.innerHTML = `<p style="color: green;">Generated ${sheetCount} PDF file(s). Use the links below to download them.</p>`;
resultDiv.appendChild(linksContainer);
});
</script>
</html>
If your spreadsheet contains formulas, it is best to call Workbook.calculateFormula() just before rendering the spreadsheet to PDF format. Doing so will ensure that the formula dependent values are recalculated, and the correct values are rendered in the PDF.