#javascript #jquery #jspdf
Вопрос:
Я могу преобразовать свой HTML-код в объект BLOB в формате PDF.
var that = this;
var doc = new jsPDF('p', 'pt', 'a4');
var htmlString = '<div class="container"> <img src="base64image" alt="Image"> <input value="testing"><p> Paragraph</p> <label class="bold" for="fname">Vehicle</label></div>';
doc.fromHTML(htmlString, 20, 20, {}, function (bla) {
doc.save('saveDOC.pdf'); // After downloading PDF i can see image and Label. But i cant see my input values.
},0);
// Below code is to convert HTML into Blob as PDF
var blob = new Blob([doc.output("blob")], {
type: "application/pdf"
});
В приведенном выше коде переменная htmlString
содержит <img/>
, <input/>
, <label/>
. Когда я пытаюсь загрузить объект BLOB в формате PDF, я получаю пустой PDF-файл. Но когда я удаляю <img/>
, <input/>
я могу просматривать содержимое в формате PDF объекта BLOB.
Ниже приведен код для преобразования большого двоичного объекта в формат PDF..
const downloadFile = (blob, fileName) => {
const link = document.createElement('a');
link.href = URL.createObjectURL(blob);
link.download = fileName;
document.body.append(link);
link.click();
link.remove();
setTimeout(() => URL.revokeObjectURL(link.href), 7000);
};
downloadFile(new Blob([doc.output("blob")]), "document.pdf");
Как я могу получить изображения и входные значения в загруженный PDF-файл из объекта BLOB?
Заранее спасибо.
Комментарии:
1. Кто-нибудь, пожалуйста, может мне помочь???
2. @KJ, если я скопирую строку изображения base64, то смогу получить изображение без каких-либо проблем… Но единственная проблема заключается в том, что файл не отображается в формате PDF, загруженном из большого двоичного объекта. и тег <input> , какой будет альтернативный тег, который я могу дать.. потому что, если я добавлю <метку> или <метку><текст>, то полный пользовательский интерфейс будет выглядеть неуклюжим, а CSS также не будет применяться в BLOB …как я могу продолжить? вы можете мне помочь
Ответ №1:
Есть 2 вещи, которые вы должны знать о jsPDF, которые могут быть вашей проблемой:
- Что касается изображений. jsPDF пытается прочитать изображение и вставить его в PDF-файл с помощью JavaScript. Из-за стандартов политики безопасности контента jsPDF не может добавлять изображения, существующие в других доменах. (Если только они этого не разрешат). Веб-страница может вставлять эти изображения на страницу, но JavaScript не имеет доступа к содержимому этих изображений. Это похоже на IFRAME. Вы можете добавить другой веб-сайт, но не можете получить к нему доступ. Подумайте о ком-то, кто будет встраивать YouTube и сможет получить ваше имя пользователя Google. Это невозможно. То же самое касается изображений. Если вы используете данные, как в примере, возможно, есть проблема с тем, что вы закодировали изображение (вы не предоставили свои данные).
- Что касается полей ввода. jsPDF не читает текст во входных данных. Это не часть HTML, это просто текущее состояние (даже если вы поместили его в атрибут value). Также jsPDF не считывает цвет ссылки (если вы посетили или нет…, это просто состояние). Поэтому в вашем случае я предлагаю вам преобразовать все поля ввода в простой текст в том же стиле (вы можете использовать элементы DIV…)