mirror of
https://github.com/alam00000/bentopdf.git
synced 2026-11-06 08:08:38 +01:00
fix(merge): page labels, retain-labels option, and workflow alignment with cpdf
This commit is contained in:
@@ -3,7 +3,7 @@ import { BaseWorkflowNode } from './base-node';
|
||||
import { pdfSocket } from '../sockets';
|
||||
import type { SocketData } from '../types';
|
||||
import { extractAllPdfs } from '../types';
|
||||
import { mergePdfs } from '../../utils/pdf-operations';
|
||||
import { mergePdfsCpdf } from '../../utils/merge-cpdf';
|
||||
import { loadPdfDocument } from '../../utils/load-pdf-document.js';
|
||||
import { wfError } from '../errors';
|
||||
|
||||
@@ -16,6 +16,10 @@ export class MergeNode extends BaseWorkflowNode {
|
||||
super('Merge PDFs');
|
||||
this.addInput('pdf', new ClassicPreset.Input(pdfSocket, 'PDFs', true));
|
||||
this.addOutput('pdf', new ClassicPreset.Output(pdfSocket, 'Merged PDF'));
|
||||
this.addControl(
|
||||
'retainPageLabels',
|
||||
new ClassicPreset.InputControl('text', { initial: 'false' })
|
||||
);
|
||||
}
|
||||
|
||||
async data(
|
||||
@@ -26,7 +30,17 @@ export class MergeNode extends BaseWorkflowNode {
|
||||
if (allPdfs.length === 0)
|
||||
throw new Error(wfError('noPdfsConnected', { node: 'Merge' }));
|
||||
|
||||
const mergedBytes = await mergePdfs(allPdfs.map((p) => p.bytes));
|
||||
const filesToMerge = allPdfs.map((p, idx) => ({
|
||||
name: p.filename || `input-${idx}.pdf`,
|
||||
data: p.bytes.slice().buffer as ArrayBuffer,
|
||||
}));
|
||||
|
||||
const retainCtrl = this.controls['retainPageLabels'] as
|
||||
| ClassicPreset.InputControl<'text'>
|
||||
| undefined;
|
||||
const retainPageLabels = (retainCtrl?.value ?? 'false') === 'true';
|
||||
|
||||
const mergedBytes = await mergePdfsCpdf(filesToMerge, { retainPageLabels });
|
||||
const mergedDoc = await loadPdfDocument(mergedBytes);
|
||||
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user