Deposit slip: landscape page; strip deposit total combined to one line
This commit is contained in:
@@ -80,12 +80,11 @@ const SL = {
|
|||||||
// Y positions are the TOP anchor; text flows DOWNWARD from there.
|
// Y positions are the TOP anchor; text flows DOWNWARD from there.
|
||||||
stripCenterX: 0.32, // ≈ stripX/2; tune to center text in strip width
|
stripCenterX: 0.32, // ≈ stripX/2; tune to center text in strip width
|
||||||
|
|
||||||
// Order top-to-bottom: DEPOSIT TOTAL label → digits → MICR → TOTAL ITEMS → count
|
// Order top-to-bottom: "DEPOSIT TOTAL $ X.XX" line → MICR → "TOTAL ITEMS" → count
|
||||||
depTotalLabelY: 1.0, // "DEPOSIT TOTAL $" label start
|
depTotalY: 1.0, // combined "DEPOSIT TOTAL $ X.XX" rotated text start
|
||||||
depTotalAmtY: 2.0, // deposit total digits start (each 0.16" apart downward)
|
micrY: 2.5, // MICR starts here, flows ~2.5" downward
|
||||||
micrY: 3.4, // MICR starts here, flows ~2.5" downward
|
checkCountLabelY: 5.5, // "TOTAL ITEMS" label start
|
||||||
checkCountLabelY: 6.1, // "TOTAL ITEMS" label start
|
checkCountValY: 6.5, // check count value start
|
||||||
checkCountValY: 6.9, // check count value start
|
|
||||||
|
|
||||||
// ── Colours ───────────────────────────────────────────────────────────────
|
// ── Colours ───────────────────────────────────────────────────────────────
|
||||||
bgLineColor: '#888888',
|
bgLineColor: '#888888',
|
||||||
@@ -217,10 +216,11 @@ function generateDepositSlip(account, deposit, items) {
|
|||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
const hasMicrFont = fs.existsSync(MICR_FONT_PATH);
|
const hasMicrFont = fs.existsSync(MICR_FONT_PATH);
|
||||||
|
|
||||||
// Letter page — slip sits at (slipX, 0); remaining space is blank for trimming
|
// Landscape letter page (11"×8.5") — slip is drawn portrait in the left 3.375"
|
||||||
|
// and the remaining ~7.6" to the right is blank for trimming.
|
||||||
const doc = new PDFDocument({
|
const doc = new PDFDocument({
|
||||||
size: 'LETTER',
|
size: 'LETTER',
|
||||||
layout: 'portrait',
|
layout: 'landscape',
|
||||||
margins: { top: 0, bottom: 0, left: 0, right: 0 },
|
margins: { top: 0, bottom: 0, left: 0, right: 0 },
|
||||||
autoFirstPage: true,
|
autoFirstPage: true,
|
||||||
});
|
});
|
||||||
@@ -415,17 +415,17 @@ function generateDepositSlip(account, deposit, items) {
|
|||||||
}
|
}
|
||||||
doc.restore();
|
doc.restore();
|
||||||
|
|
||||||
// "DEPOSIT TOTAL $" label
|
// Combined "DEPOSIT TOTAL $ X,XXX.XX" — single rotated text line
|
||||||
|
const fmtDepTotal = depositTotal.toLocaleString('en-US', {
|
||||||
|
minimumFractionDigits: 2, maximumFractionDigits: 2,
|
||||||
|
});
|
||||||
doc.save();
|
doc.save();
|
||||||
doc.translate(SL.stripCenterX * PT, SL.depTotalLabelY * PT);
|
doc.translate(SL.stripCenterX * PT, SL.depTotalY * PT);
|
||||||
doc.rotate(90);
|
doc.rotate(90);
|
||||||
doc.font('Helvetica').fontSize(6).fillColor(SL.bgLabelColor)
|
doc.font('Helvetica-Bold').fontSize(7).fillColor('#000000')
|
||||||
.text('DEPOSIT TOTAL $', 0, 0, { lineBreak: false });
|
.text(`DEPOSIT TOTAL $ ${fmtDepTotal}`, 0, 0, { lineBreak: false });
|
||||||
doc.restore();
|
doc.restore();
|
||||||
|
|
||||||
// Deposit total digits (includes decimal point)
|
|
||||||
drawRotatedDigitAmount(doc, depositTotal, SL.stripCenterX, SL.depTotalAmtY);
|
|
||||||
|
|
||||||
// "TOTAL ITEMS" label
|
// "TOTAL ITEMS" label
|
||||||
doc.save();
|
doc.save();
|
||||||
doc.translate(SL.stripCenterX * PT, SL.checkCountLabelY * PT);
|
doc.translate(SL.stripCenterX * PT, SL.checkCountLabelY * PT);
|
||||||
|
|||||||
Reference in New Issue
Block a user