Я не пытаюсь изменить PDF, я просто пытается изменить отображаемый текст
pdf.js выводит текст, который он читает в кучке divs .textLayer > div
, также рисует холст
I читайте здесь, что просмотр и редактирование pdf в браузере практически невозможно, но...
Так как у pdf.js есть API, моя идея - "подключить" к pdf.js и изменить отображаемый текст ( что более чем в моем случае)
Скорее всего, я нашел эту функцию с именем getTextContent(), но нет зарегистрированного AFAICS с обратным вызовом.
Возможно ли это (без возиться с самим pdf.js)? Если да, то как?
EDIT (3)
Этот код напечатает PDF-текст в консоли, но, как исходить из этого, есть тайна для меня.
'use strict';
// In production, the bundled pdf.js shall be used instead of SystemJS.
Promise.all([System.import('pdfjs/display/api'),
System.import('pdfjs/display/global'),
System.import('pdfjs/display/network'),
System.resolve('pdfjs/worker_loader')])
.then(function (modules)
{
var api = modules[0], global = modules[1];
// In production, change this to point to the built `pdf.worker.js` file.
global.PDFJS.workerSrc = modules[3];
// Fetch the PDF document from the URL using promises
let loadingTask = api.getDocument('cv.pdf');
loadingTask.onProgress = function (progressData) {
document.getElementById('progress').innerText = (progressData.loaded / progressData.total);
};
loadingTask.then(function (pdf)
{
// Fetch the page.
pdf.getPage(1).then(function (page)
{
var scale = 1.5;
var viewport = page.getViewport(scale);
// Prepare canvas using PDF page dimensions.
var canvas = document.getElementById('pdf-canvas');
var context = canvas.getContext('2d');
canvas.height = viewport.height;
canvas.width = viewport.width;
// (Debug) Get PDF text content
page.getTextContent().then(function (textContent)
{
console.log(textContent);
});
// Render PDF page into canvas context.
var renderContext =
{
canvasContext: context,
viewport : viewport
};
page.render(renderContext);
});
});
});