Я использую jspdf
для создания отчета в формате PDF, содержащего текст и изображения. Чтобы сгенерировать изображение, я ссылаюсь на объект svg
и создаю png, используя saveSvgAsPng . Вот мой фрагмент кода:
function generate_pdf() {
// creating a blank PDF report
var doc = new jsPDF()
doc.text('Hello world!', 10, 15)
// turning d3 viz into an in-memory png uri
var svg_uri = svgAsPngUri(
document.getElementsByTagName("svg")[0],
{scale: 2, backgroundColor: "#FFFFFF"},
).then(function (uri) {
console.log(uri)
doc.addImage(uri, 'PNG', 15, 40);
})
// populating data onto pdf
doc.save('test.pdf')
}
Когда я console.log(uri)
, я получаю ожидаемый кодированный base64 png. Однако, когда я пытаюсь получить доступ к объекту svg_uri
вне функции svgAsPngUri
, мне возвращается ожидающее обещание - поэтому я и являюсь addImage
внутри then
.
Я новичок в JavaScript, и еще больше новичок в promises
, поэтому ищу помощь в понимании того, что я делаю неправильно.
Цель - вывести pdf
, содержащий Hello world!
вместе с png
, сгенерированным из svg
.
Спасибо! Если я могу добавить что-нибудь еще, пожалуйста, дайте мне знать!