mirror of
https://github.com/zen-browser/pdf.js.git
synced 2025-07-08 17:30:09 +02:00
[api-minor] Re-factor the basic textLayer-functionality
This is very old code, and predates e.g. the introduction of JavaScript classes, which creates unnecessarily unwieldy code in the viewer. By introducing a new `TextLayer` class in the API, similar to how e.g. the `AnnotationLayer` looks, we're able to keep most parameters on the class-instance itself. This removes the need to manually track them in the viewer, and simplifies the call-sites. This also removes the `numTextDivs` parameter from the "textlayerrendered" event, since that's only added to support default-viewer functionality that no longer exists. Finally we try, as far as possible, to polyfill the old `renderTextLayer` and `updateTextLayer` functions since they are exposed in the library API. For *simple* invocations of `renderTextLayer` the behaviour should thus be the same, with only a warning printed in the console.
This commit is contained in:
parent
63b66b412c
commit
15b5808eee
9 changed files with 383 additions and 377 deletions
|
@ -13,13 +13,10 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import {
|
||||
renderTextLayer,
|
||||
TextLayerRenderTask,
|
||||
} from "../../src/display/text_layer.js";
|
||||
import { buildGetDocumentParams } from "./test_utils.js";
|
||||
import { getDocument } from "../../src/display/api.js";
|
||||
import { isNodeJS } from "../../src/shared/util.js";
|
||||
import { TextLayer } from "../../src/display/text_layer.js";
|
||||
|
||||
describe("textLayer", function () {
|
||||
it("creates textLayer from ReadableStream", async function () {
|
||||
|
@ -30,18 +27,14 @@ describe("textLayer", function () {
|
|||
const pdfDocument = await loadingTask.promise;
|
||||
const page = await pdfDocument.getPage(1);
|
||||
|
||||
const textContentItemsStr = [];
|
||||
|
||||
const textLayerRenderTask = renderTextLayer({
|
||||
const textLayer = new TextLayer({
|
||||
textContentSource: page.streamTextContent(),
|
||||
container: document.createElement("div"),
|
||||
viewport: page.getViewport({ scale: 1 }),
|
||||
textContentItemsStr,
|
||||
});
|
||||
expect(textLayerRenderTask instanceof TextLayerRenderTask).toEqual(true);
|
||||
await textLayer.render();
|
||||
|
||||
await textLayerRenderTask.promise;
|
||||
expect(textContentItemsStr).toEqual([
|
||||
expect(textLayer.textContentItemsStr).toEqual([
|
||||
"Table Of Content",
|
||||
"",
|
||||
"Chapter 1",
|
||||
|
@ -70,18 +63,14 @@ describe("textLayer", function () {
|
|||
const pdfDocument = await loadingTask.promise;
|
||||
const page = await pdfDocument.getPage(1);
|
||||
|
||||
const textContentItemsStr = [];
|
||||
|
||||
const textLayerRenderTask = renderTextLayer({
|
||||
const textLayer = new TextLayer({
|
||||
textContentSource: await page.getTextContent(),
|
||||
container: document.createElement("div"),
|
||||
viewport: page.getViewport({ scale: 1 }),
|
||||
textContentItemsStr,
|
||||
});
|
||||
expect(textLayerRenderTask instanceof TextLayerRenderTask).toEqual(true);
|
||||
await textLayer.render();
|
||||
|
||||
await textLayerRenderTask.promise;
|
||||
expect(textContentItemsStr).toEqual([
|
||||
expect(textLayer.textContentItemsStr).toEqual([
|
||||
"Table Of Content",
|
||||
"",
|
||||
"Chapter 1",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue