first commit
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
const { PDFDocument } = require('pdf-lib');
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
/**
|
||||
* Extracts the first two pages of a PDF and saves them as a new PDF file.
|
||||
* We do this instead of backend image conversion because Node Canvas fails
|
||||
* compilation on Windows 10/Node 24 environments without Visual Studio.
|
||||
* The client will smoothly render this secure 2-page PDF into an image via Canvas.
|
||||
*/
|
||||
async function extractFirstTwoPages(inputPath, outputPath) {
|
||||
try {
|
||||
const existingPdfBytes = fs.readFileSync(inputPath);
|
||||
const pdfDoc = await PDFDocument.load(existingPdfBytes);
|
||||
|
||||
// Create a new document
|
||||
const newPdf = await PDFDocument.create();
|
||||
|
||||
// Determine how many pages to copy (max 2)
|
||||
const pageCount = pdfDoc.getPageCount();
|
||||
const pagesToCopy = Math.min(pageCount, 2);
|
||||
|
||||
const pageIndices = Array.from({ length: pagesToCopy }, (_, i) => i);
|
||||
|
||||
if (pageIndices.length > 0) {
|
||||
const copiedPages = await newPdf.copyPages(pdfDoc, pageIndices);
|
||||
copiedPages.forEach((page) => newPdf.addPage(page));
|
||||
}
|
||||
|
||||
const newPdfBytes = await newPdf.save();
|
||||
fs.writeFileSync(outputPath, newPdfBytes);
|
||||
|
||||
return true;
|
||||
} catch (error) {
|
||||
console.error('Error processing PDF:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
extractFirstTwoPages
|
||||
};
|
||||
Reference in New Issue
Block a user