Как я могу создать файл PDF без использования библиотеки? - PullRequest
0 голосов
/ 10 марта 2020

Я пытаюсь создать PDF из JS объекта без использования библиотеки, мой код выглядит следующим образом:

var downloadLink = document.createElement('a');
var blob = new Blob(["Random text"], {type: 'application/pdf'})
console.log(blob)
var url = URL.createObjectURL(blob);
downloadLink.href = url;
downloadLink.download = `${title}.pdf`;

document.body.appendChild(downloadLink);
downloadLink.click();
document.body.removeChild(downloadLink);

Это фактически создает объект PDF, который загружается, но проблема с этот PDF - то, что это не может быть открыто любым читателем PDF, который заставляет меня чувствовать, что я делаю это неправильно. Другой моей альтернативой было использование window.print, но это влечет за собой необходимость нажимать кнопку сохранения, когда появляется диалоговое окно печати. Любая идея о том, как я могу решить это?

Ответы [ 2 ]

0 голосов
/ 12 марта 2020
function genPDF() {
    var doc = new jsPDF();
    doc.text(20,20,'TEST Message!!');
    doc.addPage();
    doc.text(20,20,'TEST Page 2!');
    doc.save('Test.pdf');
}
// decides your pdf layout 

Скачать PDF

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

Документ PDF состоит из нескольких разделов:

  • Однострочный заголовок , идентифицирующий версию спецификации PDF, которой соответствует файл
  • тело , содержащее объекты, составляющие документ, содержащийся в файле
  • A таблица перекрестных ссылок , содержащее информацию о косвенных объектах в файле
  • A трейлер с указанием расположения таблицы перекрестных ссылок и некоторых специальных объектов в теле файла

Следующий код является действительным Hello World документом PDF из этот урок . Полное руководство по Понимание формата файла PDF от Леона Атертона предоставит подробный и простой ответ на все ваши вопросы.

Существует также огромный справочник по портативным форматам документов . от Adobe, если вы действительно хотите понять, как это работает.

Официальная спецификация PDF с 2008 года является нормой ISO, ISO 32000-1; Adobe предоставляет их копию на своем веб-сайте с заменой официальных заголовков ISO: PDF32000_2008.pdf . Между тем (2018) ИСО опубликовала обновленную версию ИСО 32000-2.

Создайте файл .txt, откройте его в своем любимом редакторе и вставьте этот код. Затем измените расширение на .pdf. Вы увидите рабочий PDF-документ.

%PDF-1.4
1 0 obj <</Type /Catalog /Pages 2 0 R>>
endobj
2 0 obj <</Type /Pages /Kids [3 0 R] /Count 1>>
endobj
3 0 obj<</Type /Page /Parent 2 0 R /Resources 4 0 R /MediaBox [0 0 500 800] /Contents 6 0 R>>
endobj
4 0 obj<</Font <</F1 5 0 R>>>>
endobj
5 0 obj<</Type /Font /Subtype /Type1 /BaseFont /Helvetica>>
endobj
6 0 obj
<</Length 44>>
stream
BT /F1 24 Tf 175 720 Td (Hello World!)Tj ET
endstream
endobj
xref
0 7
0000000000 65535 f
0000000009 00000 n
0000000056 00000 n
0000000111 00000 n
0000000212 00000 n
0000000250 00000 n
0000000317 00000 n
trailer <</Size 7/Root 1 0 R>>
startxref
406
%%EOF
...