изображение pdf-lib не показывается - PullRequest
0 голосов
/ 10 марта 2020

Я пытаюсь добавить изображение в pdf, используя pdf-lib (https://github.com/Hopding/pdf-lib). Он работает нормально, когда я делаю:

const { PDFDocument, StandardFonts, rgb } = PDFLib;
async function createPdf() {
    const pdfDoc = await PDFDocument.create();
    const page = pdfDoc.addPage();
    const jpgUrl = '/images/logo.jpg';
    const jpgImageBytes = await fetch(jpgUrl).then((res) => res.arrayBuffer());
    const jpgImage = await pdfDoc.embedJpg(jpgImageBytes);
    page.drawImage(jpgImage, {
        x: 7,
        y: 800,
        width: 196,
        height: 30
    });
}
const pdfBytes = await pdfDoc.save();

Но когда я оборачиваю часть кода в функцию, он не будет отображать изображение:

const { PDFDocument, StandardFonts, rgb } = PDFLib;
async function createPdf() {
    const pdfDoc = await PDFDocument.create();
    const page = pdfDoc.addPage();
    async function image() {
        const jpgUrl = '/images/logo.jpg';
        const jpgImageBytes = await fetch(jpgUrl).then((res) => res.arrayBuffer());
        const jpgImage = await pdfDoc.embedJpg(jpgImageBytes);
        page.drawImage(jpgImage, {
            x: 7,
            y: 800,
            width: 196,
            height: 30
        });
        console.log('done');
    }
    image();
}
const pdfBytes = await pdfDoc.save();

Это не так показывая любые ошибки и распечатки «сделано» в консоли, как и ожидалось. Связано ли это с функциями asyn c (о которых я очень мало знаю)?

1 Ответ

0 голосов
/ 23 марта 2020

Это было довольно просто. Мне просто нужно было использовать 'await' при вызове функции image ().

const { PDFDocument, StandardFonts, rgb } = PDFLib;
async function createPdf() {
    const pdfDoc = await PDFDocument.create();
    const page = pdfDoc.addPage();
    async function image() {
        const jpgUrl = '/images/logo.jpg';
        const jpgImageBytes = await fetch(jpgUrl).then((res) => res.arrayBuffer());
        const jpgImage = await pdfDoc.embedJpg(jpgImageBytes);
        page.drawImage(jpgImage, {
            x: 7,
            y: 800,
            width: 196,
            height: 30
        });
        console.log('done');
    }
    await image();
}
const pdfBytes = await pdfDoc.save();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...