Я пытаюсь отобразить ранее созданный холст в PDF, созданный jsPDF.Существующий холст, как правило, но не всегда, покрывает в pdf более одной страницы по высоте, следовательно, цикл for. Ширина также выходит за пределы доступной ширины в pdf.
Однако, с помощью приведенного ниже кода,он по-прежнему визуализирует растянутые по горизонтали и по вертикали.
Существующий холст выводит в виде:
Я просматривал свой код и drawImage API снова и снова, но не могу понять ошибку.Надеюсь, вы можете помочь.
generate = () => {
const availWidthMm = pageWidth - 30
const availHeighMm = 135
const w = origin.width
const h = origin.height
const wMm = px2mm(w)
const hMm = px2mm(h)
pdf.newPage()
pdf.title('Test')
let generatedPartial = null
// Split generated canvas over multiple pages
for (let partialPageNbr = 0; partialPageNbr < Math.ceil(hMm / availHeighMm); partialPageNbr++) {
if (partialPageNbr > 0) {
pdf.newPage()
}
generatedPartial = document.createElement('canvas')
generatedPartial.width = mm2px(availWidthMm)
generatedPartial.height = mm2px(availHeightMm)
document.body.appendChild(generatedPartial )
const generatedPartialCtx = generatedPartial.getContext('2d')
generatedPartialCtx.drawImage(
origin,
0,
partialPageNbr * generatedPartial.height,
generatedPartial.width,
generatedPartial.height,
0,
0,
generatedPartial.width,
generatedPartial.height
)
// Add generated partial to the page
pdf.addImage(generatedPartial.toDataURL('image/png', 1), 'PNG', 15, 45, 267, 130, `generatedPartial${partialPageNbr}`, 'fast')
}
}