Масштабирование холста, нарисованного с помощью drawImage - PullRequest
0 голосов
/ 28 марта 2019

Я пытаюсь отобразить ранее созданный холст в 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')
     }
 }
...