Compare commits

...

1447 Commits

Author SHA1 Message Date
Tim van der Meij
4aca13e77a
Merge pull request #20469 from timvandermeij/bump
Bump the stable version in `pdfjs.config`
2025-11-29 16:00:32 +01:00
Tim van der Meij
0b051a7cad
Bump the stable version in pdfjs.config 2025-11-29 15:57:15 +01:00
Tim van der Meij
f44e5f0e63
Merge pull request #20462 from calixteman/improve_thumbnails
Slightly reduce the memory used by thumbnails
2025-11-29 15:36:46 +01:00
Calixte Denizet
423379e42f
Slightly reduce the memory used by thumbnails
In using a blob instead of a base64 string it's possible to reduce the memory.
And simplify a bit the thumbnails themselves.
2025-11-28 21:52:40 +01:00
Tim van der Meij
a965536485
Merge pull request #20468 from timvandermeij/trusted-publishing
Use OIDC trusted publishing in the GitHub Actions release workflow
2025-11-28 21:13:06 +01:00
Tim van der Meij
8eb747663a
Use OIDC trusted publishing in the GitHub Actions release workflow
This commit updates the release pipeline to use OIDC trusted publishing
now that we have configured it between GitHub Actions and NPM. This
solution allows us to remove the token variable (because there is no
longer a fixed token) and provenance flag (because provenance
attestations are generated by default with this approach); refer to
https://docs.npmjs.com/trusted-publishers for more information.
2025-11-28 21:01:13 +01:00
calixteman
ec5330f78c
Merge pull request #20465 from calixteman/update_char_to_nfkc
Fix the regex string used to find the chars to normalize with NFKC when searching
2025-11-28 16:59:23 +01:00
calixteman
925fc3d8f2
Merge pull request #20467 from calixteman/make_sidebar
Create a sidebar object
2025-11-28 16:27:44 +01:00
Calixte Denizet
45578aa8f5
Create a sidebar object
For now its use is limited to the comment sidebar but it'll be used for the new one
containing the thumbnails.
And make the sidebar more accessible with the keyboard or a screen reader.
2025-11-28 16:22:26 +01:00
Calixte Denizet
eee20cf138
Fix the regex string used to find the chars to normalize with NFKC when searching
ICU has been updated in Firefox (see https://bugzilla.mozilla.org/show_bug.cgi?id=2000225).
The char `0xA7F1` is now alphabetic and can be normalized as a "S".
2025-11-28 16:19:43 +01:00
Tim van der Meij
907cceb4ab
Merge pull request #20460 from calixteman/issue20452
[Editor] Allow to save an edited comment in using CTRL+Enter shortcut.
2025-11-27 21:37:07 +01:00
Tim van der Meij
40b52fa43a
Merge pull request #20458 from calixteman/fix_firstchild
Don't use firstChild/lastChild when getting elements (follow-up of #20447)
2025-11-27 21:34:56 +01:00
Tim van der Meij
08074cf024
Merge pull request #20450 from Mario34/update-dependencies
Include missing `cached-iterable` dev dependency in `package.json`
2025-11-27 21:16:21 +01:00
Tim van der Meij
956aa7efad
Merge pull request #20459 from mozilla/dependabot/github_actions/actions/checkout-6
Bump actions/checkout from 5 to 6
2025-11-27 21:07:51 +01:00
Calixte Denizet
b6fcb523c5
[Editor] Allow to save an edited comment in using CTRL+Enter shortcut. 2025-11-24 20:20:31 +01:00
dependabot[bot]
f6ad1a5610
Bump actions/checkout from 5 to 6
Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-24 12:42:52 +00:00
Mario34
0bad4e938e Include missing cached-iterable dev dependency in package.json
This dependency got introduced during the move to Fluent for
localization (bug 1858715), but it wasn't added to `package.json`
at the time. This worked because other dependencies already
installed it, but we shouldn't rely on that, so this commit
explicitly includes it in `package.json` instead.

Fixes 66982a2a.
2025-11-24 09:24:20 +08:00
calixteman
029cae2ad4 Don't use firstChild/lastChild when getting elements (follow-up of #20447) 2025-11-22 21:10:32 +01:00
calixteman
ec71e4ed65
Merge pull request #20455 from calixteman/bug1998843
[XFA] Set default max value in occur tag to -1 (bug 1998843)
2025-11-22 20:59:04 +01:00
calixteman
d4b6464675
Merge pull request #20456 from calixteman/issue20225
When searching for a group of punctuation signs, only add extraspaces around the group
2025-11-22 15:25:25 +01:00
calixteman
b41959bde8
Merge pull request #20413 from sachiniyer/siyer/fix-annotation-editor-deletion
fix: deleteAnnotationElement takes a full editor object
2025-11-21 22:28:06 +01:00
Sachin Iyer
464dae11ac fix: deleteAnnotationElement takes a full editor object 2025-11-21 11:32:29 -08:00
Calixte Denizet
039b9e4df3 When searching for a group of punctuation signs, only add extraspaces around the group
It fixes #20225.

And only add the extra spaces where it's required depending on their position in the query string.
2025-11-21 18:59:37 +01:00
Calixte Denizet
516aea5562 [XFA] Set default max value in occur tag to -1 (bug 1998843) 2025-11-21 17:53:38 +01:00
calixteman
ddf3a989ca
Merge pull request #20427 from Aditi-1400/issue-20426
Add setter for some FontFaceObject properties
2025-11-20 20:49:30 +01:00
Aditi
7743d11594 Add setter for some FontFaceObject properties 2025-11-20 22:47:57 +05:30
Tim van der Meij
8f0c62990e
Merge pull request #20447 from calixteman/lint_html
Lint and format the HTML in using Prettier
2025-11-18 21:11:52 +01:00
Tim van der Meij
20393c4c57
Merge pull request #20449 from mozilla/dependabot/npm_and_yarn/js-yaml-3.14.2
Bump js-yaml from 3.14.1 to 3.14.2
2025-11-18 20:51:32 +01:00
dependabot[bot]
b392cbf3c4
Bump js-yaml from 3.14.1 to 3.14.2
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 3.14.1 to 3.14.2.
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/3.14.1...3.14.2)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 3.14.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-18 19:46:50 +00:00
Tim van der Meij
1c4c16f18f
Merge pull request #20448 from mozilla/dependabot/npm_and_yarn/multi-12cb0b0c21
Bump glob
2025-11-18 20:45:28 +01:00
dependabot[bot]
447aab7fe6
Bump glob
Bumps  and [glob](https://github.com/isaacs/node-glob). These dependencies needed to be updated together.

Updates `glob` from 10.4.5 to 10.5.0
- [Changelog](https://github.com/isaacs/node-glob/blob/main/changelog.md)
- [Commits](https://github.com/isaacs/node-glob/compare/v10.4.5...v10.5.0)

Updates `glob` from 11.0.3 to 11.1.0
- [Changelog](https://github.com/isaacs/node-glob/blob/main/changelog.md)
- [Commits](https://github.com/isaacs/node-glob/compare/v10.4.5...v10.5.0)

---
updated-dependencies:
- dependency-name: glob
  dependency-version: 10.5.0
  dependency-type: indirect
- dependency-name: glob
  dependency-version: 11.1.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-18 17:43:29 +00:00
Calixte Denizet
b9368b576d Lint and format the HTML in using Prettier
The linter found some issues in viewer.html with </input> which isn't required
and a missing closing div in test/resources/reftest-analyzer.html.
The HTML can now be nicely formatted. In order to not break the build for
mozilla-central, the preprocessor has been fixed in order to take into account
the white spaces at the beginning of a comment line.
And finally, make .prettierrc (which is supposed to be either json or yaml)
itself lintable.
2025-11-18 17:22:50 +01:00
calixteman
264046736d
Merge pull request #20151 from maettuu/reg-test-pr-19184
Add regression test for PR 19184
2025-11-18 09:26:11 +01:00
calixteman
c6b61a34e6
Merge pull request #20436 from calixteman/merge_struct_trees
Merge the structure trees coming from different pdfs (bug 1997379)
2025-11-17 20:10:06 +01:00
calixteman
b20bd9061e
Merge pull request #20405 from calixteman/add_telemetry_tagged_pdf
Add telemetry for tagged pdfs (bug 1997134)
2025-11-17 20:09:40 +01:00
Calixte Denizet
e13a618df3 Merge the structure trees coming from different pdfs (bug 1997379) 2025-11-17 19:56:36 +01:00
Calixte Denizet
50c48cf11b Add telemetry for tagged pdfs (bug 1997134) 2025-11-17 19:47:16 +01:00
Tim van der Meij
603e3a8f3e
Merge pull request #20430 from timvandermeij/freetext-helper
Introduce a helper function to create a freetext editor in the integration tests
2025-11-16 14:50:17 +01:00
Tim van der Meij
f880f4b803
Merge pull request #20429 from timvandermeij/updates
Update dependencies and translations to the most recent versions
2025-11-16 14:49:52 +01:00
calixteman
e7288dca8e
Merge pull request #20431 from calixteman/split_merge_p4
Add a wrapper for the new xref in order to be able to get some values from cloned dictionaries
2025-11-11 21:47:42 +01:00
Tim van der Meij
bc4d90711a
Merge pull request #20432 from calixteman/version
Version entry in the catalog has to be a name and not a string
2025-11-11 20:31:59 +01:00
Calixte Denizet
a98b0b1fb5 Version entry in the catalog has to be a name and not a string 2025-11-09 15:34:57 +01:00
Calixte Denizet
65881f0e21 Add a wrapper for the new xref in order to be able to get some values from cloned dictionaries 2025-11-09 15:28:43 +01:00
calixteman
3676ffde17
Merge pull request #20421 from calixteman/split_merge_p3
Update the named page destinations when some pdf are combined (bug 1997379)
2025-11-09 15:19:05 +01:00
Tim van der Meij
b5b821365e
Introduce a helper function to create a freetext editor in the integration tests
Doing so has a number of advantages:

- it removes code duplication, thereby improving readability;
- it removes hardcoded editor IDs, by using the `getNextEditorId` helper
  function that was previously introduced for the highlight editor
  integration tests, thereby improving readability and reusability;
- it removes potential for intermittent failures by not proceeding until
  the freetext editor is fully created and all assertions pass, which
  didn't happen consistently before because the code wasn't centralized.
2025-11-09 14:32:24 +01:00
Tim van der Meij
398ba0331c
Update translations to the most recent versions 2025-11-08 19:27:15 +01:00
Tim van der Meij
7fc23de26f
Update dependencies to the most recent versions 2025-11-08 19:26:17 +01:00
Calixte Denizet
37f4712f7e Update the named page destinations when some pdf are combined (bug 1997379)
and remove link annotations pointing on a deleted page.
2025-11-07 18:22:19 +01:00
calixteman
57334bd205
Merge pull request #20411 from calixteman/split_merge_p2
Update the page labels tree when a pdf is extracted (bug 1997379)
2025-11-07 17:21:38 +01:00
Calixte Denizet
ad97c5b816 Update the page labels tree when a pdf is extracted (bug 1997379) 2025-11-07 15:59:57 +01:00
calixteman
85ed401b82
Merge pull request #20409 from calixteman/split_merge_p1
Add the possibility to create a pdf from different ones (bug 1997379)
2025-11-07 15:05:52 +01:00
Calixte Denizet
bc87f4e8d6 Add the possibility to create a pdf from different ones (bug 1997379)
For now it's just possible to create a single pdf in selecting some pages in different pdf sources.
The merge is for now pretty basic (it's why it's still a WIP) none of these data are merged for now:
 - the struct trees
 - the page labels
 - the outlines
 - named destinations
For there are 2 new ref tests where some new pdfs are created: one with some extracted pages and an other
one (encrypted) which is just rewritten.
The ref images are generated from the original pdfs in selecting the page we want and the new images are
taken from the generated pdfs.
2025-11-07 14:57:48 +01:00
calixteman
2201777d0f
Merge pull request #20425 from calixteman/only_parese_parenttree_one_time
Create the number tree for the ParentTree only one time
2025-11-07 09:45:17 +01:00
Calixte Denizet
04db38558a Create the number tree for the ParentTree only one time 2025-11-05 17:49:55 +01:00
Tim van der Meij
0a2680bca6
Merge pull request #20414 from timvandermeij/bump
Bump the stable version in `pdfjs.config`
2025-11-02 13:14:45 +01:00
Tim van der Meij
1febf9e30f
Bump the stable version in pdfjs.config 2025-11-02 13:11:00 +01:00
calixteman
2cc809ade2
Merge pull request #20213 from lab-core/pointer-type
[Editor] A new CurrentPointers class to store current pointers used by the editor
2025-11-01 19:17:32 +01:00
Tim van der Meij
6e7a6eb52b
Merge pull request #20408 from calixteman/fix_mml_encoding
Don't set the MathML namespace for attributes in MathML tags (bug 1997343)
2025-11-01 14:58:15 +01:00
Tim van der Meij
c696648826
Merge pull request #20404 from mozilla/revert-20031-telemetry_signature_certificate
Revert "Add some telemetry in order to know what are the certificates used in pdfs (bug 1973573)"
2025-11-01 14:55:07 +01:00
Calixte Denizet
6db23139be Don't set the MathML namespace for attributes in MathML tags (bug 1997343)
And by default a XML file is UTF-8 encoded so correctly decode the embedded file.
2025-10-30 18:37:19 +01:00
calixteman
27bb5fb173
Merge pull request #20406 from gregtatum/text-extractor
Add text extractor as an external service
2025-10-30 17:23:18 +01:00
Greg Tatum
b7708da368 Address review feedback 2025-10-30 09:48:46 -05:00
calixteman
7fc5706e16
Merge pull request #20327 from edoardocavazza/collect-list-table-children
Collect all child nodes of lists and tables in StructTree
2025-10-29 21:09:52 +01:00
Greg Tatum
26360c3e63 Add text extractor for an external service 2025-10-29 13:15:51 -05:00
Edoardo Cavazza
a932a063ea Revert unwanted change 2025-10-29 17:34:34 +01:00
Edoardo Cavazza
17cdd9b1e7 Move tables test to specific struct tree spec file 2025-10-29 17:33:36 +01:00
Edoardo Cavazza
d04832a82f Add test case for empty cells 2025-10-29 17:31:49 +01:00
Edoardo Cavazza
4c22b99df3 Collect all child nodes of lists and tables 2025-10-29 17:30:46 +01:00
calixteman
de7179fd74
Merge pull request #20394 from CoelacanthusHex/feat/pt-astra-serif
Add the font PT Astra Serif as a possible substitution for Times New Roman
2025-10-29 16:30:34 +01:00
calixteman
aeceee1df3
Revert "Add some telemetry in order to know what are the certificates used in pdfs (bug 1973573)" 2025-10-29 15:41:34 +01:00
calixteman
4a660967bd
Merge pull request #20396 from timvandermeij/updates
Update dependencies and translations to the most recent versions
2025-10-29 14:25:37 +01:00
Coelacanthus
6590063614
Add the font PT Astra Serif as a possible substitution for Times New Roman
Metric-compatible font with Times New Roman created by ParaType, based on
their serif font PT Serif, released under OFL-1.1 license.

https://www.paratype.com/fonts/pt/pt-astra-serif

Signed-off-by: Coelacanthus <uwu@coelacanthus.name>
2025-10-29 17:15:31 +08:00
Tim van der Meij
3d175f2f48
Merge pull request #20400 from mozilla/dependabot/github_actions/actions/upload-artifact-5
Bump actions/upload-artifact from 4 to 5
2025-10-28 19:57:39 +01:00
dependabot[bot]
deb74b9062
Bump actions/upload-artifact from 4 to 5
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 5.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-27 13:01:42 +00:00
Tim van der Meij
982e7ea531
Update translations to the most recent versions 2025-10-26 16:42:41 +01:00
Tim van der Meij
1f7d3974e1
Upgrade eslint-plugin-unicorn to version 62.0.0
This is a major version bump, but the changelog at
https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v62.0.0
doesn't indicate any breaking changes that should impact us.
2025-10-26 16:41:13 +01:00
Tim van der Meij
cbd2b3d426
Update dependencies to the most recent versions 2025-10-26 16:40:07 +01:00
calixteman
520363b350
Merge pull request #20384 from calixteman/bug1937438
Make MathML elements visible in the struct tree (bug 1937438)
2025-10-23 17:55:42 +02:00
Calixte Denizet
e5a62c8d06 Make MathML elements visible in the struct tree (bug 1937438)
It'll help to make math equations "visible" for screen readers.
MS Office has a specific way to add some MathML code to struc tree leaf
and this patch handles it.
2025-10-23 16:29:01 +02:00
calixteman
f6317ddbbb
Merge pull request #20389 from calixteman/bug1995579
[Editor] Make sure the left (resp. right) corner of the popup is visible when in LTR (resp. RTL) (bug 1995579)
2025-10-23 09:01:50 +02:00
calixteman
638861008f
Merge pull request #20388 from calixteman/bug1995705
[Editor] Avoid to have several Undo entries in the context menu (bug 1995705)
2025-10-23 09:01:19 +02:00
calixteman
1b5ecd36e4
Merge pull request #20387 from calixteman/bug1995721
[Editor] Fix the css of the link in the comment sidebar (bug 1995721)
2025-10-23 09:00:48 +02:00
calixteman
64f6fb9049
Merge pull request #20386 from calixteman/bug1995766
[Editor] Fix the css of the button to close the comment sidebar (bug 1995766)
2025-10-23 09:00:21 +02:00
Calixte Denizet
cb36dc28a7 [Editor] Make sure the left (resp. right) corner of the popup is visible when in LTR (resp. RTL) (bug 1995579) 2025-10-22 22:47:20 +02:00
Calixte Denizet
19cbdba434 [Editor] Avoid to have several Undo entries in the context menu (bug 1995705) 2025-10-22 19:45:52 +02:00
Calixte Denizet
ad9bcabee3 [Editor] Fix the css of the link in the comment sidebar (bug 1995721) 2025-10-22 16:18:37 +02:00
Calixte Denizet
abfa1495d5 [Editor] Fix the css of the button to close the comment sidebar (bug 1995766) 2025-10-22 16:05:26 +02:00
calixteman
1a8689b9be
Merge pull request #20340 from Aditi-1400/serialize-pattern-ab
Serialize pattern data into ArrayBuffer
2025-10-22 11:05:22 +02:00
legraina
a932804fb5
A new CurrentPointers class to store current pointers used by the editor
Move current pointer field of DrawingEditor to CurrentPointer class in tools.js: The pointer types fields have been moved to a CurrentPointer object in tools.js. This object is used by eraser.js and ink.js.
Only reset pointer type when user select a new mode: Clear the pointer type when changing mode, instead of at the end of the session. It seems more stable, as the method is not called this way when the user changes pages. Also, clear the pointer type when the mode is changed by an event (the user changes the editor type), otherwise, the same pointer type is kept (the document is changed for example)
2025-10-21 17:00:08 -04:00
Tim van der Meij
a6934b478f
Merge pull request #20381 from mozilla/dependabot/github_actions/actions/setup-node-6
Bump actions/setup-node from 5 to 6
2025-10-21 20:22:31 +02:00
dependabot[bot]
6268f930ca
Bump actions/setup-node from 5 to 6
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 5 to 6.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-20 12:57:45 +00:00
calixteman
9f397a632c
Merge pull request #20378 from timvandermeij/integration-tests-aboutstacks
Don't use the `aboutstacks.pdf` file in the integration tests
2025-10-19 20:40:10 +02:00
calixteman
a40df9a5be
Merge pull request #20380 from timvandermeij/integration-tests-tweak-viewer-scroll
Tweak the "scroll into view" viewer integration test
2025-10-19 20:37:30 +02:00
calixteman
205fe258f2
Merge pull request #20355 from calixteman/highlight_span
Add a highlightSpan function in order to simplify a bit the integration tests
2025-10-19 20:35:52 +02:00
Calixte Denizet
9205305dbb Add a highlightSpan function in order to simplify a bit the integration tests 2025-10-19 19:37:41 +02:00
Tim van der Meij
4fd3bad67f
Tweak the "scroll into view" viewer integration test
On GitHub Actions this test could fail with `Expected 1.3125 to be less
than 1` due to slight differences in the decimals of the `rect.y` value.
However, for this check we're only really interested in full pixels, so
this commit rounds the value up to the next integer to not be affected
by small decimal differences so the test passes on GitHub Actions too.
2025-10-19 17:33:11 +02:00
Tim van der Meij
9ab4de5c04
Don't use the aboutstacks.pdf file in the integration tests
For the integration tests we prefer non-linked test cases because those
PDF files are directly checked into the Git repository and thus don't
need a separate download step that linked test cases do.

However, for the freetext and ink integration tests we currently use
`aboutstacks.pdf` which is a linked test case. Fortunately we don't need
to use it because for most tests we don't actually use any properties of
it: we only create editors on top of the canvas, but for that any PDF
file works, so we can simply use the non-linked `empty.pdf` file instead.

The only exception is the "aria-owns" test that needs a line of text from
the PDF file, so we move that particular test to a dedicated `describe`
block and adapt it to use the non-linked `attachment.pdf` file that just
contains a single line of text that can be used for this purpose.

The changes combined make 12 more integration tests run out-of-the-box
after a Git clone, which also simplifies running on GitHub Actions.
2025-10-19 13:05:46 +02:00
Tim van der Meij
b87c999815
Merge pull request #20379 from calixteman/fix_after_20373
Fix stream use when getting the text (follow-up of #20373)
2025-10-19 13:04:13 +02:00
Calixte Denizet
199b3d04df Fix stream use when getting the text (follow-up of #20373) 2025-10-18 22:58:27 +02:00
calixteman
b0e8c39f31
Merge pull request #20373 from calixteman/get_original_stream
Use stream for whatever substrem in stream classes
2025-10-18 14:53:49 +02:00
Tim van der Meij
b2810513c9
Merge pull request #20377 from calixteman/fix_integration_test1
[Editor] Fix integration test after #20372
2025-10-18 13:43:25 +02:00
Calixte Denizet
05f368056d Use stream for whatever substrem in stream classes
and add a method in order to get the original stream.
When writing an existing stream it'll help to have the original one instead of the filtered one.
2025-10-17 22:26:05 +02:00
Tim van der Meij
bd0bf03a68
Merge pull request #20375 from calixteman/fix_color_copy_paste
[Editor] Make sure the color picker has the right color when pasting an editor
2025-10-17 21:05:44 +02:00
Calixte Denizet
c2535b32fe [Editor] Fix integration test after #20372 2025-10-17 20:44:02 +02:00
Tim van der Meij
bc9d34b45c
Merge pull request #20374 from calixteman/bug1995028
[Editor] FreeText annotations aren't supposed to have an attached popup so disable commenting for them (bug 1995028)
2025-10-17 20:40:53 +02:00
Calixte Denizet
97fec3ab81 [Editor] Make sure the color picker has the right color when pasting an editor 2025-10-17 19:37:05 +02:00
Calixte Denizet
18a7a82c29 [Editor] FreeText annotations aren't supposed to have an attached popup so disable commenting for them (bug 1995028) 2025-10-17 18:33:15 +02:00
calixteman
928a758811
Merge pull request #20372 from calixteman/bug1994958
[Editor] Fix the tooltip of the comment button when in the editor toolbar (bug 1994958)
2025-10-17 16:20:30 +02:00
Calixte Denizet
54ffd860ec [Editor] Fix the tooltip of the comment button when in the editor toolbar (bug 1994958) 2025-10-17 15:47:55 +02:00
Tim van der Meij
1c1becf60b
Merge pull request #20369 from calixteman/bug1994738
[Editor] Correctly focus the annotation once the comment has been removed in the annotation layer (bug 1994738)
2025-10-16 20:43:55 +02:00
Tim van der Meij
455e89a295
Merge pull request #20367 from calixteman/bin_format_font_path
Use a binary format for the glyph paths
2025-10-16 20:39:29 +02:00
Calixte Denizet
fd3f7528b6 [Editor] Correctly focus the annotation once the comment has been removed in the annotation layer (bug 1994738) 2025-10-16 16:12:36 +02:00
Calixte Denizet
bb2a1126e6 Use a binary format for the glyph paths
We used a SVG string which can be pass to the Path2D ctor but it's a bit slower than
building the path step by step.
Having numerical data instead of a string will help the font data serialization.
2025-10-16 15:52:51 +02:00
calixteman
745e42701f
Merge pull request #20361 from nicolo-ribaudo/reset-setTextMatrix
Reset `sameLineText` dependencies data on `setTextMatrix`
2025-10-16 09:00:46 +02:00
calixteman
238694891c
Merge pull request #20356 from timvandermeij/updates
Update dependencies and translations to the most recent versions
2025-10-16 08:17:41 +02:00
calixteman
79a7396583
Merge pull request #20363 from timvandermeij/python-3.14
Use Python 3.14 in the GitHub workflows
2025-10-16 08:16:06 +02:00
Nicolò Ribaudo
d79651e797
Reset sameLineText dependencies data on setTextMatrix
The position of the text rendered by `showText` is affected
incrementally by the preceding `showText` operations "on the same line".
For this reason, we keep track of all of them (with their dependencies)
in `sameLineText`.

`sameLineText` can be reset whenever we explicitly position the text
somewhere else. We were previously only doing it for `moveText`, and
this patch updates the code to also do it on `setTextMatrix` (which
resets `this.current.x/y` in `CanvasGraphics` to 0).

The complexity of subsequent `sameLineText` operations dependency
tracking grows quadratically with the number of operations on the same
line, so this patch fixes the performance problem when there are whole
pages of text that only use `setTextMatrix` and not `moveText`.
2025-10-15 17:56:30 +02:00
Tim van der Meij
0528885029
Use Python 3.14 in the GitHub workflows
Python 3.14 is the current stable version, released on October 7th. The
dependencies we use also support Python 3.14 now, most importantly
`fonttools` for which the OS-specific builds have been published (see
the `cp314` wheels on https://pypi.org/project/fonttools/#files).
2025-10-14 21:48:21 +02:00
Tim van der Meij
6eef518883
Update translations to the most recent versions 2025-10-14 20:26:53 +02:00
Tim van der Meij
6bd5c7cdb3
Update dependencies to the most recent versions 2025-10-14 20:26:50 +02:00
Tim van der Meij
3eca60735b
Merge pull request #20358 from calixteman/intersector
Very slightly improve intersector performance
2025-10-14 20:25:40 +02:00
Tim van der Meij
30c04550c8
Merge pull request #20357 from mozilla/dependabot/github_actions/github/codeql-action-4
Bump github/codeql-action from 3 to 4
2025-10-14 20:21:13 +02:00
Calixte Denizet
aab521327b Very slightly improve intersector performance
It just avoid useless computations.
2025-10-13 14:55:44 +02:00
dependabot[bot]
a3b5fcfa9d
Bump github/codeql-action from 3 to 4
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3 to 4.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v3...v4)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-13 12:41:18 +00:00
Aditi
fa631806bf Serialize pattern data into ArrayBuffer
Follow up on https://github.com/mozilla/pdf.js/pull/20197,
This serializes pattern data into an ArrayBuffer which is
then transferred from the worker to the main thread.

It sets up the stage for us to eventually switch to a
SharedArrayBuffer in the future.
2025-10-11 01:58:07 +05:30
calixteman
30fdf16071
Merge pull request #20354 from Aditi-1400/use-enum
Use enums instead of string for mesh shading figure type
2025-10-10 18:49:50 +02:00
calixteman
0d8a300777
Merge pull request #20353 from calixteman/improve_intersector
[Annotation] Improve the performance of the code for getting glyphs which belongs to annotations bounding boxes (bug 1987914)
2025-10-10 13:31:03 +02:00
Calixte Denizet
c4d436764c [Annotation] Improve the performance of the code for getting glyphs which belongs to annotations bounding boxes (bug 1987914)
Instead of looking at every bbox, we use a grid (64x64) where each cell of the grid is associated with the bboxes
touching it.
In order to get the potential bboxes containing a point, we just have to compute the number of the cell containing
it and in using the associated described above, we can quickly know if the point is contained.
With the pdf in the mentioned bug, it's ~20 times faster.
2025-10-10 13:28:18 +02:00
calixteman
c8d8f9fbb4
Merge pull request #20352 from calixteman/improve_struct_tree_parser
Improve performance of the struct tree build (bug 1987914)
2025-10-10 13:27:11 +02:00
Aditi
e8d08c941c Use enums instead of string for mesh shading figure type 2025-10-10 04:21:03 +05:30
Tim van der Meij
0fedfc9ceb
Merge pull request #20351 from calixteman/avoid_null
[Editor] Avoid to have a null button in the DOM when there's no comment manager
2025-10-09 20:57:20 +02:00
calixteman
16630b61bd
Merge pull request #20350 from calixteman/refactor_annotation_layer_a11y
[Annotation] Use the annotations rect in order to fix the order in the DOM (bug 1987914)
2025-10-09 20:53:08 +02:00
Calixte Denizet
f5a6dd4164 [Annotation] Use the annotations rect in order to fix the order in the DOM (bug 1987914)
It's just a partial fix for bug 1987914 but the time spent to add the annotations in the DOM
is divided by 5.
2025-10-09 17:43:49 +02:00
Calixte Denizet
9797dc0eb4 Improve performance of the struct tree build (bug 1987914)
For the pdf in bug 1987914, the overall time spent in `addTopLevelNode` is dropping from ~6s to ~70ms.
2025-10-09 16:08:56 +02:00
Calixte Denizet
16d0077387 [Editor] Avoid to have a null button in the DOM when there's no comment manager 2025-10-09 09:25:43 +02:00
calixteman
8ba18075f2
Merge pull request #20344 from calixteman/bug1992770
[Editor] Make sure that annotation positions in the DOM respect the visual order (bug 1992770)
2025-10-08 16:55:01 +02:00
calixteman
152324fdbd
Merge pull request #20347 from calixteman/bug1990826
[Editor] Remove the role radio for the editing buttons (bug 1990826)
2025-10-08 15:15:51 +02:00
Calixte Denizet
41dea1e38b [Editor] Make sure that annotation positions in the DOM respect the visual order (bug 1992770) 2025-10-08 15:11:09 +02:00
Calixte Denizet
2d759a5f4b [Editor] Remove the role radio for the editing buttons (bug 1990826) 2025-10-08 14:45:28 +02:00
calixteman
d83cbb28a9
Merge pull request #20341 from calixteman/bug1992868
[Editor] Make sure all editors are focusable with the keyboard (bug 1992868)
2025-10-07 22:34:10 +02:00
calixteman
262741634f
Merge pull request #20343 from calixteman/bug1992832
[Editor] Make sure the editor is focused after the comment has been deleted (bug 1992832)
2025-10-07 22:33:04 +02:00
Calixte Denizet
76e0de6c08 [Editor] Make sure the editor is focused after the comment has been deleted (bug 1992832) 2025-10-07 21:31:09 +02:00
Calixte Denizet
5c28346abc [Editor] Make sure all editors are focusable with the keyboard (bug 1992868) 2025-10-07 21:15:26 +02:00
Tim van der Meij
1df2ee68b7
Merge pull request #20342 from calixteman/bug1992987
[Editor] Make sure that comment stuff is removed when an editor is deleted (bug 1992987)
2025-10-07 20:55:53 +02:00
Calixte Denizet
be987f2fbf [Editor] Make sure that comment stuff is removed when an editor is deleted (bug 1992987) 2025-10-07 19:09:48 +02:00
Tim van der Meij
f4104326f3
Merge pull request #20338 from calixteman/test_date_tz
Add a test for PR #20320
2025-10-05 20:24:02 +02:00
calixteman
7f92a6e2be
Merge pull request #20335 from timvandermeij/setDims
[Editor] Remove obsolete arguments for `setDims` calls in the highlight code
2025-10-05 19:43:07 +02:00
calixteman
66763b33a4
Merge pull request #20337 from timvandermeij/updates
Update dependencies and translations to the most recent versions
2025-10-05 19:41:43 +02:00
Calixte Denizet
25ce14042f Add a test for PR #20320 2025-10-05 19:38:37 +02:00
Tim van der Meij
44c498549c
Merge pull request #20339 from timvandermeij/bump
Bump the stable version in `pdfjs.config`
2025-10-05 19:07:21 +02:00
Tim van der Meij
66bf335a6c
Bump the stable version in pdfjs.config 2025-10-05 19:04:33 +02:00
Tim van der Meij
b9d9523871
Update translations to the most recent versions 2025-10-05 14:41:45 +02:00
Tim van der Meij
4f50eacdfc
Update dependencies to the most recent versions 2025-10-05 14:41:05 +02:00
Tim van der Meij
68ed5be9ac
[Editor] Remove obsolete arguments for setDims calls in the highlight code
The `width` and `height` arguments for `setDims` have been removed in
PR #20285, but for two calls in the highlight code they remained. This
commit removes them as they are no longer used in the method itself.

Fixes 0722faa9.
2025-10-05 13:52:09 +02:00
calixteman
f56dc86014
Merge pull request #20333 from calixteman/issue20302
Fix incremental saving with hybrid references
2025-10-04 20:31:09 +02:00
Calixte Denizet
19ff148163 Fix incremental saving with hybrid references
This patch removes some previous fixes which are now likely fixed by #17636.

Fixes #20302.
2025-10-04 18:31:55 +02:00
Tim van der Meij
6c3036836f
Merge pull request #20301 from mozilla/dependabot/npm_and_yarn/tar-fs-3.1.1
Bump tar-fs from 3.1.0 to 3.1.1
2025-10-04 14:59:34 +02:00
Tim van der Meij
d27cd6a4a1
Merge pull request #20334 from calixteman/issue20319
Only apply word spacing when there is a 0x20 in the text chunk
2025-10-04 14:47:30 +02:00
Calixte Denizet
4d15bfec0d Only apply word spacing when there is a 0x20 in the text chunk
Fixes #20319.
2025-10-03 22:18:02 +02:00
calixteman
4e7db4f59c
Merge pull request #20332 from calixteman/bug1992385
[Editor] Slightly move the resizer in the sidebar comment in order to make it easier to use (bug 1992385)
2025-10-03 18:36:52 +02:00
Calixte Denizet
3ecefa5e0c [Editor] Slightly move the resizer in the sidebar comment in order to make it easier to use (bug 1992385)
And highlight the resizer when hovering it.
2025-10-03 17:07:42 +02:00
calixteman
e1de28c866
Merge pull request #20328 from calixteman/fix_dialog_position
[Editor] Make sure the comment dialog always have relative coordinates between 0% and 100%
2025-10-03 09:17:09 +02:00
calixteman
af542a84cc
Merge pull request #20329 from calixteman/fix_annotation_layer_driver
Fix the creation of the annotation layer in the ref tests
2025-10-02 22:04:10 +02:00
Calixte Denizet
17993a0c5d Fix the creation of the annotation layer in the ref tests 2025-10-02 20:27:29 +02:00
Calixte Denizet
2aef871d5d [Editor] Make sure the comment dialog always have relative coordinates between 0% and 100%
This way, when the window is resized, the dialog stay visible.
2025-10-02 18:55:55 +02:00
calixteman
3234912c86
Merge pull request #20224 from james-atticus/improve-serif-fallback-font-name-matching
Improve serif fallback font name matching
2025-10-01 19:58:13 +02:00
calixteman
9d917b2896
Merge pull request #20323 from calixteman/bug1991482
Increase the rendering quality of the detail view (bug 1991482)
2025-10-01 19:29:17 +02:00
Calixte Denizet
91e2f6c400 Increase the rendering quality of the detail view (bug 1991482)
But keep a lower quality when enableOptimizedPartialRendering is true because we need to compensate the time
used to compute the bboxes and since subsequent rendering are faster it's more acceptable to see
a lower quality image for few tenths of seconds.
2025-10-01 16:40:41 +02:00
calixteman
7fa50712c9
Merge pull request #20322 from calixteman/bug1990491
[Editor] Add the possibility to unselect a comment from the sidebar
2025-10-01 15:24:03 +02:00
Calixte Denizet
bb556dcb5c [Editor] Add the possibility to unselect a comment from the sidebar 2025-10-01 14:36:12 +02:00
calixteman
042e821bec
Merge pull request #20320 from calixteman/bug1991584
[Annotation] Fix some timezone issues when getting a date from the date picker (bug 1991584)
2025-10-01 00:41:17 -11:00
calixteman
cd66ecf3d2
Merge pull request #20318 from calixteman/fix_editorStats
[Editor] Avoid an error when getting the editors telemetry data
2025-10-01 00:40:35 -11:00
calixteman
d18289bccb
Merge pull request #20321 from calixteman/bug1989420
[Editor] Add a fake annotation (in the annotation layer) associated with an editor in order to be able to show the comment button (bug 1989420)
2025-10-01 00:40:13 -11:00
Calixte Denizet
12066af578 [Editor] Add a fake annotation (in the annotation layer) associated with an editor in order to be able to show the comment button (bug 1989420) 2025-10-01 09:08:57 +02:00
Calixte Denizet
7b9cde1daf [Annotation] Fix some timezone issues when getting a date from the date picker (bug 1991584) 2025-09-30 11:07:31 +02:00
Calixte Denizet
678aec9890 [Editor] Avoid an error when getting the editors telemetry data 2025-09-29 16:41:15 +02:00
calixteman
ec4f616d21
Merge pull request #20314 from calixteman/rm_useless_sidebar_css
[Editor] Remove useless sidebar css
2025-09-27 14:10:57 +02:00
Calixte Denizet
7041459fc0 [Editor] Remove useless sidebar css 2025-09-26 22:32:54 +02:00
calixteman
e3a5f61234
Merge pull request #20313 from calixteman/bug1991172
[Editor] Add some telemetry for the commenting feature (bug 1991172)
2025-09-26 21:07:01 +02:00
Calixte Denizet
02ddf277ab [Editor] Add some telemetry for the commenting feature (bug 1991172) 2025-09-26 21:04:09 +02:00
calixteman
f64ece2a97
Merge pull request #20312 from calixteman/bug1991029
[Annotation] In reading mode with new commment stuff enabled, use the comment popup for annotations without a popup but with some contents (bug 1991029)
2025-09-26 20:26:40 +02:00
Calixte Denizet
7fc7b79cd0 [Annotation] In reading mode with new commment stuff enabled, use the comment popup for annotations without a popup but with some contents (bug 1991029) 2025-09-26 18:24:55 +02:00
calixteman
91384738f8
Merge pull request #20311 from calixteman/fix_focus_comment_button
[Editor] Give the focus to the comment button after editing in reading mode
2025-09-26 18:24:32 +02:00
Calixte Denizet
f547e834e1 [Editor] Give the focus to the comment button after editing in reading mode 2025-09-26 17:18:37 +02:00
calixteman
d5fb95cda1
Merge pull request #20309 from calixteman/update_deps
Update dependencies
2025-09-26 14:02:50 +02:00
calixteman
28fb4f0f47
Merge pull request #20310 from calixteman/bug1990762
[Editor] Show the comments in the sidebar in the chronological order,newest to oldest (bug 1990762)
2025-09-26 11:09:27 +02:00
Calixte Denizet
f854770806 [Editor] Show the comments in the sidebar in the chronological order, newest to oldest (bug 1990762) 2025-09-26 10:10:43 +02:00
calixteman
101fa6201c
Merge pull request #20308 from calixteman/bug1990454
[Editor] Fix the URL for the 'Learn more' link in the comment sidebar (bug 1990454)
2025-09-26 09:25:00 +02:00
Calixte Denizet
893de3e754 Update dependencies 2025-09-26 09:23:17 +02:00
calixteman
7051fd0215
Merge pull request #20307 from calixteman/bug1990872
[Editor] Make sure the selected editor is correctly focused after switching editing mode (bug 1990872)
2025-09-26 09:17:48 +02:00
Calixte Denizet
5f832757bd [Editor] Fix the URL for the 'Learn more' link in the comment sidebar (bug 1990454) 2025-09-26 09:16:36 +02:00
Calixte Denizet
888df7c319 [Editor] Make sure the selected editor is correctly focused after switching editing mode (bug 1990872) 2025-09-25 22:42:32 +02:00
calixteman
a4f072f3df
Merge pull request #20304 from calixteman/bug1990820
[Editor] Move the focus to the comment button once editing is done (bug 1990820)
2025-09-25 21:07:30 +02:00
Calixte Denizet
442932f0b3 [Editor] Move the focus to the comment button once editing is done (bug 1990820) 2025-09-25 20:17:52 +02:00
calixteman
37c79c3837
Merge pull request #20305 from calixteman/bug1990813
[Editor] Add a title to the comment buttons (bug 1990813)
2025-09-25 20:16:57 +02:00
Calixte Denizet
90e56b706e [Editor] Add a title to the comment buttons (bug 1990813) 2025-09-25 18:47:49 +02:00
calixteman
007148e2c5
Merge pull request #20303 from calixteman/bug1990544
[Editor] Make the comment sidebar resizable (bug 1990544)
2025-09-25 16:27:24 +02:00
Calixte Denizet
a372294ea3 [Editor] Make the comment sidebar resizable (bug 1990544) 2025-09-25 15:29:41 +02:00
calixteman
8448d08345
Merge pull request #20300 from calixteman/bug1990499
[Editor] Fix the button labels in the comment dialog (bug 1990499)
2025-09-25 15:29:20 +02:00
dependabot[bot]
96ee833bf4
Bump tar-fs from 3.1.0 to 3.1.1
Bumps [tar-fs](https://github.com/mafintosh/tar-fs) from 3.1.0 to 3.1.1.
- [Commits](https://github.com/mafintosh/tar-fs/compare/v3.1.0...v3.1.1)

---
updated-dependencies:
- dependency-name: tar-fs
  dependency-version: 3.1.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-24 20:01:25 +00:00
calixteman
a8cf9a41d1
Merge pull request #20299 from calixteman/bug1990104
[Editor] Use some percent coordinates for the comment dialog (bug 1990104)
2025-09-24 18:45:16 +02:00
Calixte Denizet
7b67ed3454 [Editor] Fix the button labels in the comment dialog (bug 1990499) 2025-09-24 18:18:43 +02:00
Calixte Denizet
0427c1d93c [Editor] Use some percent coordinates for the comment dialog (bug 1990104) 2025-09-24 17:59:30 +02:00
calixteman
83b5e9efb0
Merge pull request #20298 from calixteman/bug1990082
[Editor] Avoid to use similar colors for background and foreground colors in HCM (bug 1990082)
2025-09-24 17:54:37 +02:00
Calixte Denizet
80c7aee347 [Editor] Avoid to use similar colors for background and foreground colors in HCM (bug 1990082) 2025-09-24 17:04:27 +02:00
calixteman
1ed99237a8
Merge pull request #20297 from calixteman/bug1990099
[Editor] Don't add scrollbars when it's useless in the comment sidebar (bug 1990099)
2025-09-24 17:02:32 +02:00
Calixte Denizet
3f1dbbcb77 [Editor] Don't add scrollbars when it's useless in the comment sidebar (bug 1990099) 2025-09-24 15:38:13 +02:00
calixteman
f5b5b6868a
Merge pull request #20295 from calixteman/comment_update_position
[Editor] Update the color and the position of the comment button in reading mode they've been modified
2025-09-24 14:28:48 +02:00
Calixte Denizet
0b40bf1743 [Editor] Update the color and the position of the comment button in reading mode they've been modified 2025-09-24 09:45:37 +02:00
calixteman
ae3c23e28a
Merge pull request #20291 from calixteman/bug1977269
[Editor] When in HCM, don't apply light/dark color in the comment buttons (bug 1977269)
2025-09-23 20:27:01 +02:00
calixteman
48c10d8938
Merge pull request #20285 from calixteman/editor_remove_useless_dim_stuff
[Editor] Remove useless computations when setting the dimensions of an editor
2025-09-23 20:26:12 +02:00
calixteman
225b07aa29
Merge pull request #20283 from calixteman/bug1989304
[Editor] Make sure the comment dialog is visible on the screen (bug 1989304)
2025-09-23 19:30:28 +02:00
Calixte Denizet
5d079c10b6 [Editor] When in HCM, don't apply light/dark color in the comment buttons (bug 1977269)
Add fix the color name to use in HCM.
2025-09-22 17:31:11 +02:00
calixteman
44affa76b9
Merge pull request #20197 from ryzokuken/sab-font-data
Serialize font data into an ArrayBuffer
2025-09-22 09:40:14 +02:00
calixteman
594fda13de
Merge pull request #20286 from calixteman/openjpeg_2.5.4
Update OpenJPEG to 2.5.4
2025-09-21 18:53:00 +02:00
Calixte Denizet
e9394d0f63 Update OpenJPEG to 2.5.4 2025-09-21 12:11:40 +02:00
Calixte Denizet
0722faa9ce [Editor] Remove useless computations when setting the dimensions of an editor
And remove an unused functions AnnotationEditor::setAspectRatio/fixDims.
2025-09-19 18:08:56 +02:00
Ujjwal Sharma
4bed7370f4 [WIP] Serialize font data into an ArrayBuffer
This PR serializes font data into an ArrayBuffer
that is then transfered from the worker to the
main thread. It's more efficient than the current
solution which clones the "export data" object
which includes the font data as a Uint8Array.

It prepares us to switch to a SharedArrayBuffer
in the future, which would allow us to share
the font data with multiple agents, which would be
crucial for the upcoming "renderer" worker.
2025-09-19 12:02:40 +05:30
Calixte Denizet
623d422ddb [Editor] Make sure the comment dialog is visible on the screen (bug 1989304) 2025-09-18 21:23:42 +02:00
Tim van der Meij
33e638c66f
Merge pull request #20282 from calixteman/fix_showing_invisible_editor
[Editor] Make sure to not add extra editors when showing again a destroyed page
2025-09-18 20:54:15 +02:00
Tim van der Meij
20f31d782b
Merge pull request #20281 from calixteman/comment_dialog_focus
[Editor] Fix the focus outline for the comment dialog buttons
2025-09-18 20:50:50 +02:00
Calixte Denizet
cbc5241b53 [Editor] Make sure to not add extra editors when showing again a destroyed page 2025-09-18 15:18:50 +02:00
Calixte Denizet
a1906f02d9 [Editor] Fix the focus outline for the comment dialog buttons
And add an aria label to the dialog.
2025-09-18 14:01:07 +02:00
James Fitzsimmons
ae8f8e4d34 Improve serif fallback font name matching 2025-09-18 14:15:41 +10:00
Tim van der Meij
05af4ff783
Merge pull request #20252 from sigmaSd/patch-1
Use `console.warn`/`console.info` where appropriate
2025-09-16 19:41:54 +02:00
calixteman
4eeabcb70b
Merge pull request #20279 from calixteman/unused_css
Avoid unused css variables
2025-09-16 13:45:04 +02:00
Calixte Denizet
d1f06fe70e Avoid unused css variables 2025-09-16 13:40:09 +02:00
Bedis Nbiba
b6165c02b9 use console.warn/info where appropriate
Change info to use console.info and warn function
to use console.warn, this not only makes sense semantically
but also in practice server side runtimes like deno
write console.log to stdout, and console.warn
to stderr (info goes to stdout, unfortunately?)
this is important because logging to stdout
can break some cli apps.
2025-09-15 22:37:08 +00:00
Tim van der Meij
d85fd12437
Merge pull request #20274 from calixteman/save_comment_reading_mode
[Annotation] Save the comment changes made in reading mode (bug 1987427)
2025-09-15 23:32:51 +02:00
Tim van der Meij
a68630eee4
Merge pull request #20278 from calixteman/fix_comment_popup_position
[Editor] Fix the position of the comment popup and its dialog
2025-09-15 23:23:10 +02:00
Calixte Denizet
764c2e639c [Editor] Fix the position of the comment popup and its dialog
Only fix the popup position if the user didn't change it.
And don't adjust the dialog position since it should have the same as the popup.
2025-09-15 21:26:36 +02:00
Calixte Denizet
5feb4674d6 [Annotation] Save the comment changes made in reading mode (bug 1987427) 2025-09-15 19:49:49 +02:00
calixteman
394fa2c184
Merge pull request #20250 from calixteman/new_popup_reading_mode
[Annotation] Use the new popup in reading mode (bug 1987426)
2025-09-15 18:00:14 +02:00
Calixte Denizet
38b86cb97a [Annotation] Use the new popup in reading mode (bug 1987426) 2025-09-15 16:58:22 +02:00
calixteman
3432c1933e
Merge pull request #20249 from calixteman/new_comment_popup_2
[Editor] Add a new popup for comments (bug 1987425)
2025-09-15 08:27:17 +02:00
calixteman
0982ff2911
Merge pull request #20272 from timvandermeij/updates
Update dependencies and translations to the most recent versions
2025-09-15 08:25:35 +02:00
Calixte Denizet
b660b721f9 [Editor] Add a new popup for comments (bug 1987425)
And:
 - improve the editing dialog in removing menu;
 - position correctly the popup on the left/right depending on the direction value.
2025-09-15 08:24:26 +02:00
calixteman
adf9233f46
Merge pull request #20270 from calixteman/issue20232
Consider a ttf font with both Symbolic and Nonsymbolic flags set with a Differences array in the encoding dict as non-symbolic
2025-09-14 21:37:58 +02:00
Tim van der Meij
2f53e50074
Update translations to the most recent versions 2025-09-14 19:23:35 +02:00
Tim van der Meij
637599dc23
Upgrade eslint-plugin-unicorn to version 61.0.2
This is a major version bump, but the changelog at
https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v61.0.0
doesn't indicate any breaking changes that should impact us.
2025-09-14 19:23:34 +02:00
Tim van der Meij
a730cba414
Update dependencies to the most recent versions 2025-09-14 19:23:34 +02:00
Tim van der Meij
10bc635fc8
Merge pull request #20271 from timvandermeij/integration-tests-pending
Replace manual returns with `pending` in the integration tests
2025-09-14 19:17:41 +02:00
Calixte Denizet
b6d772d71d Consider a ttf font with both Symbolic and Nonsymbolic flags set with a Differences array in the encoding dict as non-symbolic
It fixes #20232.
2025-09-14 18:52:16 +02:00
Tim van der Meij
ffeaa9111a
Replace manual returns with pending in the integration tests
This allows Jasmine to track skipped tests and makes it easier to
discover them using e.g. `grep`.
2025-09-14 18:30:17 +02:00
Tim van der Meij
1cae8e2933
Merge pull request #20269 from calixteman/dichotomic_find_color
Use a dichotomy to find a color with a good contrast ratio
2025-09-14 18:15:52 +02:00
Tim van der Meij
e78c7d0cc2
Merge pull request #20256 from nicolo-ribaudo/bboxes-when-needed
Only record bboxes when needed
2025-09-14 16:22:46 +02:00
Calixte Denizet
634bef5fb4 Use a dichotomy to find a color with a good contrast ratio
It helps to reduce the number of iterations so it makes the algorithm
slightly faster in general.
2025-09-13 15:45:00 +02:00
calixteman
2138ec17cc
Merge pull request #20267 from nicolo-ribaudo/fix-jsdoc
Fix JSDoc description in src/display/api.js
2025-09-13 15:40:47 +02:00
Nicolò Ribaudo
5de14aa429
Only record bboxes when needed
Before this patch, when `enableOptimizedPartialRendering`
is enabled we would record the bounding boxes of the
various operations on the first render.

This patches change it to happen on the first render that we
know will also need a detail view, so that the performance
cost is not paid for the case when the detail view is not used.
2025-09-12 15:02:24 +02:00
Nicolò Ribaudo
42b4d97115
Fix JSDoc description in src/display/api.js 2025-09-12 15:01:41 +02:00
calixteman
beb5f5ca85
Merge pull request #20208 from nicolo-ribaudo/bboxes-typedarray
Store ops bboxes in a linear Uint8Array
2025-09-12 14:52:42 +02:00
calixteman
d77f89026f
Merge pull request #20240 from calixteman/fix_contrast
Make sure that a good constrast ratio is respected when darkening/lightening a color
2025-09-12 09:24:40 +02:00
calixteman
0e28b5c3c4
Merge pull request #20258 from calixteman/cleanup_before_editing_mode
[Editor] Cleanup the pages not being fully rendered before switching to editing mode
2025-09-11 23:03:08 +02:00
Tim van der Meij
e8cc25c0ae
Merge pull request #20259 from calixteman/no_throw_when_switching_editing_mode
[Editor] Don't throw when switching to editing mode before an annotation editor layer is rendered
2025-09-11 22:04:47 +02:00
Calixte Denizet
7f85c00ee6 Make sure that a good constrast ratio is respected when darkening/lightening a color 2025-09-11 21:29:28 +02:00
Tim van der Meij
557eb2c7e1
Merge pull request #20253 from calixteman/scroll_and_center
Add an option in scrollIntoView and goToXY in order to be able to center vertically or horizontally the point XY in the viewer container
2025-09-11 21:20:55 +02:00
Tim van der Meij
f049360689
Merge pull request #20255 from nicolo-ribaudo/low-res
Reduce background canvas resolution
2025-09-11 21:04:27 +02:00
Nicolò Ribaudo
4c7bbd0fef
Reduce background canvas resolution
The size of the canvas has significant impact on the rendering
performance. If we are going to render a high-res detail
view on top of the full-page canvas, we can further
reduce the full-page canvas resolution to improve
rendering time without affecting the resolution seen by
the user.

Users will se the lower resolution when quickly scrolling around the
page, but it will then be replaced with the high-res
detail view.
2025-09-10 16:52:57 +02:00
Calixte Denizet
593ceadc93 [Editor] Don't throw when switching to editing mode before an annotation editor layer is rendered
It can happen with a pdf having a large text layer.
Instead of waiting for the first rendered page to enable the buttons we wait for
a rendered annotation editor layer.
2025-09-10 11:04:47 +02:00
Calixte Denizet
0fc8986dc6 [Editor] Cleanup the pages not being fully rendered before switching to editing mode
In order to see the issue this patch is fixing:
 - open a pdf with some highlights and a comment on page 1, at page 7
 - open the comment sidebar
 - click on the comment on page 1

Opening at page 7 lets a not fully rendered page which means that when jumping to it
with the sidebar, we re-use what we've instead of redrawing it.
2025-09-10 10:23:29 +02:00
Calixte Denizet
e1bdc34b4a Add an option in scrollIntoView and goToXY in order to be able to center vertically or horizontally the point XY in the viewer container 2025-09-09 13:10:49 +02:00
Nicolò Ribaudo
e4ea2e0c79
Store ops bboxes in a linear Uint8Array
This PR changes the way we store bounding boxes so that they use less
memory and can be more easily shared across threads in the future.

Instead of storing the bounding box and list of dependencies for each
operation that renders _something_, we now only store the bounding box
of _every_ operation and no dependencies list. The bounding box of
each operation covers the bounding box of all the operations affected
by it that render something. For example, the bounding box of a
`setFont` operation will be the bounding box of all the `showText`
operations that use that font.

This affects the debugging experience in pdfBug, since now the bounding
box of an operation may be larger than what it renders itself. To help
with this, now when hovering on an operation we also highlight (in red)
all its dependents. We highlight with white stripes operations that do
not affect any part of the page (i.e. with an empty bbox).

To save memory, we now save bounding box x/y coordinates as uint8
rather than float64. This effectively gives us a 256x256 uniform grid
that covers the page, which is high enough resolution for the usecase.
2025-09-09 10:24:48 +02:00
calixteman
5b7f9ca8b9
Merge pull request #20247 from calixteman/wait_for_rendered_editors
[Editor] When clicking on a comment in the sidebar, wait for the annotation editor layer to be rendered
2025-09-09 09:26:45 +02:00
calixteman
d009c434f5
Merge pull request #20248 from calixteman/toolbar_button_position
[Editor] Make sure the comment button is at the right place when adding it in the toolbar
2025-09-08 23:06:02 +02:00
calixteman
b5113d9a74
Merge pull request #20239 from timvandermeij/integration-test-unskip-timezone
Unskip the `must check that date entered by the user is consistent` scripting integration test for Firefox
2025-09-08 22:35:18 +02:00
calixteman
17a27806c6
Merge pull request #20245 from calixteman/comment_richtext
[Editor] Add the dates and rich text if any to the editors in order to use them when displaying the popup
2025-09-08 22:23:03 +02:00
Tim van der Meij
3f0d39b024
Merge pull request #20244 from calixteman/fix_deleting_popup
[Editor] Fix saving a deleted popup
2025-09-08 21:23:47 +02:00
Tim van der Meij
512c30b1f6
Unskip the must check that date entered by the user is consistent scripting integration test for Firefox
Bug 1978027 has been fixed upstream 10 days ago, so this integration
test can be enabled for Firefox too now that it passed with recent
Nightly versions.
2025-09-08 20:48:24 +02:00
Tim van der Meij
8bd13f7f25
Merge pull request #20172 from timvandermeij/misc-test-improvements
Improve the integration test code
2025-09-08 20:44:29 +02:00
Tim van der Meij
5382c54803
Merge pull request #20243 from mozilla/dependabot/github_actions/actions/setup-node-5
Bump actions/setup-node from 4 to 5
2025-09-08 20:43:01 +02:00
Tim van der Meij
7e3417f862
Merge pull request #20242 from mozilla/dependabot/github_actions/actions/setup-python-6
Bump actions/setup-python from 5 to 6
2025-09-08 20:42:35 +02:00
Calixte Denizet
f5c913bc9e [Editor] Make sure the comment button is at the right place when adding it in the toolbar 2025-09-08 17:59:28 +02:00
Calixte Denizet
94d72e903f [Editor] Add the dates and rich text if any to the editors in order to use them when displaying the popup 2025-09-08 17:40:47 +02:00
Calixte Denizet
54351ee437 [Editor] When clicking on a comment in the sidebar, wait for the annotation editor layer to be rendered
and add a getter for the layer bounding rect.
2025-09-08 17:13:37 +02:00
Calixte Denizet
2d5794f79d [Editor] Fix saving a deleted popup 2025-09-08 15:36:41 +02:00
dependabot[bot]
f9be06a8c1
Bump actions/setup-node from 4 to 5
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4 to 5.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-08 12:31:52 +00:00
dependabot[bot]
a5ef8ca828
Bump actions/setup-python from 5 to 6
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5 to 6.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-08 12:26:36 +00:00
calixteman
d946de904c
Merge pull request #20238 from timvandermeij/fix-freetext-permafail
Fix the rendering of XFA rich text in popup annotations
2025-09-07 20:59:36 +02:00
Tim van der Meij
f1f8ee47ff
Fix the rendering of XFA rich text in popup annotations
Before the introduction of the `renderRichText` helper function we
exclusively used `this.#html` for XFA rich text and exclusively used
`this.#contentsObj` for plain text. However, after the refactoring we
tried to access `this.#contentsObj.dir` in both cases, which fails for
XFA rich text because `this.#contentsObj` is `null` in that case.

This commit fixes the issue by using optional chaining to make sure we
don't try to access non-existent `this.#contentsObj` properties, which
makes the `must update an existing annotation and show the right popup`
freetext integration pass again.

Fixes #20237.
Fixes 35c90984.
2025-09-07 18:35:17 +02:00
Tim van der Meij
7f74fbf8fd
Fix block spacing inconsistencies in the integration test code
Most places have a newline before/after `before{Each,All}`,
`after{Each,All}` and `it` to visually separate the blocks for clarity,
but in a handful of places this wasn't done. This commit removes the
inconsistencies so that the test code is formatted consistently.
2025-09-07 14:39:52 +02:00
Tim van der Meij
cf5bffef2e
Use the getAnnotationSelector helper function more in the integration test code
The helper function was used in a number of places, but also a lot of
places contained the annotation selector string inline. This commit
makes sure that all places use `getAnnotationSelector` consistently to
make sure the annotation selector string is only defined in a single
place and to improve readability of the test code.
2025-09-07 14:39:52 +02:00
Tim van der Meij
c09ad5a2ce
Use the closePages helper function more in the integration test code
This test called `closeSinglePage` manually at the end of the test,
which is inconsistent with all other tests that call `closePages` in an
`afterEach` block. This commit fixes the difference for consistency.
2025-09-07 14:39:48 +02:00
calixteman
2a93ade197
Merge pull request #20231 from calixteman/xfa_render_richtext
Add a new function renderRichText to be used in the annotation layer
2025-09-05 08:36:28 +02:00
Calixte Denizet
35c909843b Add a new function renderRichText to be used in the annotation layer
and which will be used in order to make the contents of the new popup used for comments.
2025-09-04 22:27:31 +02:00
calixteman
7b87c220a5
Merge pull request #20233 from calixteman/dont_add_image_stamp_update
[Editor] Don't save the image when updating a stamp annotation
2025-09-04 22:19:36 +02:00
Tim van der Meij
84e32964ed
Merge pull request #20221 from calixteman/button_color_comment
[Editor] Use the color of the annotation for the background of the comment button
2025-09-04 21:27:07 +02:00
Calixte Denizet
2354ae4233 [Editor] Don't save the image when updating a stamp annotation
It adds some useless bytes in the file.
2025-09-04 18:54:13 +02:00
maettuu
2d8dfb0b62 Add regression test for Unicode mapping
Verifies that ToUnicodeMap correctly maps Extension B characters to their full Unicode code points using codePointAt

See PR https://github.com/mozilla/pdf.js/pull/19184
2025-09-04 17:17:34 +02:00
Calixte Denizet
ca280399c2 [Editor] Use the color of the annotation for the background of the comment button 2025-09-02 21:17:08 +02:00
Tim van der Meij
c386d9b87d
Merge pull request #20222 from calixteman/sidebar_scroll
[Editor] Make scrollable the area containing the comments in the sidebar
2025-09-01 20:28:35 +02:00
Calixte Denizet
dd4b475109 [Editor] Make scrollable the area containing the comments in the sidebar 2025-08-31 23:21:19 +02:00
calixteman
c8d49db624
Merge pull request #20217 from calixteman/comment_editor_sidebar
[Editor] Add editors with a comment in the sidebar
2025-08-31 21:48:52 +02:00
Calixte Denizet
2a459857ce [Editor] Add editors with a comment in the sidebar
and add a button close to the editor.
Clicking on the button will display a popup with the comment but it's for a next patch.
2025-08-31 19:59:16 +02:00
Tim van der Meij
9855d85fb5
Merge pull request #20220 from timvandermeij/editor-hint-bugfix
[Editor] Hide the comment sidebar on document change
2025-08-31 18:56:27 +02:00
Tim van der Meij
5a7c872618
[Editor] Hide the comment sidebar on document change
If the document changes the comment state from the old document should
be replaced with that of the new document. To do this the comment
manager is destroyed, but the corresponding comment sidebar wasn't
destroyed yet, which resulted in the comment state from the old document
still being visible for the new document.

This commit fixes the issue by hiding the comment sidebar if the comment
manager is destroyed. Note that hiding the comment sidebar effectively
destroys all its state, and we already set the annotation mode to "none"
on document change so we don't want to keep showing the comment sidebar
anyway.
2025-08-31 16:26:03 +02:00
calixteman
c96fa68c9d
Merge pull request #20204 from calixteman/add_changelightness
Add a function changeLightness in order to change the lightness of a RGB color
2025-08-30 21:40:31 +02:00
Calixte Denizet
0ec503e5ef Add a function changeLightness in order to change the lightness of a RGB color 2025-08-30 21:18:12 +02:00
Tim van der Meij
c2699a941e
Merge pull request #20216 from timvandermeij/updates
Update dependencies and translations to the most recent versions
2025-08-30 20:01:51 +02:00
Tim van der Meij
cac052c0be
Update translations to the most recent versions 2025-08-30 18:39:19 +02:00
Tim van der Meij
4dcfc96703
Update dependencies to the most recent versions 2025-08-30 18:38:25 +02:00
Tim van der Meij
f110e57512
Merge pull request #20215 from timvandermeij/bump
Bump the stable version in `pdfjs.config`
2025-08-30 17:52:18 +02:00
Tim van der Meij
a5456033ce
Bump the stable version in pdfjs.config 2025-08-30 17:49:19 +02:00
calixteman
9e2e9e2096
Merge pull request #20210 from calixteman/comment_sidebar
[Editor] Add a sidebar allowing the user to navigate between the comments in a pdf (bug 1985567)
2025-08-30 14:19:04 +02:00
Tim van der Meij
a2d4b259c5
Merge pull request #20212 from calixteman/reset_mode
Reset editing mode when changing the pdf document
2025-08-29 20:45:21 +02:00
Calixte Denizet
25990e4287 [Editor] Add a sidebar allowing the user to navigate between the comments in a pdf (bug 1985567)
This implements what has been specified but it's still not done: we have to handle editing a comment
or an annotation containing one.
2025-08-29 16:00:06 +02:00
Calixte Denizet
3e01ee9bb7 Reset editing mode when changing the pdf document 2025-08-28 22:38:05 +02:00
Tim van der Meij
13ba311e5a
Merge pull request #20211 from calixteman/fix_css_unit
[Editor] Fix unit (for consistency) and remove few useless px
2025-08-28 20:37:18 +02:00
Tim van der Meij
53c37547f0
Merge pull request #20209 from calixteman/fix_comment_icon
[Editor] Fix the dimensions of the comment icon
2025-08-28 20:33:31 +02:00
Calixte Denizet
0a4817fb71 [Editor] Fix unit (for consistency) and remove few useless px 2025-08-28 16:09:58 +02:00
Calixte Denizet
1876013e4e [Editor] Fix the dimensions of the comment icon 2025-08-27 16:01:29 +02:00
calixteman
e37a58f978
Merge pull request #20200 from calixteman/remove_useless_css2
[Editor] Remove useless CSS and fix styling for the comment button
2025-08-26 22:10:11 +02:00
Calixte Denizet
e44e470eb2 [Editor] Remove useless CSS and fix styling for the comment button 2025-08-26 22:06:49 +02:00
Tim van der Meij
d8c01bf70d
Merge pull request #20196 from calixteman/xy_getter
[Editor] Add a method to get an editor rect in the pdf page coordinates
2025-08-26 20:27:06 +02:00
Calixte Denizet
1fc039e14f [Editor] Add a method to get an editor rect in the pdf page coordinates 2025-08-26 19:40:41 +02:00
Tim van der Meij
bde01f0998
Merge pull request #20195 from timvandermeij/fix-chrome-windows
Skip the curvature ink editor integration test for Chrome on Windows
2025-08-25 21:35:13 +02:00
Tim van der Meij
11d5d6d0ce
Skip the curvature ink editor integration test for Chrome on Windows
This test permafails for that particular OS/browser combination.

Fixes 18d3dc18.
2025-08-25 20:09:32 +02:00
calixteman
5a10376e4d
Merge pull request #20191 from calixteman/link_gotoxy
Add a method goToXY in PDFLinkService in order to scroll the document at a given location
2025-08-25 20:08:03 +02:00
calixteman
261c1f9e05
Merge pull request #20194 from calixteman/update_comment_icon
[Editor] Change the icon for inline comments
2025-08-25 20:07:37 +02:00
Calixte Denizet
5ed2dfbf26 [Editor] Change the icon for inline comments 2025-08-25 20:04:56 +02:00
Calixte Denizet
1678782680 Add a method goToXY in PDFLinkService in order to scroll the document at a given location
This function is required for the commenting feature: the user will be able to click
on a comment in the sidebar and the document will be scrolled accordingly.
2025-08-25 19:57:53 +02:00
Tim van der Meij
ab41f5095c
Merge pull request #20190 from timvandermeij/text-layer-permafail
Improve the selection check in the "doesn't jump when moving selection" integration test
2025-08-25 19:40:27 +02:00
calixteman
7a65c58b5e
Merge pull request #20170 from calixteman/bug1980958
Don't iterate over all empty slots in the xref entries (bug 1980958)
2025-08-25 15:46:20 +02:00
Calixte Denizet
af144be3ba Don't iterate over all empty slots in the xref entries (bug 1980958) 2025-08-25 14:02:08 +02:00
calixteman
5d4f0659bc
Merge pull request #20182 from calixteman/add_comment_button
[Editor] Add a button to the annotation having a popup in order to edit it
2025-08-25 13:18:37 +02:00
calixteman
307ea5d25d
Merge pull request #20187 from calixteman/update_puppeteer_24.17.0
Update puppeteer to 24.17.0
2025-08-25 13:09:44 +02:00
Calixte Denizet
0af61f5bf4 Update puppeteer to 24.17.0 2025-08-25 09:33:53 +02:00
Calixte Denizet
bd8c438428 [Editor] Add a button to the annotation having a popup in order to edit it 2025-08-24 21:36:19 +02:00
Tim van der Meij
4cc93af364
Improve the selection check in the "doesn't jump when moving selection" integration test
Locally, on Arch Linux, this integration test permafails:

```
1) Text layer Text selection using selection carets doesn't jump when moving selection
  Message:
    second selection:
        Expected '(frequently executed) bytecode sequences, records
        them, and compiles them to fast native code. We call such a s' to roughly match /frequently .* We call such a se/s.
  Stack:
        at <Jasmine>
        at UserContext.<anonymous> (file:///home/timvandermeij/Documenten/Ontwikkeling/pdf.js/Code/test/integration/text_layer_spec.mjs:521:12)
  Message:
    third selection:
        Expected '(frequently executed) bytecode sequences, records
        them, and compiles them to fast native code. We call such a s' to roughly match /frequently .* We call such a se/s.
  Stack:
        at <Jasmine>
        at UserContext.<anonymous> (file:///home/timvandermeij/Documenten/Ontwikkeling/pdf.js/Code/test/integration/text_layer_spec.mjs:529:12
```

The exact selection can differ a bit per OS/browser. In this case the
last character was consistently not selected while on other platforms it
is, so this commit fixes the issue by relaxing the regex to not consider
the final character so that the test passes if the rest matches.
2025-08-24 20:46:20 +02:00
Tim van der Meij
649a03f817
Merge pull request #20189 from timvandermeij/null-signal
[Editor] Don't use a null signal for the comment button
2025-08-24 20:43:36 +02:00
Tim van der Meij
eec1bea1b4
[Editor] Don't use a null signal for the comment button
This removes the following error from the integration test logs:

```
JavaScript error: http://127.0.0.1:59283/build/generic/build/pdf.mjs, line 3879:
TypeError: EventTarget.addEventListener: 'signal' member of AddEventListenerOptions is not an object.
```

Fixes 636ff50.
Extends 63651885.
2025-08-24 20:01:10 +02:00
Tim van der Meij
535a042b01
Merge pull request #20188 from timvandermeij/chrome-webdriverbidi
Use WebDriver BiDi for Chrome
2025-08-24 19:59:31 +02:00
Tim van der Meij
18d3dc18e0
Use WebDriver BiDi for Chrome 2025-08-24 15:58:52 +02:00
calixteman
592d6c070a
Merge pull request #20179 from calixteman/add_rect_popup
[Editor] Add a Rect entry to a saved popup in order to avoid to have an invalid pdf
2025-08-24 12:01:31 +02:00
calixteman
78f63dd6db
Merge pull request #20180 from calixteman/mv_comment_button
[Editor] Move the comment button just before the delete one
2025-08-24 12:00:29 +02:00
calixteman
cfe08bd035
Merge pull request #20184 from calixteman/use_cached_annotations
Use the cached annotations when collecting them by types
2025-08-24 11:57:17 +02:00
Tim van der Meij
8be21711a4
Merge pull request #20183 from calixteman/resizer_top_editor
[Editor] Make sure the resizers are on top of the editor content
2025-08-23 21:27:35 +02:00
calixteman
4e089f210a
Merge pull request #20186 from calixteman/puppeteer_switch_nightly
Use Firefox nightly with puppeteer
2025-08-23 15:36:21 +02:00
Calixte Denizet
22c0e25eb5 Use Firefox nightly with puppeteer 2025-08-22 22:02:34 +02:00
calixteman
673f19bc2b
Merge pull request #19043 from nicolo-ribaudo/compute-bounding-boxes
Add logic to track rendering area of various PDF ops
2025-08-22 20:34:03 +02:00
Nicolò Ribaudo
6a22da9c2e
Add logic to track rendering area of various PDF ops
This commit is a first step towards #6419, and it can also help with
first compute which ops can affect what is visible in that part of
the page.

This commit adds logic to track operations with their respective
bounding boxes. Only operations that actually cause something to
be rendered have a bounding box and dependencies.

Consider the following example:
```
0. setFillRGBColor
1. beginText
2. showText "Hello"
3. endText
4. constructPath [...] -> eoFill
```
here we have three rendering operations: the showText op (2) and the
path (4). (2) depends on (0), (1) and (3), while (4) only depends on
(0). Both (2) and (4) have a bounding box.

This tracking happens when first rendering a PDF: we then use the
recorded information to optimize future partial renderings of a PDF, so
that we can skip operations that do not affected the PDF area on the
canvas.

All this logic only runs when the new `enableOptimizedPartialRendering`
preference, disabled by default, is enabled.

The bounding boxes and dependencies are also shown in the pdfBug
stepper. When hovering over a step now:
- it highlights the steps that they depend on
- it highlights on the PDF itself the bounding box
2025-08-22 18:26:59 +02:00
Calixte Denizet
ebc3411727 Use the cached annotations when collecting them by types 2025-08-21 18:04:00 +02:00
Calixte Denizet
0c6cf84274 [Editor] Make sure the resizers are on top of the editor content 2025-08-21 09:10:57 +02:00
Calixte Denizet
f8466c9ff8 [Editor] Add a Rect entry to a saved popup in order to avoid to have an invalid pdf 2025-08-20 17:56:50 +02:00
Calixte Denizet
f8ea63606c [Editor] Move the comment button just before the delete one 2025-08-20 17:18:38 +02:00
calixteman
e20ee99580
Merge pull request #20178 from calixteman/pinpoint_firefox
Use Firefox stable for the tests because bug 1983414
2025-08-20 17:04:08 +02:00
Calixte Denizet
2beb26ad14 Use Firefox stable for the tests because bug 1983414 2025-08-20 16:11:59 +02:00
calixteman
212547e865
Merge pull request #20169 from timvandermeij/updates
Update dependencies and translations to the most recent versions
2025-08-19 10:41:27 +02:00
calixteman
65dd6b05a9
Merge pull request #20167 from calixteman/get_all_editable_annotations
[Editor] Add the ability to get all the editable annotations in a pdf document
2025-08-19 10:39:48 +02:00
Calixte Denizet
9e5ee1e5a7 [Editor] Add the ability to get all the editable annotations in a pdf document
We want to be able to show all the comments in a pdf even if the pages where they are
haven't been rendered.
And it'll help to fix the issue #18915.
2025-08-18 21:31:11 +02:00
Tim van der Meij
13de21841d
Update translations to the most recent versions 2025-08-17 16:32:29 +02:00
Tim van der Meij
d49fc494cd
Update dependencies to the most recent versions 2025-08-17 16:32:29 +02:00
Tim van der Meij
dd560ee453
Merge pull request #20171 from timvandermeij/firefox-test-prefs
Update Firefox preferences for testing
2025-08-17 16:31:16 +02:00
Tim van der Meij
844681a2fa
Disable AI/ML features using Firefox preferences for testing
We don't need AI/ML features in the tests, so this should reduce CPU
usage by not having the inference process running. Moreover, it prevents
the following lines from being logged in the test output:

```
JavaScript error: resource://gre/actors/MLEngineParent.sys.mjs, line 509: Error: Unable to get the ML engine from Remote Settings.
JavaScript error: resource://gre/actors/MLEngineParent.sys.mjs, line 1279: TypeError: can't access property "postMessage", this[#port] is null
```
2025-08-17 16:05:04 +02:00
Tim van der Meij
a05dc9c1c5
Remove obsolete Firefox preferences for testing
The following preferences don't have to be set manually anymore:

- `print.show_print_progress`
  - Why: removed
  - Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1770536
  - Commit: b522664310

- `gfx.offscreencanvas.enabled`
  - Why: removed
  - Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1914083
  - Commit: 7d2c688920

- `layout.css.round.enabled`
  - Why: removed
  - Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1874633
  - Commit: 97909653e7

- `dom.events.asyncClipboard.clipboardItem`
  - Why: enabled by default
  - Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1887845
  - Commit: de56ae88bf
2025-08-17 14:53:35 +02:00
Tim van der Meij
5adff6a2e2
Merge pull request #20126 from timvandermeij/fix-intermittents-chrome
Implement a delay for Chrome protocol calls in the integration tests, and skip the "must check that an existing highlight is ignored on hovering" integration test on Windows
2025-08-15 19:34:13 +02:00
Tim van der Meij
17dc9e9917
Skip the "must check that an existing highlight is ignored on hovering" integration test on Windows
This is a temporary measure to reduce noise until #20136 is fixed. Note
that this shouldn't be an issue in terms of coverage because we still
run the test on Linux.
2025-08-14 20:54:41 +02:00
Tim van der Meij
7294377cd9
Implement a delay for Chrome protocol calls in the integration tests
In Chrome protocol calls are faster than in Firefox and thus trigger in
quicker succession. This can cause intermittent failures because new
protocol calls can run before events triggered by the previous protocol
calls had a chance to be processed (essentially causing events to get
lost).

This commit fixes the issue by configuring Chrome with a protocol call
delay value that gives it a more similar execution speed as Firefox
(which also gives us more consistency between the two browser runs).

Note that this doesn't negatively impact the overall runtime of the
integration tests because Puppeteer already waits for a test to complete
in both browsers before continuing to the next one and Chrome
consistently was, and with this patch still slightly is, faster in
completing the tests.
2025-08-14 20:54:37 +02:00
Tim van der Meij
c6bd044438
Merge pull request #20164 from calixteman/editor_hide_deleted_annotation
[Editor] Correctly hide deleted annotations
2025-08-14 20:39:39 +02:00
Tim van der Meij
5951485b98
Merge pull request #20166 from calixteman/fix_signal_integration_test
[Editor] Avoid to use a null signal when setting listeners in the editor toolbar
2025-08-14 20:32:49 +02:00
Calixte Denizet
6365188535 [Editor] Avoid to use a null signal when setting listeners in the editor toolbar
It should fix the error:
```
JavaScript error: http://127.0.0.1:43303/build/generic/build/pdf.mjs, line 1445:
TypeError: EventTarget.addEventListener: 'signal' member of AddEventListenerOptions is not an object.
```

we've when running integration tests on the Linux bot.
2025-08-14 15:07:22 +02:00
Calixte Denizet
6a00174688 [Editor] Correctly hide deleted annotations 2025-08-13 22:41:19 +02:00
Tim van der Meij
7ea7a94ed5
Merge pull request #20160 from calixteman/issue20155
Check the setDash arguments
2025-08-12 20:48:44 +02:00
Tim van der Meij
32ea986c9b
Merge pull request #20161 from mozilla/dependabot/github_actions/actions/checkout-5
Bump actions/checkout from 4 to 5
2025-08-12 20:02:18 +02:00
dependabot[bot]
e38fb68724
Bump actions/checkout from 4 to 5
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-11 17:13:51 +00:00
Tim van der Meij
1bada43a22
Merge pull request #20159 from calixteman/update_l10n_1
Update l10n files
2025-08-10 11:15:19 +02:00
Calixte Denizet
1d4ae786f4 Check the setDash arguments
It fixes #20155.
2025-08-09 22:34:44 +02:00
Calixte Denizet
02635814a2 Update l10n files 2025-08-08 14:46:17 +02:00
calixteman
41ca92b2ea
Merge pull request #20149 from k-nut/patch-1
Mark `canvasContext` as optional
2025-08-07 22:38:32 +02:00
Knut Hühne
760c8d632c
Mark canvasContext as optional
In #20016, the `canvasContext` property of `RenderParameters` was deprecated in favor of the new `canvas` property.

The JSDoc was updated to include the new parameter along with the old one.

I think the old one should be enclosed in `[]` to mark it as optional (and to allow usage from TypeScript with just the `canvas` parameter provided).

I also reordered the properties so that all required properties come first, follow by optional ones.
2025-08-06 12:38:30 +02:00
calixteman
fcf69d8536
Merge pull request #20093 from Aditi-1400/fix-horizontal-scroll
Make horizontal padding relative to device width
2025-08-06 11:44:55 +02:00
calixteman
d41f144716
Merge pull request #20148 from fnlctrl/icc-lazy-finalization-registry
Lazy initialize FinalizationRegistry used by IccColorSpace.#finalizer
2025-08-06 11:24:40 +02:00
宋铄运 (Alan Song)
3d9374e02e lazy initialize IccColorSpace.#finalizer 2025-08-05 22:29:32 +00:00
Aditi
9babc144a7 Make horizontal padding relative to device width
The fixed -400px horizontal offset used by
scrollIntoView led to horizontal scroll only moving
part-way right on narrow screens. The highlights near
the right-edge remained party or completely off
screen.

This centres the highlighted match on any viewport width while
clamping the left margin to 20-400px. On very narrow screens
the scrollbar now moves all the way to the right instead of
stopping midway.
2025-08-04 15:29:52 +05:30
Tim van der Meij
e9a483014d
Merge pull request #20142 from calixteman/bug1957680
Trigger a fake scrollend event in case it hasn't been triggered by the browser (bug 1957680)
2025-08-03 16:03:39 +02:00
Tim van der Meij
17527d84f8
Merge pull request #20138 from calixteman/bug1976597
[Editor] Highlight text on a selectionchange event which hasn't been triggered by the pointer or the keyboard (bug 1976597)
2025-08-03 15:29:07 +02:00
Calixte Denizet
287776483f Trigger a fake scrollend event in case it hasn't been triggered by the browser (bug 1957680)
This way, it should unblock zooming with ctrl+wheel after scrolling.
2025-08-01 19:06:26 +02:00
Calixte Denizet
a81e99168a [Editor] Highlight text on a selectionchange event which hasn't been triggered by the pointer or the keyboard (bug 1976597)
It's useful for users highlighting with NVDA.
They've to enable native selection and then selection some text.
In this case only a selectionchange is triggered once the selection is done.
2025-07-31 21:03:32 +02:00
calixteman
e5922f2e72
Merge pull request #20129 from calixteman/bug1978985
Disable printing when enablePermission is true and the pdf isn't allowed to be printed (bug 1978985)
2025-07-30 20:03:44 +02:00
Calixte Denizet
806f9c1cee Disable printing when enablePermission is true and the pdf isn't allowed to be printed (bug 1978985) 2025-07-30 19:29:01 +02:00
Tim van der Meij
e48563ab5d
Merge pull request #20134 from timvandermeij/fix-intermittent-scripting
Fix intermittent failure in the "must check that the computed value is correct" scripting integration test
2025-07-29 20:04:51 +02:00
Tim van der Meij
48c6253b32
Fix intermittent failure in the "must check that the computed value is correct" scripting integration test
Typing in the text field causes a sandbox event to trigger, which we
should await to avoid continuing to the next part of the test before
the sandbox event is fully processed.
2025-07-29 19:31:08 +02:00
calixteman
f16e0b6daa
Merge pull request #20132 from calixteman/fix_css_2
[Editor] Remove unused property
2025-07-29 12:01:49 +02:00
Calixte Denizet
38b410f7e5 [Editor] Remove unused property 2025-07-29 11:58:49 +02:00
calixteman
d9ffffd435
Merge pull request #20131 from calixteman/fix_css
[Editor] Remove useless css and use a defined but unused property
2025-07-29 10:03:51 +02:00
Calixte Denizet
fbdeb7bb6d [Editor] Remove useless css and use a defined but unused property 2025-07-29 09:33:38 +02:00
Tim van der Meij
aa4b9ffd4a
Merge pull request #20128 from calixteman/issue20127
Add comment-* images when building components
2025-07-28 20:15:18 +02:00
calixteman
2e974e8f30
Merge pull request #20109 from maettuu/reg-test-pr-19639
Add regression test for PR 19639
2025-07-28 18:53:24 +02:00
calixteman
995f070f23
Merge pull request #20119 from calixteman/comment_floating_button
[Editor] Add a floating button in order to highlight the text selection and add a comment (bug 1979381)
2025-07-28 18:20:34 +02:00
Calixte Denizet
3fb7cd40e7 [Editor] Add a floating button in order to highlight the text selection and add a comment (bug 1979381)
The callback called when clicking on the button is the same as the one trigged by clicking in the context menu (in m-c).
2025-07-28 15:32:23 +02:00
calixteman
366727d734
Merge pull request #20125 from timvandermeij/updates
Update dependencies and translations to the most recent versions
2025-07-28 14:54:28 +02:00
Calixte Denizet
605c9be94f Add comment-* images when building components
It fixes #20127.
2025-07-28 14:30:03 +02:00
Tim van der Meij
7f5c517b49
Update translations to the most recent versions 2025-07-27 18:32:32 +02:00
Tim van der Meij
c19271f7c3
Upgrade eslint-plugin-unicorn to version 60.0.0
This is a major version bump, but the changelog at
https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v60.0.0
doesn't indicate any breaking changes that should impact us.

Note that this brings the vulnerability count back to zero because this
version addresses https://github.com/advisories/GHSA-xffm-g5w8-qvg7.
2025-07-27 18:32:32 +02:00
Tim van der Meij
7594f21adb
Update dependencies to the most recent versions
Note that we must include `eslint-config-prettier` explicitly because
it's now a required dependency and without it linting fails; please see
https://github.com/prettier/eslint-plugin-prettier?tab=readme-ov-file#installation.
2025-07-27 18:31:03 +02:00
Tim van der Meij
e4b146221b
Merge pull request #20124 from timvandermeij/bump
Bump the stable version in `pdfjs.config`
2025-07-27 17:55:59 +02:00
Tim van der Meij
8771175e5f
Bump the stable version in pdfjs.config 2025-07-27 17:52:46 +02:00
Tim van der Meij
295fb3ec4f
Merge pull request #20120 from calixteman/remove_actions_button
[Editor] Don't show the actions button in the comment popup when it's useless
2025-07-27 14:24:17 +02:00
Calixte Denizet
efc1654326 [Editor] Don't show the actions button in the comment popup when it's useless 2025-07-25 19:47:58 +02:00
calixteman
542514efbd
Merge pull request #20116 from calixteman/add_date_picker
Use a HTML date/time input when a field requires a date or a time.
2025-07-25 15:34:52 +02:00
Calixte Denizet
57ce4f8f43 Use a HTML date/time input when a field requires a date or a time.
The user will be able to enter a date in the format corresponding to their locale
and it'll be formatted in using the format provided by the pdf.
2025-07-24 22:01:45 +02:00
calixteman
aee4f2d33c
Merge pull request #20113 from calixteman/bug1978317
Fix the xref table with the values we've at the beginning of a xref stream (bug 1978317)
2025-07-23 09:36:29 +02:00
Calixte Denizet
78391ed85a Fix the xref table with the values we've at the beginning of a xref stream (bug 1978317) 2025-07-22 22:10:23 +02:00
maettuu
ac8757f36f Add regression test for negative LW normalization in gs operator
Ensure that negative “LW” entries in an ExtGState dictionary are converted to their absolute values when the “gs” operator is processed.

See PR https://github.com/mozilla/pdf.js/pull/19639
2025-07-20 16:03:46 +02:00
Tim van der Meij
bfc20250b2
Merge pull request #20107 from timvandermeij/updates
Update translations and dependencies to the most recent versions
2025-07-19 20:06:33 +02:00
Tim van der Meij
dcf161e2eb
Update translations to the most recent versions 2025-07-19 18:41:21 +02:00
Tim van der Meij
5d6023cb2a
Update dependencies to the most recent versions 2025-07-19 18:39:16 +02:00
Tim van der Meij
ed141970e6
Merge pull request #20099 from calixteman/bug1977259
[Editor] Fix the highlighting colors in HCM (bug 1977259)
2025-07-18 22:25:43 +02:00
Tim van der Meij
f3080a185b
Merge pull request #20106 from timvandermeij/fix-viewer-alert-intermittent
Fix intermittent failure in the viewer alert tests
2025-07-18 21:32:26 +02:00
Tim van der Meij
603fd2524a
Fix intermittent failure in the viewer alert tests
It takes some time for the viewer alert to be updated after the editor
is committed, but the current tests don't await that and proceed too
fast to the viewer alert string assertion. This commit fixes the issue
by waiting for the expected viewer alert string to appear instead.
2025-07-18 20:56:02 +02:00
Tim van der Meij
daf2cbbfe9
Merge pull request #20096 from calixteman/bug1708041
Make the link annotations correctly announced by screen readers (bug 1708041)
2025-07-18 20:33:30 +02:00
Calixte Denizet
f695e0ca62 Make the link annotations correctly announced by screen readers (bug 1708041)
And focus the targeted page when the user clicks on a link.
2025-07-18 20:15:31 +02:00
Calixte Denizet
c022a3294a [Editor] Fix the highlighting colors in HCM (bug 1977259)
Using the same color in HCM or non-HCM was inducing a too small contrast between
some bg/fg colors making the text a bit hard to read.
2025-07-18 20:11:28 +02:00
calixteman
bfc7fc4da9
Merge pull request #20101 from calixteman/issue20065
Use canvas context text primitives when the font file is missing
2025-07-18 20:03:22 +02:00
Calixte Denizet
8b17e5ecd8 Use canvas context text primitives when the font file is missing
It fixes #20065.

The only to get a path (from the path generator) is when the font is embedded.
So when we need a path (disableFontFace: true or when we want to use a pattern for stroking/filling), it's impossible
to fulfil.
2025-07-18 19:57:30 +02:00
Tim van der Meij
e4585c2452
Merge pull request #20104 from calixteman/fix_newpopup
[Editor] Only add a popup to an existing annotation if it exits
2025-07-18 19:34:03 +02:00
Calixte Denizet
6d7e0e7025 [Editor] Only add a popup to an existing annotation if it exits
It fixes the ink integration test "must update an existing annotation".
2025-07-18 17:31:53 +02:00
Tim van der Meij
23bd705cea
Merge pull request #20080 from calixteman/add_comment_1
[Editor] Add the possibility to add Popup annotations (bug 1976724)
2025-07-17 21:07:06 +02:00
calixteman
d2f8e60794
Merge pull request #20098 from calixteman/update_highlight_color
[Editor] Make possible to change the highlight color from the main panel
2025-07-17 21:06:29 +02:00
Calixte Denizet
5162209b27 [Editor] Make possible to change the highlight color from the main panel
It's consistent with the way to change colors for FreeText or Ink annotations.
2025-07-17 20:57:51 +02:00
Tim van der Meij
ef9292094c
Merge pull request #20103 from calixteman/avoid_undefined_id
Don't add an undefined id to the span for marked content
2025-07-17 20:36:16 +02:00
Calixte Denizet
86d58b637f Don't add an undefined id to the span for marked content
It fixes #20102.
2025-07-17 19:13:30 +02:00
Calixte Denizet
636ff503ff [Editor] Add the possibility to add Popup annotations (bug 1976724)
It's a first big step.
This patch contains a new modal dialog to let the user edit/update a Popup
2025-07-15 22:39:16 +02:00
Tim van der Meij
9f645fb9a6
Merge pull request #20095 from calixteman/issue20091
[Editor] Make sure that doorhangers are large enough to fit localized strings
2025-07-15 19:50:48 +02:00
Tim van der Meij
be10bb8c7b
Merge pull request #20094 from calixteman/use_rounded_color_swatch
[Editor] Use a round color swatch for the basic color picker
2025-07-15 19:48:07 +02:00
Calixte Denizet
ca4e219b7b [Editor] Make sure that doorhangers are large enough to fit localized strings
It fixes #20091.
2025-07-15 17:14:44 +02:00
Calixte Denizet
b2aba463a5 [Editor] Use a round color swatch for the basic color picker 2025-07-15 15:06:07 +02:00
calixteman
5600c0ac02
Merge pull request #20092 from calixteman/mv_a11y_alert
Avoid Firefox test failure
2025-07-15 10:53:32 +02:00
Calixte Denizet
6b5aee2923 Avoid Firefox test failure
It fixes test: accessible/tests/mochitest/elm/test_HTMLSpec.html
2025-07-15 10:50:38 +02:00
calixteman
4f2390a607
Merge pull request #20070 from calixteman/editor_toolbar_color
[Editor] Add a color picker in the toolbar of Ink and Freetext annotations
2025-07-14 23:55:51 +02:00
Calixte Denizet
dbd6f8cdd4 [Editor] Add a color picker in the toolbar of Ink and Freetext annotations 2025-07-14 23:00:01 +02:00
calixteman
ac2a0c5080
Merge pull request #20085 from calixteman/bug1975719
Handle the case where all the image data are in the alpha channel (bug 1975719)
2025-07-14 22:44:19 +02:00
calixteman
e0783cd075
Merge pull request #20086 from timvandermeij/updates
Update dependencies and translations to the most recent versions
2025-07-13 19:47:11 +02:00
calixteman
9070a2786a
Merge pull request #20087 from timvandermeij/fix-intermittent-viewer
Fix the "must check that canvas perfectly fits the page whatever the zoom level" viewer integration test
2025-07-13 13:54:24 +02:00
Tim van der Meij
a0f8cbafcf
Fix the "must check that canvas perfectly fits the page whatever the zoom level" viewer integration test
In order to screenshot the page and assert that it's monochrome,
providing a regression test for #18694, the viewer background is
configured to match the page background because screenshotting the page
always captures a small part of the viewer background as well, and this
way we can easily go over all pixels and check that they are all equal.

However, in addition to configuring the viewer background the test also
hides the toolbar and removes the page border. Especially the latter
makes `scrollIntoView` fail in both Chrome and Firefox with recent
Puppeteer versions, for reasons which remain a bit unclear.

Fortunately both hiding the toolbar and removing the page border is not
actually necessary (anymore) for the test to work, so we can simply
remove those actions to fix the issue and reduce the amount of code. To
make sure that the test still covers the original issue correctly we've
reverted the changes from #18698 and then test still fails as expected.

Fixes #19811.
Fixes 68332ec2.
2025-07-12 21:49:33 +02:00
Tim van der Meij
3054942101
Update translations to the most recent versions 2025-07-12 20:21:07 +02:00
Tim van der Meij
7a129f8eae
Update dependencies to the most recent versions 2025-07-12 20:20:05 +02:00
Tim van der Meij
b7a0f01f40
Merge pull request #19976 from calixteman/write_popup
[Editor] Add the possibility to add a popup to an annotation when saving
2025-07-12 15:28:56 +02:00
Tim van der Meij
64b150f78f
Merge pull request #20077 from calixteman/remove_popup
[Editor] Remove a popup from the DOM when it's deleted
2025-07-12 15:25:49 +02:00
Calixte Denizet
6f8796d2c8 Handle the case where all the image data are in the alpha channel (bug 1975719)
and add an error message in case where there is no data in the image.
2025-07-11 22:34:37 +02:00
Calixte Denizet
b07914843b [Editor] Remove a popup from the DOM when it's deleted 2025-07-11 21:55:14 +02:00
Calixte Denizet
8fc51dc089 [Editor] Add the possibility to add a popup to an annotation when saving
When saving/printing, only update the properties which are provided and set
a default value only when there is no pre-existing one.
2025-07-11 21:42:21 +02:00
Tim van der Meij
e853a8f41a
Merge pull request #20081 from calixteman/signature_description
Add the l10n parameter when pasting a Signature annotation
2025-07-11 20:27:06 +02:00
Tim van der Meij
c296fb8f95
Merge pull request #20084 from calixteman/hcm_popup_trigger_area
In HCM, invert colors when hovering an annotation with a popup
2025-07-11 20:22:31 +02:00
Tim van der Meij
094253f2de
Merge pull request #20082 from calixteman/fix_firefox_printing
Use the canvas context from mozPrintCallback when printing a pdf from the Firefox viewer
2025-07-11 20:21:03 +02:00
Calixte Denizet
7091647039 In HCM, invert colors when hovering an annotation with a popup 2025-07-11 15:35:35 +02:00
Calixte Denizet
1c15ba7789 Use the canvas context from mozPrintCallback when printing a pdf from the Firefox viewer
The context is specific to the callback and cannot be created from the canvas itself.
2025-07-11 12:55:39 +02:00
Calixte Denizet
0f504d9a1a Add the l10n parameter when pasting a Signature annotation 2025-07-10 21:01:24 +02:00
calixteman
2e0f1ec515
Merge pull request #20076 from calixteman/revert_20047
Revert "Make horizontal padding relative to device width"
2025-07-09 18:09:26 +02:00
Calixte Denizet
e36f58ee4d Revert "Make horizontal padding relative to device width"
This reverts commit c138887c1f7613bce44b99d22b63e2d744b0fb40.
2025-07-09 17:38:49 +02:00
calixteman
2dadac8877
Merge pull request #20071 from ryzokuken/bump-version-5.4
Bump library version to `5.4`
2025-07-09 14:57:13 +02:00
Ujjwal Sharma
1d702d4d6d Bump library version to 5.4 2025-07-08 23:27:41 +02:00
calixteman
1b427a3af5
Merge pull request #20016 from ryzokuken/move-getcontext
[api-minor] Move getContext call to InternalRenderTask
2025-07-08 22:20:19 +02:00
calixteman
0e2b59e3d5
Merge pull request #20064 from calixteman/dict_api
Add few methods to the Dict class in order to simplify the code when writing an annotation
2025-07-08 22:16:57 +02:00
calixteman
481b74a1c2
Merge pull request #20063 from calixteman/issue20062
Fix the default appearance of a Polygon annotation when a fill color is provided
2025-07-08 22:10:52 +02:00
Calixte Denizet
63b37b4371 Add few methods to the Dict class in order to simplify the code when writing an annotation 2025-07-08 21:23:29 +02:00
Calixte Denizet
ecc7096a80 Fix the default appearance of a Polygon annotation when a fill color is provided
It fixes #20062.
2025-07-08 20:51:58 +02:00
Tim van der Meij
b999d5ce58
Merge pull request #20060 from noritaka1166/fix-typos
Fix typos across the codebase
2025-07-08 18:28:52 +02:00
calixteman
729f2bb148
Merge pull request #20058 from calixteman/use_creationdate_popup
Use the creation date in the popup when there is no modification date
2025-07-07 10:55:28 +02:00
Calixte Denizet
bb52a440ce Use the creation date in the popup when there is no modification date
Remove the h1 element in popup title because it caused a warning in Firefox and use a span instead.
2025-07-07 10:51:35 +02:00
Noritaka Kobayashi
fa568e826d
Fix typos across the codebase 2025-07-07 09:59:36 +09:00
Tim van der Meij
b3794c7148
Merge pull request #20061 from timvandermeij/bump
Bump the stable version in `pdfjs.config`
2025-07-06 20:45:30 +02:00
Tim van der Meij
be1f5fe009
Bump the stable version in pdfjs.config 2025-07-06 20:42:12 +02:00
Tim van der Meij
cbeef3233f
Merge pull request #20056 from calixteman/one_click
[Editor] Allow to change the editor mode when selecting the corresponding editor (bug 1975538)
2025-07-06 19:35:31 +02:00
Ujjwal Sharma
b1b728d47f [api-minor] Move getContext call to InternalRenderTask
This is a precursor to moving the call into a
worker thread to let us use `OffscreenCanvas`. The
current position wouldn't work since we make
transformations to the canvas object after the
getContext call, which isn't allowed for
OffscreenCanvas. Also it isn't allowed to clone or
`transferControlToOffscreen` the canvas after the
`getContext` call.
2025-07-04 00:53:51 +02:00
Calixte Denizet
6d2c6cfc9f [Editor] Allow to change the editor mode when selecting the corresponding editor (bug 1975538)
For example, selecting an ink editor just after having created a freetext will switch to ink mode.
2025-07-03 23:27:34 +02:00
calixteman
2d0ba7db08
Merge pull request #20043 from yyliu12/popup-rotation-fix
Make Popup annotations always have noRotate flag set as true
2025-07-03 17:27:40 +02:00
calixteman
ad31385792
Merge pull request #20055 from calixteman/bug1975264
[Editor] When an annotation is added, announce it if the user is using a screen reader (bug 1975264)
2025-07-03 17:23:56 +02:00
calixteman
54c0d56ccf
Merge pull request #20054 from calixteman/bug1974863
Don't focus the viewer at startup (bug 1974863)
2025-07-03 17:01:19 +02:00
Calixte Denizet
c22a425b04 [Editor] When an annotation is added, announce it if the user is using a screen reader (bug 1975264) 2025-07-03 16:53:01 +02:00
calixteman
fd87e668e0
Merge pull request #20047 from Aditi-1400/fix-horizontal-scroll
Make horizontal padding relative to device width
2025-07-03 16:52:15 +02:00
Yuyang Liu
d8ecfad8bd Make Popup annotations always have noRotate flag set as true
Necessary because when there is no Popup annotation created along
with a Text annotation, the Popup annotation created by pdf.js
does not receive the noRotate flag
2025-07-03 05:52:31 +09:00
Calixte Denizet
aaae516894 Don't focus the viewer at startup (bug 1974863)
It's useless and it causes screen readers to not always read the document title.
2025-07-02 17:34:23 +02:00
calixteman
426ee03488
Merge pull request #20041 from calixteman/bug1974436
Remove the shadow from the links (bug 1974436)
2025-07-01 12:59:17 +02:00
Tim van der Meij
8f2a4561b2
Merge pull request #20039 from calixteman/bug1974257
[Editor] In the signature modal, disable the save checkbox when the storage is full (bug 1974257)
2025-06-30 21:46:38 +02:00
Calixte Denizet
9acd16a0c7 [Editor] In the signature modal, disable the save checkbox when the storage is full (bug 1974257) 2025-06-30 21:42:28 +02:00
Calixte Denizet
fc9ba0cda3 Remove the shadow from the links (bug 1974436)
The shadow was taken into account when computing the bounding box of the section
containing the link and it was making the clip path wrong.
Since the shadow is almost invisible because of the opacity, the yellow color and the clip
we can remove it without causing any visual regressions (and as a side effect it'll avoid
to use resources to compute it when displayed).
2025-06-30 21:39:22 +02:00
Tim van der Meij
f4043b03e2
Merge pull request #20038 from calixteman/bug1974112
Don't remove a dash at the end of a line when guessing urls (bug 1974112)
2025-06-30 20:43:17 +02:00
Aditi
c138887c1f Make horizontal padding relative to device width
The fixed -400px horizontal offset used by
scrollIntoView led to horizontal scroll only moving
part-way right on narrow screens. The highlights near
the right-edge remained party or completely off
screen.

This centres the highlighted match on any viewport width while
clamping the left margin to 20-400px. On very narrow screens
the scrollbar now moves all the way to the right instead of
stopping midway.
2025-06-30 19:08:02 +05:30
Calixte Denizet
bb6b42177c Don't remove a dash at the end of a line when guessing urls (bug 1974112) 2025-06-26 18:55:59 +02:00
calixteman
85b67f19bc
Merge pull request #20031 from calixteman/telemetry_signature_certificate
Add some telemetry in order to know what are the certificates used in pdfs (bug 1973573)
2025-06-24 22:36:14 +02:00
Calixte Denizet
194e2ede4d Add some telemetry in order to know what are the certificates used in pdfs (bug 1973573) 2025-06-24 22:23:29 +02:00
calixteman
1ebc896b6f
Merge pull request #20019 from calixteman/bug1885505
Get the text under highlight/squiggly/underline/strikethrough annotations (bug 1885505)
2025-06-22 23:39:40 +02:00
Calixte Denizet
3bdc5d54fe Get the text under highlight/squiggly/underline/strikethrough annotations (bug 1885505)
and add an invisible element containing the text in the annotation layer to make
it readable by a screen reader.
2025-06-22 21:47:29 +02:00
Tim van der Meij
7d3b2a6d3f
Merge pull request #20028 from timvandermeij/updates
Update dependencies and translations to the most recent versions
2025-06-22 18:38:23 +02:00
Tim van der Meij
08c0a6d6b1
Update translations to the most recent versions 2025-06-22 15:40:43 +02:00
Tim van der Meij
571a04bd23
Fix low-severity vulnerability in the brace-expansion dependency
This patch is automatically generated with `npm audit fix` and fixes
CVE-2025-5889.
2025-06-22 15:40:43 +02:00
Tim van der Meij
bd511747c8
Upgrade @types/node to version 24.0.3
This commit makes the type definitions compatible with Node 24 which was
released in May 2025.
2025-06-22 15:25:35 +02:00
Tim van der Meij
7f619c7605
Update dependencies to the most recent versions 2025-06-22 15:24:53 +02:00
Tim van der Meij
8fe9db0fb5
Merge pull request #20022 from calixteman/color_picker_a11y
[Editor] Fix the accessibility of the dropdown in the color picker
2025-06-22 14:23:20 +02:00
Tim van der Meij
ac399e77e8
Merge pull request #20023 from calixteman/edit_added_annotation
[Editor] When editing mode is disabled, allow to double click on a added annotation to edit it
2025-06-21 16:23:56 +02:00
Tim van der Meij
032f80e46a
Merge pull request #20027 from calixteman/issue20024
Allow to have an URL as file parameter when loading the viewer
2025-06-21 16:17:45 +02:00
Calixte Denizet
eafc040734 Allow to have an URL as file parameter when loading the viewer 2025-06-21 14:57:24 +02:00
calixteman
c7796c7f8d
Merge pull request #19993 from calixteman/editor_toolbar_simplification
Slightly simplify the way to create the editor toolbar
2025-06-20 21:59:01 +02:00
calixteman
e78575e593
Merge pull request #19986 from calixteman/dont_show_empty_popup
Only show popups when they've some contents to display
2025-06-20 13:48:30 +02:00
calixteman
84d1703897
Merge pull request #19992 from calixteman/hashtag_filename
Correctly handle files with a hash sign in their names (bug 1894166)
2025-06-20 12:52:31 +02:00
Calixte Denizet
b97cee2ab5 Correctly handle files with a hash sign in their names (bug 1894166)
It fixes #19990.
2025-06-20 09:21:41 +02:00
calixteman
e9527ce308
Merge pull request #20021 from calixteman/issue15490
[JS] Make the date parser less strict
2025-06-20 09:12:43 +02:00
Calixte Denizet
2541d96bf5 [JS] Make the date parser less strict
and display the expected date formt as a tooltip.
2025-06-20 08:57:07 +02:00
Calixte Denizet
2548405401 Slightly simplify the way to create the editor toolbar 2025-06-19 23:03:06 +02:00
Calixte Denizet
d0b0064643 [Editor] When editing mode is disabled, allow to double click on a added annotation to edit it
It's already possible but only when double clicking outside the the text layer.
This patach adds the possibility to click on the text layer.
2025-06-19 21:15:08 +02:00
Calixte Denizet
1f2e9e5c0f [Editor] Fix the accessibility of the dropdown in the color picker 2025-06-19 20:08:33 +02:00
Calixte Denizet
96216de410 Only show popups when they've some contents to display
Chrome, Edge and Acrobat do that.
2025-06-19 16:33:52 +02:00
calixteman
5653458b51
Merge pull request #20013 from calixteman/fix_annotation_tabindex
Make annotations focusable just after the text layer
2025-06-19 14:09:27 +02:00
calixteman
3baea2feff
Merge pull request #20003 from calixteman/bug1971299
Remove the possibility to go to the next page in using the ENTER key (bug 1971299)
2025-06-17 22:43:18 +02:00
calixteman
412500c9b9
Merge pull request #19996 from calixteman/bug1961423_bis
Fix a printing issue on Mac (bug 1961423)
2025-06-17 21:23:49 +02:00
calixteman
35b604b9f8
Merge pull request #20011 from calixteman/bug1971134
[Editor] Fix the text alignment in freetext annotations (bug 1971134)
2025-06-17 21:18:50 +02:00
calixteman
802808c47a
Merge pull request #20004 from calixteman/move_popup_dom
Move the popup annotation in the DOM just after the element triggering it
2025-06-16 23:11:23 +02:00
Calixte Denizet
0d995fa089 Make annotations focusable just after the text layer 2025-06-16 19:06:13 +02:00
Calixte Denizet
8d7246af98 [Editor] Fix the text alignment in freetext annotations (bug 1971134) 2025-06-16 15:11:32 +02:00
Calixte Denizet
27a81c506e Move the popup annotation in the DOM just after the element triggering it 2025-06-16 14:42:44 +02:00
Tim van der Meij
c796b93473
Merge pull request #20002 from nicolo-ribaudo/reftest-log-progress
Log test number and id in reftests
2025-06-15 19:36:11 +02:00
Calixte Denizet
07f94825c3 Remove the possibility to go to the next page in using the ENTER key (bug 1971299) 2025-06-10 14:58:18 +02:00
Nicolò Ribaudo
f789c132da
Log test number and id in reftests
The new output looks like
```
Harness thinks this browser is firefox
Fetching manifest "/test/test_manifest.json"... done
[1/1152] bug1755201:
  Skipping file "pdfs/bug1755201.pdf"
[2/1152] issue14864:
  Skipping file "pdfs/issue14864.pdf"
[3/1152] issue18503:
  Skipping file "pdfs/issue18503.pdf"
[4/1152] issue19835:
  Skipping file "pdfs/issue19835.pdf"
[5/1152] filled-background-range:
  Loading file "pdfs/filled-background.pdf"
    Loading page 1/3... Snapshotting... done
    Loading page 2/3... Snapshotting... done
    Loading page 3/3... Snapshotting... done
[6/1152] tracemonkey-eq:
  Loading file "pdfs/tracemonkey.pdf"
    Loading page 1/14... Snapshotting... done
    Loading page 2/14... Snapshotting... done
```

This gives an idea of how many tests are left while they are running
2025-06-09 18:48:06 +02:00
Tim van der Meij
250cc7d299
Merge pull request #20000 from timvandermeij/intermittent-find
Fix intermittent failure in the find integration tests
2025-06-08 22:11:15 +02:00
Tim van der Meij
7133259341
Merge pull request #19997 from timvandermeij/updates
Update dependencies and translations to the most recent versions
2025-06-08 22:10:01 +02:00
Tim van der Meij
64a2d708f9
Fix intermittent failure in the find integration tests
After clicking the find button we need to wait for the input field to
appear before we try to type in it, but instead we were waiting for the
button to appear. However, the button is always present, so the current
`waitForSelector` call is basically a no-op, and this can cause the
integration tests to fail intermittently if we continue before the
input field is actually visible.

This appears to be due a typo first introduced in commit
d10da907dac86c103b787127110a59aed82c7aaa that has been copy/pasted.

This commit fixes the issue by waiting for the input field to be visible
before we continue typing in it.
2025-06-08 20:21:13 +02:00
Tim van der Meij
9edcfa26ca
Update translations to the most recent versions 2025-06-08 18:07:23 +02:00
Tim van der Meij
fda68a5a56
Upgrade yargs to version 18.0.0
This is a major version bump, but the changelog at
https://github.com/yargs/yargs/releases/tag/v18.0.0
doesn't indicate any breaking changes that should impact us.
2025-06-08 18:07:23 +02:00
Tim van der Meij
34ef9ece38
Upgrade svglint to version 4.1.0
This is a major version bump, but the changelog at
https://github.com/simple-icons/svglint/releases/tag/v4.0.0
doesn't indicate any breaking changes that should impact us.
2025-06-08 18:06:12 +02:00
Tim van der Meij
003cffe6cb
Update dependencies to the most recent versions 2025-06-08 18:02:45 +02:00
Calixte Denizet
14f0e88910 Fix a printing issue on Mac (bug 1961423)
On mac, the pdf backend used when printing is using the cid from the font,
so if a char has null cid then it's equivalent to .notdef and some viewers
don't display it.
2025-06-07 21:33:17 +02:00
calixteman
18d7aafc94
Merge pull request #19985 from calixteman/puppeteer_24.10.0
Update Puppeteer to version 24.10.0
2025-06-03 20:55:45 +02:00
Calixte Denizet
fd3a41c149 Update Puppeteer to version 24.10.0 2025-06-03 19:38:35 +02:00
Tim van der Meij
7e8587428d
Merge pull request #19981 from timvandermeij/bump
Bump the stable version in `pdfjs.config`
2025-06-01 20:30:28 +02:00
Tim van der Meij
8a0eb51f53
Bump the stable version in pdfjs.config 2025-06-01 20:26:12 +02:00
Tim van der Meij
47ad820d95
Merge pull request #19952 from timvandermeij/intermittent-viewer-origin
Fix intermittent failure in the "supports specifying a custom origin" viewer integration test
2025-06-01 20:10:31 +02:00
Tim van der Meij
f251e600d2
Fix intermittent failure in the "supports specifying a custom origin" viewer integration test
The problem in the original code is that `getTextAt` is called too
early and therefore returns unexpected text content. This can happen
because we call `increaseScale` and then wait for the page's text layer
to be visible, but it can take some time before the zoom actually
occurs/completes in the viewer and in the meantime the old (pre-zoom)
text layer may still be visible, causing us to continue too soon because
we don't validate that we're dealing with the post-zoom text layer.

This commit fixes the issue by simply waiting for the expected text to
show up at the given origin coordinates, which makes the test work
independent of viewer actions/timing.
2025-06-01 19:33:58 +02:00
calixteman
d63aabd662
Merge pull request #19969 from calixteman/editor_inconsistencies
[Editor] Change mode when double clicking on an editor
2025-05-28 18:00:26 +02:00
Calixte Denizet
47e69e93a3 [Editor] Change mode when double clicking on an editor
It was only possible to double click on a FreeText editor while being in ink mode (or any other).
2025-05-28 17:49:16 +02:00
calixteman
712d502561
Merge pull request #19975 from calixteman/fix_color_dialog_buttons
Fix the colors of disabled buttons in the dialogs
2025-05-28 16:14:28 +02:00
Calixte Denizet
de1a9e7055 Fix the colors of disabled buttons in the dialogs 2025-05-26 19:11:24 +02:00
Tim van der Meij
21ef454faf
Merge pull request #19962 from Snuffleupagus/api_utils
Move a few helper functions/classes out of the `src/display/api.js` file
2025-05-24 14:21:29 +02:00
Tim van der Meij
d90ec29b4d
Merge pull request #19964 from Snuffleupagus/core-catalog-private
Replace semi-private fields/methods with actual private ones in `src/core/catalog.js`
2025-05-24 14:16:06 +02:00
Jonas Jenwald
f11d8b0f67
Merge pull request #19972 from Snuffleupagus/issue-19971
Ignore empty paths when optimizing `constructPath` operations (issue 19971)
2025-05-23 18:34:07 +02:00
Jonas Jenwald
c5449a98e0 Ignore empty paths when optimizing constructPath operations (issue 19971)
Note how we're handling empty paths in [src/display/canvas.js](a8e05d82e2/src/display/canvas.js (L1423-L1428)), hence we need add similar code in the `QueueOptimizer` as well.
2025-05-23 13:59:05 +02:00
Jonas Jenwald
a8e05d82e2
Merge pull request #19961 from nicolo-ribaudo/debugger-contructPath-op
Show the op dispatched by constructPath in the debugger
2025-05-23 13:15:55 +02:00
Jonas Jenwald
d81174d7bc
Merge pull request #19956 from Snuffleupagus/versionInfoHeader
Improve how the PDF.js version/commit information is exposed in the *built* files
2025-05-22 15:24:02 +02:00
calixteman
875233b3c6
Merge pull request #19967 from mozilla/revert-19934-minify
Revert "Minify the js code when building for Firefox (bug 1965003)"
2025-05-22 14:22:49 +02:00
calixteman
32789073a9
Revert "Minify the js code when building for Firefox (bug 1965003)" 2025-05-22 14:08:31 +02:00
Jonas Jenwald
a90e46bdc9 Use nullish coalescing in the Catalog.prototype.numPages getter 2025-05-21 16:47:20 +02:00
Jonas Jenwald
0d2ab3c709 Replace semi-private fields/methods with actual private ones in src/core/catalog.js
Additionally, move a couple of "public" fields out of the class constructor and initialize them directly instead.
2025-05-21 12:10:07 +02:00
Jonas Jenwald
e91b480c09 Move the PDFObjects class to its own file
This isn't directly part of the official API, and having this class in its own file could help avoid future changes (e.g. issue 18148) affecting the size of the `src/display/api.js` file unnecessarily.
2025-05-20 13:47:36 +02:00
Jonas Jenwald
0105237af6 Move a few helper functions/classes out of the src/display/api.js file
Given that this file represents the official API, it's difficult to avoid it becoming fairly large as we add new functionality. However, it also contains a couple of smaller (and internal) helpers that we can move into a new utils-file.

Also, we inline the `DEFAULT_RANGE_CHUNK_SIZE` constant since it's only used *once* and its value has never been changed in over a decade.
2025-05-20 13:47:36 +02:00
Nicolò Ribaudo
0596f03d4e
Show the op dispatched by constructPath in the debugger
The `constructPath` op receives as arguments not only the
information to construct the path, but also the op to apply
the path to (such as "fill", or "stroke").

This commit updates the Stepper tool in the debugger to decode
that op, showing its name rather than just its numeric ID.
2025-05-19 19:33:14 +02:00
calixteman
fc68a9f3ee
Merge pull request #19958 from calixteman/rm_useless_subarray_flate_stream
Don't create a useless subarray when getting image data from a flate stream
2025-05-19 19:29:25 +02:00
Jonas Jenwald
e921533577
Merge pull request #19960 from Snuffleupagus/version-5.3
Bump library version to `5.3`
2025-05-19 18:00:47 +02:00
Jonas Jenwald
6c803e89e6 Bump library version to 5.3 2025-05-19 17:57:28 +02:00
calixteman
f148106cb1
Merge pull request #19957 from calixteman/rm_qcms_subarray
Remove all the useless subarrays when using qcms.
2025-05-19 17:33:52 +02:00
calixteman
72faeeab93
Merge pull request #19959 from calixteman/undefined_worker_port
Fix pdfjsPreloadedWorker when it's undefined
2025-05-19 17:29:18 +02:00
Jonas Jenwald
36b40d959b
Merge pull request #19955 from Snuffleupagus/issue-19954
Support Type3 fonts with an incomplete /FontDescriptor dictionary (issue 19954)
2025-05-19 17:26:46 +02:00
Calixte Denizet
69231e2dbd Fix pdfjsPreloadedWorker when it's undefined 2025-05-19 17:05:37 +02:00
Calixte Denizet
3ecbef516d Don't create a useless subarray when getting image data from a flate stream 2025-05-19 16:48:23 +02:00
Calixte Denizet
782e883a87 Remove all the useless subarrays when using qcms.
It reduces the memory use and the newly added function `getRgbHex` is 4 times faster.
2025-05-19 16:07:57 +02:00
calixteman
2b9f621087
Merge pull request #19953 from calixteman/rm_useless_arrays
[api-minor] Create the css color to use with the canvas in the worker
2025-05-19 16:02:08 +02:00
Jonas Jenwald
c02ea0c681 Simplify how we handle Type3 fonts without a /FontDescriptor dictionary
Part of this is very old code, which we can now simplify a little bit.
2025-05-19 15:26:11 +02:00
Jonas Jenwald
97a42486f5 Improve how the PDF.js version/commit information is exposed in the *built* files
To make it easier to tell which PDF.js version/commit that the *built* files correspond to, they have (since many years) included `pdfjsVersion` and `pdfjsBuild` constants with that information.

As currently implemented this has a few shortcomings:
 - It requires manually adding the code, with its preprocessor statements, in all relevant files.

 - It requires ESLint disable statements, since it's obviously unused code.

 - Being unused, this code is removed in the minified builds.

 - This information would be more appropriate as comments, however Babel discards all comments during building.

 - It would be helpful to have this information at the top of the *built* files, however it's being moved during building.

To address all of these issues, we'll instead utilize Webpack to insert the version/commit information as a comment placed just after the license header.
2025-05-19 15:01:05 +02:00
Calixte Denizet
5789afd3f8 Create the css color to use with the canvas in the worker
It slightly reduces the time spent to draw and the memory used.
2025-05-19 14:52:24 +02:00
Jonas Jenwald
5f5d9dfc28 Support Type3 fonts with an incomplete /FontDescriptor dictionary (issue 19954)
We have a fallback for the common case of Type3 fonts without a /FontDescriptor dictionary, however we also need to handle the case where it's present but lacking the required /FontName entry.
2025-05-19 12:56:14 +02:00
Tim van der Meij
60574fb7e3
Merge pull request #19950 from timvandermeij/intermittent-all-await
Fix missing `await` for asynchronous method calls in the integration tests
2025-05-18 19:12:48 +02:00
Tim van der Meij
393e799e49
Fix missing await for asynchronous method calls in the integration tests
The `Page.evaluate()` and `Mouse.click()` APIs in Puppeteer both return
a promise; see https://pptr.dev/api/puppeteer.page.evaluate and
https://pptr.dev/api/puppeteer.mouse.click, and should therefore be
awaited before proceeding in tests to make sure that the test's behavior
is deterministic and avoid intermittent failures.

The following command was used to find potential places to fix:
`grep -nEr "[^await|return] page\." test/integration/*`
2025-05-18 18:19:46 +02:00
Tim van der Meij
819671d42f
Merge pull request #19949 from timvandermeij/intermittent-stamp-undo
Fix intermittent failure in the stamp editor's undo-related integration tests
2025-05-18 15:17:41 +02:00
Tim van der Meij
6355dd7ded
Fix intermittent failure in the stamp editor's undo-related integration tests
The clipboard, used via the `copyImage` helper function, is a shared
resource, so access to it cannot happen concurrently because it could
result in tests overwriting each other's contents. Most tests using
the clipboard are therefore run sequentially, but only the stamp
editor's undo-related tests weren't, so this commit fixes the issue
by running those tests sequentially too.
2025-05-18 14:36:19 +02:00
Tim van der Meij
f6e4b1cf4a
Merge pull request #19945 from Snuffleupagus/NetworkStream-rm-Node-Error
Remove Node.js-specific checks when using the Fetch API
2025-05-18 12:05:13 +02:00
Tim van der Meij
30bba5f165
Merge pull request #19944 from Snuffleupagus/PDFDataRangeTransport-private-fields
Use private fields in the `PDFDataRangeTransport` class
2025-05-18 12:01:03 +02:00
Jonas Jenwald
a882195e9b Remove Node.js-specific checks when using the Fetch API
Given that Node.js has full support for the Fetch API since version 21, see the "History" data at https://nodejs.org/api/globals.html#fetch, it seems unnecessary for us to manually check for various globals before using it.

Since our primary development target is browsers in general, and Firefox in particular, being able to remove Node.js-specific compatibility code is always helpful.

Note that we still, for now, support Node.js version 20 and if the relevant globals are not available then Errors will instead be thrown from within the `PDFFetchStream` class.
2025-05-18 10:49:02 +02:00
Jonas Jenwald
99b23ea1f6 Use private fields in the PDFDataRangeTransport class 2025-05-18 10:16:46 +02:00
Jonas Jenwald
f72f240699
Merge pull request #19939 from Snuffleupagus/disableWorker-clear-workerPort
Ensure that the viewer clears the `workerPort` option when using "fake" workers
2025-05-18 08:38:48 +02:00
Tim van der Meij
23f269b353
Merge pull request #19942 from timvandermeij/updates
Update dependencies and translations to the most recent versions
2025-05-17 20:41:48 +02:00
Tim van der Meij
91679ece4b
Merge pull request #19943 from Snuffleupagus/PDFWorker-create
Replace `PDFWorker.fromPort` with a generic `PDFWorker.create` method
2025-05-17 19:12:38 +02:00
Jonas Jenwald
fc697b3602 Utilize private fields and methods more in the PDFWorker class
This replaces, wherever possible, the old semi-private fields and methods with actually private ones.
2025-05-17 18:05:49 +02:00
Jonas Jenwald
ab672f0b77 Replace PDFWorker.fromPort with a generic PDFWorker.create method
This allows us to simply invoke `PDFWorker.create` unconditionally from the `getDocument` function, without having to manually check if a global `workerPort` is available first.
2025-05-17 16:13:41 +02:00
Tim van der Meij
1e4ba0b8bf
Update translations to the most recent versions 2025-05-17 15:58:38 +02:00
Tim van der Meij
d297e44f3f
Update dependencies to the most recent versions 2025-05-17 15:50:54 +02:00
Tim van der Meij
278fc064eb
Merge pull request #19917 from Snuffleupagus/unicorn-59-rule-updates
Add a couple of new `eslint-plugin-unicorn` rules
2025-05-17 13:55:52 +02:00
Jonas Jenwald
b81b9ce00d Add a couple of new eslint-plugin-unicorn rules
The recent `eslint-plugin-unicorn` update added, and replaced, a few rules that seem useful for us; please refer to https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v59.0.0

Note that none of the following rules required any code-changes:
 - Replace `no-array-push-push` with `prefer-single-call`, see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-single-call.md

 - Add `no-unnecessary-slice-end`, see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-unnecessary-slice-end.md

 - Add `no-unnecessary-array-flat-depth`, see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-unnecessary-array-flat-depth.md

 - Add `no-unnecessary-array-splice-count`, see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-unnecessary-array-splice-count.md
2025-05-17 13:49:11 +02:00
Tim van der Meij
b05351ceae
Merge pull request #19937 from studystill/master
chore: remove redundant word in comment
2025-05-17 13:34:39 +02:00
Tim van der Meij
57cbaae8e4
Merge pull request #19916 from Snuffleupagus/prefer-import-meta-properties
Enable the `unicorn/prefer-import-meta-properties` ESLint plugin rule
2025-05-17 13:33:48 +02:00
Jonas Jenwald
eef1e3e87f Ensure that the viewer clears the workerPort option when using "fake" workers
Without this "fake" workers may be ignored in the API, which isn't really what you want when manually providing the `disableWorker=true` hash parameter. (Note that this requires the `pdfBugEnabled` option/preference to be set as well.)

Also, after the changes in PR 19810 we can just load the "fake" worker directly in development mode and don't need to manually assign it to the global scope.
2025-05-17 11:41:33 +02:00
studystill
b585937340 chore: remove redundant word in comment
Signed-off-by: studystill <chenghuiyue@outlook.com>
2025-05-16 15:16:26 +08:00
Jonas Jenwald
13c9995455 Enable the unicorn/prefer-import-meta-properties ESLint plugin rule
Given that we require Node.js versions `>=20.16.0 || >=22.3.0` using this should be fine, based on the "History" data in https://nodejs.org/api/esm.html#importmetadirname respectively https://nodejs.org/api/esm.html#importmetafilename.

Please also see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-import-meta-properties.md
2025-05-16 07:47:08 +02:00
Jonas Jenwald
d97b65378f
Merge pull request #19933 from mozilla/dependabot/npm_and_yarn/undici-6.21.3
Bump undici from 6.21.1 to 6.21.3
2025-05-15 23:28:00 +02:00
calixteman
f4a3e47018
Merge pull request #19935 from calixteman/bug1966721
Use the worker created in the child actor (bug 1966721)
2025-05-15 21:21:06 +02:00
Calixte Denizet
f01b13d332 Use the worker created in the child actor (bug 1966721) 2025-05-15 21:17:44 +02:00
Jonas Jenwald
b3ccc55c1d
Merge pull request #19936 from Snuffleupagus/workerPort-firefox
Allow using the `workerPort` option in Firefox
2025-05-15 21:09:08 +02:00
calixteman
be463f0e0c
Merge pull request #19934 from calixteman/minify
Minify the js code when building for Firefox (bug 1965003)
2025-05-15 20:11:11 +02:00
Jonas Jenwald
e5e9d18289 Allow using the workerPort option in Firefox 2025-05-15 19:30:43 +02:00
Calixte Denizet
8129ccc9a7 Minify the js code when building for Firefox (bug 1965003)
It helps to improve the loading time in the worker by around 25% on Windows, Mac and Android.
2025-05-15 19:01:52 +02:00
dependabot[bot]
64c1e07f22
Bump undici from 6.21.1 to 6.21.3
Bumps [undici](https://github.com/nodejs/undici) from 6.21.1 to 6.21.3.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v6.21.1...v6.21.3)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 6.21.3
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-15 15:23:50 +00:00
Jonas Jenwald
b070a502c3
Merge pull request #19929 from Snuffleupagus/bug-1966086
Prefer the /Metadata, when available, in the document properties dialog (bug 1966086)
2025-05-15 15:54:42 +02:00
Jonas Jenwald
ab89773e49 Prefer the /Metadata, when available, in the document properties dialog (bug 1966086) 2025-05-15 15:12:09 +02:00
Jonas Jenwald
d4d0081ac9
Merge pull request #19923 from nicolo-ribaudo/fix-new-url
Remove unused OpenJPEG wasm fallback logic
2025-05-14 08:11:37 +02:00
Marco Castelluccio
2ed959d75a
Merge pull request #19897 from Snuffleupagus/ci-Node-24
Run CI tests in Node.js version 24
2025-05-14 00:09:06 +02:00
calixteman
a4b5b7c4bb
Merge pull request #19925 from calixteman/bug1962819
[Editor] Keep aspect ratio when rescaling an image before being processed for a signature (bug 1962819)
2025-05-13 20:07:11 +02:00
Nicolò Ribaudo
aebe0cb67f
Remove unused OpenJPEG wasm fallback logic
Emscripten generates code that allows the caller to provide the Wasm
module (thorugh Module.instantiateWasm), with a fallback in case
.instantiateWasm is not provided. We always define instantiateWasm, so
we can hard-code the check and let our dead code elimination logic
remove the unused fallback.

This commit also improved the dead code elimination logic so that if
a function declaration becomes unused as a result of removing dead
code, the function itself is removed.
2025-05-13 19:38:17 +02:00
Calixte Denizet
d6605674dd [Editor] Keep aspect ratio when rescaling an image before being processed for a signature (bug 1962819) 2025-05-13 19:12:17 +02:00
calixteman
2bb8099831
Merge pull request #19924 from calixteman/update_qcms
Update qcms build
2025-05-13 17:49:54 +02:00
Calixte Denizet
09f0af5b83 Update qcms build
It's a follow-up of https://github.com/mozilla/pdf.js.qcms/pull/1.
2025-05-13 16:44:18 +02:00
Jonas Jenwald
5e3d26601e
Merge pull request #19922 from nicolo-ribaudo/vite-ignore-minified
Preserve webpack/vite ignore comments when minifying
2025-05-13 14:54:17 +02:00
Nicolò Ribaudo
ff432c39f9
Preserve webpack/vite ignore comments when minifying
They were removed in the minified build, but the code that made the comments necessary was still there (just minified). This commit updates the Terser config to preserve them.

The default value of Terser's `comments` option is [`/@preserve|@copyright|@lic|@cc_on|^\**!/i`](d528103b7c/lib/output.js (L178C12-L178C53)), however the only type of comment it was actually matching in our case is `@lic`, for the license header in minified files. Thus the new regexp is `/@lic|webpackIgnore|@vite-ignore/i`.
2025-05-13 12:52:29 +02:00
Jonas Jenwald
3f1ecc1ba9
Merge pull request #19915 from Snuffleupagus/OutputScale-capPixels
Reduce duplication when computing the maximum canvas pixels
2025-05-10 21:47:52 +02:00
Jonas Jenwald
d5c534fb83 Reduce duplication when computing the maximum canvas pixels
*This is something that occurred to me when reviewing the latest PDF.js update in mozilla-central.*

Currently we duplicate essentially the same code in both the `OutputScale.prototype.limitCanvas` and `PDFPageDetailView.prototype.update` methods, which seems unnecessary, and to avoid that we introduce a new `OutputScale.capPixels` method that is used to compute the maximum canvas pixels.
2025-05-10 20:12:38 +02:00
calixteman
ca05a0dbfc
Merge pull request #19911 from calixteman/issue19753
Decode appearance keys of checkboxes
2025-05-10 15:01:22 +02:00
Jonas Jenwald
5f4bfe1fb9
Merge pull request #19913 from Snuffleupagus/openAction-array-validate
Improve validation in the `Catalog.prototype.openAction` getter
2025-05-10 14:53:48 +02:00
Jonas Jenwald
f26f984fa0 Improve validation in the Catalog.prototype.openAction getter
When the /OpenAction data is an Array we're currently using it as-is which could theoretically cause problems in corrupt PDF documents, hence we ensure that a "raw" destination is actually valid. (This change is covered by existing unit-tests.)

*Note:* In the Dictionary case we're using the `Catalog.parseDestDictionary` method, which already handles all of the necessary validation.
2025-05-10 11:51:58 +02:00
Calixte Denizet
49a098cb5d Decode appearance keys of checkboxes 2025-05-09 21:46:17 +02:00
calixteman
293506ada7
Merge pull request #19903 from Snuffleupagus/shorten-fieldObjects-getter
Shorten the `PDFDocument.prototype.fieldObjects` getter slightly
2025-05-09 15:49:51 +02:00
calixteman
ff0d9b13a7
Merge pull request #19902 from Snuffleupagus/core-document-shorten
Shorten the code in the `src/core/document.js` file
2025-05-09 15:48:49 +02:00
calixteman
a806f00ea1
Merge pull request #19755 from calixteman/reduce_canvas_size
Add a pref in order to cap the canvas area to a factor of the window one (bug 1958015)
2025-05-09 15:47:42 +02:00
Calixte Denizet
1225c1e39a Add a pref in order to cap the canvas area to a factor of the window one (bug 1958015)
This way it helps to reduce the overall canvas dimensions and make the rendering faster.
The drawback is that when scrolling, the page can be blurry in waiting for the rendering.

The default value is 200% on desktop and will be 100% for GeckoView.
2025-05-09 13:57:16 +02:00
Jonas Jenwald
69595a2919
Merge pull request #19905 from Snuffleupagus/locales-update-repo
Update the Firefox repository used in `external/importL10n/locales.mjs`
2025-05-08 13:57:53 +02:00
Jonas Jenwald
360d287d55 Update l10n files 2025-05-08 13:52:58 +02:00
Jonas Jenwald
feea4007b5 Update the Firefox repository used in external/importL10n/locales.mjs
The https://github.com/mozilla/gecko-dev repository has been deprecated in favour of https://github.com/mozilla-firefox/firefox, hence we should tweak the l10n-update script accordingly.
2025-05-08 13:52:56 +02:00
Jonas Jenwald
1f7581b5c6 Shorten the PDFDocument.prototype.fieldObjects getter slightly
The effect is probably not even measurable, however this patch ever so slightly reduces the asynchronicity in the `fieldObjects` getter. These changes should be safe since:

 - We're inside of the `PDFDocument`-class and the `annotationGlobals`-getter, which will always return a (shadowed) Promise and won't throw `MissingDataException`s, can be accessed directly without going through the `BasePdfManager`-instance.

 - The `acroForm`-dictionary can be accessed through the `annotationGlobals`-data, removing the need to "manually" look it up and thus the need for using `Promise.all` here.

 - We can also lookup the /Fields-data, in the `acroForm`-dictionary, synchronously since the initial `formInfo.hasFields` check guarantees that it's available.
2025-05-07 17:47:09 +02:00
Jonas Jenwald
36fafbc05c Use object destructuring a bit more in the src/core/document.js file 2025-05-07 13:41:50 +02:00
Jonas Jenwald
92b065c87e Replace a number of semi-private fields with actual private ones in src/core/document.js
These are fields that can be moved out of their class constructors, and be initialized directly.
2025-05-07 13:41:44 +02:00
Jonas Jenwald
39803a9f25 Replace a number of semi-private methods with actual private ones in src/core/document.js
There's a few remaining cases that are used with either cached getters or `BasePdfManager.prototype.ensure`-methods, and those cannot be converted.
2025-05-07 13:41:36 +02:00
Jonas Jenwald
0ded85e9b3 Add a Page helper method to create a PartialEvaluator-instance
Currently we repeat the same identical code five times in the `Page`-class when creating a `PartialEvaluator`-instance, which given the number of parameters it needs seems like unnecessary duplication.
2025-05-07 13:41:29 +02:00
Jonas Jenwald
6f052312d6
Merge pull request #19895 from Snuffleupagus/ObjectLoader-improve
Unify method return values in the `ObjectLoader` class, and simplify how the `ObjectLoader` is used
2025-05-06 21:18:09 +02:00
Jonas Jenwald
384a09113c Run CI tests in Node.js version 24
Node.js version 24 was just released, see https://github.com/nodejs/release#release-schedule, hence we should run tests in that version in order to help catch any possible issues as soon as possible.
Also, since version 23 will reach EOL (end-of-life) in less than a month we stop running tests in that version.
2025-05-06 18:43:02 +02:00
Jonas Jenwald
62009ffa70 Simplify how the ObjectLoader is used
The `ObjectLoader.prototype.load` method has a fast-path, which avoids any lookup/parsing if the entire PDF document is already loaded.
However, we still need to create an `ObjectLoader`-instance which seems unnecessary in that case.

Hence we introduce a *static* `ObjectLoader.load` method, which will help avoid creating `ObjectLoader`-instances needlessly and also (slightly) shortens the call-sites.
To ensure that the new method will be used, we extend the `no-restricted-syntax` ESLint rule to "forbid" direct usage of `new ObjectLoader()`.
2025-05-06 15:49:59 +02:00
Jonas Jenwald
ef1ad675c2 Unify method return values in the ObjectLoader class
Given that all the methods are already asynchronous we can just use `await` more throughout this code, rather than having to explicitly return function-calls and `undefined`.
Note also how none of the `ObjectLoader.prototype.load` call-sites use the return value.
2025-05-06 15:43:00 +02:00
calixteman
04400c588f
Merge pull request #19893 from calixteman/issue19517
Downscale jpeg2000 images, if needed, while decoding them
2025-05-05 22:53:49 +02:00
Calixte Denizet
ac925f4f1b Downscale jpeg2000 images, if needed, while decoding them
It fixes #19517.
2025-05-05 22:39:59 +02:00
Tim van der Meij
06f44916c8
Merge pull request #19889 from Snuffleupagus/loadXfaResources
Slightly re-factor how we pre-load fonts and images in XFA documents
2025-05-04 14:28:11 +02:00
Jonas Jenwald
d9548b1c18 Slightly re-factor how we pre-load fonts and images in XFA documents
Rather than "manually" invoking the methods from the `src/core/worker.js` file we introduce a single `PDFDocument`-method that handles this for us, and make the current methods private.
Since this code is only invoked at most *once* per document, and only for XFA documents, we can use `BasePdfManager.prototype.ensureDoc` directly rather than needing a stand-alone method.
2025-05-04 13:44:33 +02:00
Jonas Jenwald
604153957a Reduce duplication when parsing fonts in loadXfaFonts
Currently we repeat virtually the same code when calling the `PartialEvaluator.prototype.handleSetFont` method, which we can avoid by introducing an inline helper function.
2025-05-04 13:42:17 +02:00
Jonas Jenwald
2979e23f3c Ensure that XFAFactory.prototype.isValid returns a boolean value
Considering the name of the method, and how it's actually being used, you'd expect it to return a boolean value.
Given how it's currently being used this inconsistency doesn't cause any issues, however we should still fix this.
2025-05-04 13:42:17 +02:00
Tim van der Meij
5ca57fbd4b
Merge pull request #19885 from Snuffleupagus/loadXfaImages-simplify
Simplify the `loadXfaImages` method and related code
2025-05-04 13:41:06 +02:00
Tim van der Meij
22cb3080ee
Merge pull request #19887 from Snuffleupagus/serializeXfaData-simplify
Simplify the `serializeXfaData` method and related code
2025-05-04 13:38:01 +02:00
Tim van der Meij
bd81d390c7
Merge pull request #19888 from Snuffleupagus/rm-BasePdfManager-catalog-getter
Remove the `BasePdfManager.prototype.catalog` getter
2025-05-04 13:33:16 +02:00
Jonas Jenwald
b3e16800f5 Remove the BasePdfManager.prototype.catalog getter
This is only invoked *once* and it can be trivially replaced by the `ensureCatalog`-method, since the code where it's used is already asynchronous.
2025-05-03 13:40:23 +02:00
Jonas Jenwald
b531720d9c Simplify the serializeXfaData method and related code
Rather than having a dedicated `BasePdfManager`-method for this one call-site we can instead change `PDFDocument.prototype.serializeXfaData` to a non-async method, that we invoke via `BasePdfManager.prototype.ensureDoc`.
2025-05-03 11:20:42 +02:00
Jonas Jenwald
122822a750 Simplify the loadXfaImages method and related code
Currently we create an intermediate `Dict` during parsing, however that seems unnecessary since (note especially the second point):
 - The `NameOrNumberTree.prototype.getAll` method will already resolve any references, as needed, during parsing.
 - The `Catalog.prototype.xfaImages` getter is invoked, via the `BasePdfManager`-instance, such that any `MissingDataException`s are already handled correctly.
2025-05-02 11:53:41 +02:00
calixteman
91bfe12f38
Merge pull request #19883 from gpanakkal/checkbutton-tostyle
Fix arguments in `toStyle` call in `CheckButton`
2025-05-01 22:08:03 +02:00
Gautam Panakkal
7bba3bd4ad Add missing this arg to toStyle in CheckButton.prototype.[$toHTML] 2025-05-01 10:19:28 -07:00
Jonas Jenwald
fc92e4059a
Merge pull request #19884 from Snuffleupagus/issue-19835-2
Allow to, optionally, keep Unicode escape sequences in  `stringToPDFString` (PR 17331 follow-up)
2025-05-01 11:39:13 +02:00
Jonas Jenwald
b629bafd1c Allow to, optionally, keep Unicode escape sequences in stringToPDFString (PR 17331 follow-up)
Currently *some* of the links[1] on page three of the `issue19835.pdf` test-case aren't clickable, since the destination (of the LinkAnnotation) becomes empty.
The reason is that these destinations include the character `\x1b`, which is interpreted as the start of a Unicode escape sequence specifying the language of the string; please refer to section [7.9.2.2 Text String Type](https://opensource.adobe.com/dc-acrobat-sdk-docs/pdfstandards/PDF32000_2008.pdf#G6.1957385) in the PDF specification.

Hence it seems that we need a way to optionally disable that behaviour, to avoid a "badly" formatted string from becoming empty (or truncated), at least for cases where we are:
 - Parsing named destinations[2] and URLs.
 - Handling "strings" that are actually /Name-instances.
 - Building a lookup Object/Map based on some PDF data-structure.

*NOTE:* The issue that prompted this patch is obviously related to destinations, however I've gone through the `src/core/` folder and updated various other `stringToPDFString` call-sites that (directly or indirectly) fit the categories listed above.

---
[1] Try clicking on anything on the line containing "Item 7A. Quantitative and Qualitative Disclosures About Market Risk 27".

[2] Unfortunately just skipping `stringToPDFString` in this case would cause other issues, such as the named destination becoming "unusable" in the viewer; see e.g. issues 14847 and 14864.
2025-04-30 20:51:10 +02:00
Jonas Jenwald
254431df1e Avoid extra lookup/parsing when all destinations are already available
Whenever we cannot find a destination we'll fallback to checking all destinations, to account for e.g. out-of-order NameTrees, and in those cases any subsequent destination-lookups can be made a tiny bit more efficient by immediately checking the already cached destinations.
2025-04-30 15:26:00 +02:00
calixteman
b8de9a372f
Merge pull request #19856 from calixteman/bug1936605
Don't update the visible canvas at 60 fps (bug 1936605)
2025-04-29 22:31:02 +02:00
Jonas Jenwald
0922aa9e9d
Merge pull request #19880 from Snuffleupagus/numberToString-assert-number
Assert that `numberToString` is called with a number (issue 19877)
2025-04-29 20:35:32 +02:00
calixteman
262a1f9895
Merge pull request #19881 from calixteman/bug1963407
Fix the bbox when saving a rotated text field (bug 1963407)
2025-04-29 20:33:53 +02:00
Jonas Jenwald
f5faf86180 Assert that numberToString is called with a number (issue 19877)
*NOTE:* Given that this is an *internal* function, used only in the worker-thread, it's not clear to me that this is an entirely "necessary" change.
2025-04-29 20:31:24 +02:00
Calixte Denizet
7a251b206e Fix the bbox when saving a rotated text field (bug 1963407) 2025-04-29 18:49:07 +02:00
Calixte Denizet
ecc56a61e6 Don't update the visible canvas at 60 fps (bug 1936605)
Instead, we update the visible canvas every 500ms.
With large canvas, updating at 60fps lead to a lot gfx transactions and it can take a lot of time.
For example, with wuppertal_2012.pdf on Windows, displaying it at 150% takes around 14 min !!! without
this patch when it takes only around 14 sec with. Even at 30% it helps to improve the performance
by around 20%.
2025-04-29 18:35:21 +02:00
Jonas Jenwald
c1a398d932
Merge pull request #19876 from Snuffleupagus/Node-polyfill-navigator
Add a basic `navigator` polyfill for older Node.js versions
2025-04-29 10:04:19 +02:00
calixteman
2e10ff6dd4
Merge pull request #19855 from 1Jesper1/hotfix/useractivation-response
Add useractivation check for response function
2025-04-28 13:14:51 +02:00
Jonas Jenwald
3d4e8bb17e Add a basic navigator polyfill for older Node.js versions
Modern Node.js versions now include a `navigator` implementation, with a few basic properties, that's actually enough for the PDF.js use-cases; please see https://nodejs.org/api/globals.html#navigator
Unfortunately we still support Node.js version `20`, hence we add a basic polyfill since that allows simplifying the code slightly.
2025-04-28 13:07:12 +02:00
Tim van der Meij
b47b248e15
Merge pull request #19875 from timvandermeij/bump
Bump the stable version in `pdfjs.config`
2025-04-27 14:53:05 +02:00
Tim van der Meij
6d0e8d752d
Bump the stable version in pdfjs.config 2025-04-27 14:49:27 +02:00
Tim van der Meij
4f7761353c
Merge pull request #19873 from timvandermeij/fix-editor-undo-bar-intermittents
Fix the "must work properly when selecting undo by keyboard" integration test
2025-04-27 14:15:34 +02:00
Tim van der Meij
967e34046a
Fix the "must work properly when selecting undo by keyboard" integration test
This integration test fails intermittently because the undo button can
only be activated if focus can be put on it, and that in turn can only
happen if it's visible. The test tried to make sure that the undo bar
is visible, but checking for the absence of the `hidden` attribute is
unfortunately not enough to assert visibility according to Puppeteer
documentation [1]. Moreover, the undo button wasn't checked at all.

To fix the issue we let Puppeteer do the visibility detection for the
undo bar by providing the `visible: true` option to `waitForSelector`
[2]. This is consistent with the other tests that already do this, and
also with the existing code that detects if the undo bar is hidden
(which uses the `hidden: true` option of `waitForSelector`). Moreover,
we wait for the undo button to be present before putting focus on it.

For consistency, and to avoid intermittent failures elsewhere, we mirror
this solution to the other undo bar/button tests of the various editors.

[1] https://pptr.dev/api/puppeteer.elementhandle.isvisible
[2] https://pptr.dev/api/puppeteer.waitforselectoroptions
2025-04-27 14:00:50 +02:00
Tim van der Meij
9e1f93e5eb
Merge pull request #19874 from Snuffleupagus/issue-19871
Always render the Annotation- and XFA-layers with light `color-scheme` (issue 19871)
2025-04-27 11:54:08 +02:00
Jonas Jenwald
0852c42c15 Always render the Annotation- and XFA-layers with light color-scheme (issue 19871)
The intention with PR 19819 was to change how colours are specified for the viewer UI, however it wasn't intended to affect elements in the Annotation- and XFA-layers.
Hence we enforce the light `color-scheme` for these layers, and also make sure to provide a default `color` for PopupAnnotations.
2025-04-26 20:44:07 +02:00
Tim van der Meij
48b7d9f424
Merge pull request #19869 from timvandermeij/updates
Update dependencies and translations to the most recent versions
2025-04-26 18:01:22 +02:00
Tim van der Meij
b8dd236ae6
Update translations to the most recent versions 2025-04-26 15:52:12 +02:00
Tim van der Meij
cbf61712f9
Update dependencies to the most recent versions 2025-04-26 15:51:20 +02:00
Tim van der Meij
a40bf37184
Merge pull request #19866 from Snuffleupagus/updateUrlHash
Avoid (most) string parsing when removing/replacing the hash property of a URL
2025-04-26 12:21:38 +02:00
Jonas Jenwald
c2d88540b4
Merge pull request #19868 from Snuffleupagus/MathClamp-4
Use the `MathClamp` helper function more in the `web/` folder (PR 19617 follow-up)
2025-04-26 12:07:30 +02:00
Tim van der Meij
6891602e7f
Merge pull request #19858 from luckymore/master
Tweak the Node.js version listed in "engines", to ensure that process.getBuiltinModule is available
2025-04-26 11:45:27 +02:00
Tim van der Meij
2fc325e4f8
Merge pull request #19814 from loganrosen/beginner-bug-readme
Fix beginner bugs link in README
2025-04-26 11:29:41 +02:00
Jonas Jenwald
af3d13c22d Use the MathClamp helper function more in the web/ folder (PR 19617 follow-up)
There's one more spot that I missed in PR 19617.
2025-04-26 11:09:52 +02:00
Jonas Jenwald
abc9522886 Avoid (most) string parsing when removing/replacing the hash property of a URL 2025-04-25 23:13:05 +02:00
calixteman
efc5c3c231
Merge pull request #19862 from calixteman/bug1961423
Fix 'print to pdf' on Mac with a cid font (bug 1961423)
2025-04-25 15:11:55 +02:00
Jonas Jenwald
312c85bfd6
Merge pull request #19815 from Snuffleupagus/getMergedResources-size
Ensure that "local" /Contents stream-dict /Resources aren't empty (PR 19803 follow-up)
2025-04-25 10:46:04 +02:00
Jonas Jenwald
1a5c9e90dd
Merge pull request #19861 from Snuffleupagus/debugger-fix-light-dark-fallout
Fix the debugger CSS when using the dark theme (PR 19819 follow-up)
2025-04-25 10:44:55 +02:00
Jesper
8af06a4c60 Add useractivation check for response function 2025-04-24 22:40:28 +02:00
Calixte Denizet
785991a97c Fix 'print to pdf' on Mac with a cid font (bug 1961423) 2025-04-24 20:19:12 +02:00
Jonas Jenwald
6b76bdac3a Fix the debugger CSS when using the dark theme (PR 19819 follow-up)
Perhaps we should update the debugger CSS to properly account for the light/dark theme, however since that's not UI that end-users ever see we simply force using the light theme for now.
2025-04-24 17:34:29 +02:00
calixteman
91175dc67d
Merge pull request #19854 from calixteman/fix_find_in_tests
Fix errors when running the integration tests
2025-04-24 11:27:03 +02:00
zhangningning
940b4657fc Tweak the Node.js version listed in "engines", to ensure that process.getBuiltinModule is available 2025-04-24 15:04:15 +08:00
Calixte Denizet
8630822a63 Fix errors when running the integration tests
JavaScript error: http://127.0.0.1:42301/build/generic/web/viewer.mjs, line 5822: TypeError: this[#state] is null
JavaScript error: http://127.0.0.1:42301/build/generic/web/viewer.mjs, line 6001: TypeError: can't access property "getPage", this._pdfDocument is null
2025-04-23 23:04:24 +02:00
Jonas Jenwald
de2a44a558
Merge pull request #19849 from Snuffleupagus/issue-19848
Ensure that the /Form XObject /Resources-entry is actually a dictionary (issue 19848)
2025-04-23 16:48:06 +02:00
Jonas Jenwald
01c1c6e60f
Merge pull request #19819 from Snuffleupagus/CSS-light-dark
Use the `light-dark` CSS function in the viewer (issue 17780)
2025-04-23 16:30:03 +02:00
calixteman
627a935baf
Merge pull request #19853 from calixteman/issue19850
Disable userActivation before executing a setTimeout/setInterval callback
2025-04-23 16:11:59 +02:00
Jonas Jenwald
ae1cbc6a9e Use the light-dark CSS function in the viewer (issue 17780)
This removes the need for (most) separate `@media (prefers-color-scheme: dark)` blocks when defining colors values, and also provides a simple way of forcing use of either the light or dark theme.

Please refer to https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/light-dark and https://developer.mozilla.org/en-US/docs/Web/CSS/color-scheme

*NOTE:* To support this in older browsers, we utilize a [PostCSS plugin](https://github.com/csstools/postcss-plugins/tree/main/plugins/postcss-light-dark-function).
2025-04-23 15:31:39 +02:00
Calixte Denizet
05a45346a5 Disable userActivation before executing a setTimeout/setInterval callback
Fixes issue #19850.
2025-04-23 15:25:12 +02:00
Jonas Jenwald
64007e777e Ensure that the /Form XObject /Resources-entry is actually a dictionary (issue 19848) 2025-04-23 10:19:20 +02:00
Jonas Jenwald
63e6566597
Merge pull request #19816 from Snuffleupagus/bug-1957401
Add a "supportsPrinting" viewer-option (bug 1957401)
2025-04-22 15:25:20 +02:00
Jonas Jenwald
213d51d7e9
Merge pull request #19823 from Snuffleupagus/rm-duplicate-secondaryToolbar-mask-image
Remove duplicate secondaryToolbar button `mask-image` definitions (PR 18385 follow-up)
2025-04-22 15:14:47 +02:00
Jonas Jenwald
c8ed291cf9
Merge pull request #19836 from Snuffleupagus/issue-19835
Always fallback to checking all destinations, when lookup fails (issue 19835)
2025-04-22 15:14:05 +02:00
Jonas Jenwald
c63c51e016
Merge pull request #19841 from Snuffleupagus/issue-19840
Fix printing of XFA documents, by calling `XfaLayerBuilder.prototype.render` correctly (issue 19840)
2025-04-22 15:12:46 +02:00
Jonas Jenwald
b4626a77a2 Fix printing of XFA documents, by calling XfaLayerBuilder.prototype.render correctly (issue 19840)
When changing the format of various `render`-methods in PR 19365 I forgot to update the code used to print XFA documents, sorry about that.
2025-04-22 09:15:52 +02:00
Jonas Jenwald
adc9eb5a5a Always fallback to checking all destinations, when lookup fails (issue 19835)
In the referenced PDF document the keys, in the /Dests dictionary, need to account for PDFDocEncoding.
To improve destination handling in general we'll now unconditionally fallback to always checking all destinations.
2025-04-20 14:53:10 +02:00
calixteman
d8d3e0abf5
Merge pull request #19829 from calixteman/info_icon
Replace the info icon in the undo bar by the right one (bug 1960523)
2025-04-18 14:16:56 +02:00
Calixte Denizet
75e9f2a0e8 Replace the info icon in the undo bar by the right one (bug 1960523) 2025-04-18 14:13:02 +02:00
Jonas Jenwald
87a143dbbc
Merge pull request #19828 from Snuffleupagus/worker-check-Object-prototype
Check that the `Object.prototype` hasn't been incorrectly extended (PR 11582 follow-up)
2025-04-18 13:59:07 +02:00
Jonas Jenwald
91ba147317 Check that the Object.prototype hasn't been incorrectly extended (PR 11582 follow-up)
This complements, and extends, the existing check of the `Array.prototype` in the worker-thread.
To simplify the implementation we'll now abort immediately, rather than collecting all "bad" properties.
2025-04-18 12:19:29 +02:00
calixteman
4b1875c8c0
Merge pull request #19825 from calixteman/bug1961107
Avoid to create any subarrays when optimizing 'save, transform, constructPath, restore' (bug 1961107)
2025-04-17 19:42:28 +02:00
Calixte Denizet
d7cbda6cb5 Avoid to create any subarrays when optimizing 'save, transform, constructPath, restore' (bug 1961107)
Removing those `subarray`calls helps to improve performance by a factor 6 on Linux and by a factor of 3
on Windows 11.
2025-04-17 19:14:01 +02:00
Jonas Jenwald
f1e20cd668
Merge pull request #19824 from Snuffleupagus/getStructTree-catch-errors
Improve error handling when parsing page-structTrees
2025-04-17 15:21:55 +02:00
Jonas Jenwald
bf553f22da Ensure that the /P-entry is actually a dictionary in StructTreePage.prototype.addNode
This may fix issue 19822, but without a test-case it's simply impossible to know for sure.
2025-04-17 14:01:53 +02:00
Jonas Jenwald
76f23ce3b5 Catch, and ignore, errors during Page.prototype.getStructTree
This way any errors thrown during parsing of the page-structTree will not be forwarded to the viewer.
2025-04-17 13:57:30 +02:00
Jonas Jenwald
8e7060158e Remove duplicate secondaryToolbar button mask-image definitions (PR 18385 follow-up)
It appears that all secondaryToolbar buttons currently have their `mask-image` definitions duplicated, which leads to larger than necessary CSS files.
2025-04-17 10:51:51 +02:00
Jonas Jenwald
97fe7d6a19 Add a "supportsPrinting" viewer-option (bug 1957401)
This will allow us to respect the `print.enabled` Firefox preference, by extending [this method](https://searchfox.org/mozilla-central/rev/56117379696ea0cffb94cd09c14cd022a8c5e4e8/toolkit/components/pdfjs/content/PdfStreamConverter.sys.mjs#426-453), which will hide the toolbar and secondaryToolbar print-buttons.
2025-04-15 12:43:11 +02:00
Jonas Jenwald
245d9ba925 Ensure that "local" /Contents stream-dict /Resources aren't empty (PR 19803 follow-up)
This is a small, and quite possibly pointless, optimization which ensures that any "local" /Resources aren't empty, to avoid needlessly trying to load and merge dictionaries.
2025-04-14 09:58:15 +02:00
Logan Rosen
ba7c34ff56 Fix beginner bugs link in README 2025-04-13 18:57:56 -04:00
Tim van der Meij
2f7d163dfd
Merge pull request #19812 from timvandermeij/disable-permafail
Remove debug code from the integration tests, and skip the "must check that canvas perfectly fits the page whatever the zoom level" integration test in Chrome
2025-04-13 20:53:58 +02:00
Tim van der Meij
923753a66b
Skip the "must check that canvas perfectly fits the page whatever the zoom level" integration test in Chrome
This is a temporary measure to reduce noise until #19811 is fixed. Note
that this shouldn't be an issue in terms of coverage because we still
run the test in Firefox.
2025-04-13 19:32:39 +02:00
Tim van der Meij
efe4a3455a
Remove debug code from the integration tests
Doing so simplifies the code a bit, and such code is generally not
checked in because it can easily be added locally if needed.
2025-04-13 19:19:13 +02:00
Tim van der Meij
35f85c55bd
Merge pull request #19810 from Snuffleupagus/issue-19808
Update Webpack to version `5.99.5` (issue 19808)
2025-04-13 18:43:19 +02:00
Tim van der Meij
574e4f4ec1
Merge pull request #19809 from timvandermeij/integration-tests-isolate-all-and-random
Run the integration tests in a random order
2025-04-13 18:37:08 +02:00
Jonas Jenwald
6b961c424f Update Webpack to version 5.99.5 (issue 19808)
In Webpack version `5.99.0` the way that `export` statements are handled was changed slightly, with much less boilerplate code being generated, which unfortunately breaks our `tweakWebpackOutput` function that's used to expose the exported properties globally and that e.g. the viewer depends upon.

Given that we were depending on formatting that should most likely be viewed as nothing more than an internal implementation detail in Webpack, we instead work-around this by manually defining the structures that were previously generated.
Obviously this will lead to a tiny bit more manual work in the future, however we don't change the API-surface often enough that it should be a big issue *and* the relevant unit-tests are updated such that it shouldn't be possible to break this.

*NOTE:* In the future we might want to consider no longer using global properties like this, and instead rely only on proper `export`s throughout the code-base.
However changing this would likely be non-trivial (given edge-cases), and it'd be an `api-major` change, so let's just do the minimal amount of work to unblock Webpack updates for now.
2025-04-13 16:48:19 +02:00
Tim van der Meij
938430be5b
Remove workaround from the "must convert input to uppercase" scripting integration test
It's no longer necessary after commit 1c73e52 that caused the document
to be closed properly between tests, and this therefore partly reverts
commit 973b67f.
2025-04-13 15:57:54 +02:00
Tim van der Meij
5f46791887
Run the integration tests in a random order
This commit configures Jasmine to no longer run the tests in a fixed
order, which combined with the previous isolation commits avoids being
able to accidentally introduce dependencies between integration tests.
2025-04-13 15:46:03 +02:00
Tim van der Meij
75b321b000
Isolate the viewer integration tests
To avoid being able to introduce dependencies between tests this commit
makes sure that we close the document between tests so that we can't
accidentally rely on state set by a previous test.
2025-04-13 15:24:15 +02:00
Tim van der Meij
965949c259
Isolate the text layer integration tests
To avoid being able to introduce dependencies between tests this commit
makes sure that we close the document between tests so that we can't
accidentally rely on state set by a previous test.
2025-04-13 15:24:15 +02:00
Tim van der Meij
6308f5eb51
Isolate the text field integration tests
To avoid being able to introduce dependencies between tests this commit
makes sure that we close the document between tests so that we can't
accidentally rely on state set by a previous test.
2025-04-13 15:24:15 +02:00
Tim van der Meij
7c8262ccc9
Isolate the stamp editor integration tests
To avoid being able to introduce dependencies between tests this commit
makes sure that we close the document between tests so that we can't
accidentally rely on state set by a previous test.
2025-04-13 15:24:15 +02:00
Tim van der Meij
44243761a5
Isolate the highlight editor integration tests
To avoid being able to introduce dependencies between tests this commit
makes sure that we close the document between tests so that we can't
accidentally rely on state set by a previous test.
2025-04-13 15:20:27 +02:00
Tim van der Meij
5011d96a62
Isolate the freetext editor integration tests
To avoid being able to introduce dependencies between tests this commit
makes sure that we close the document between tests so that we can't
accidentally rely on state set by a previous test.
2025-04-13 15:20:23 +02:00
Tim van der Meij
f043760b54
Isolate the find integration tests
To avoid being able to introduce dependencies between tests this commit
makes sure that we close the document between tests so that we can't
accidentally rely on state set by a previous test.
2025-04-13 15:20:18 +02:00
Tim van der Meij
179859f54a
Isolate the copy/paste integration tests
To avoid being able to introduce dependencies between tests this commit
makes sure that we close the document between tests so that we can't
accidentally rely on state set by a previous test.
2025-04-13 15:20:14 +02:00
Tim van der Meij
0e9e4ec64f
Isolate the caret browsing integration tests
To avoid being able to introduce dependencies between tests this commit
makes sure that we close the document between tests so that we can't
accidentally rely on state set by a previous test.
2025-04-13 15:20:08 +02:00
Tim van der Meij
a60f9bc612
Isolate the autolinker integration tests
To avoid being able to introduce dependencies between tests this commit
makes sure that we close the document between tests so that we can't
accidentally rely on state set by a previous test.
2025-04-13 15:20:03 +02:00
Tim van der Meij
e1cbba4ded
Isolate the annotation integration tests
To avoid being able to introduce dependencies between tests this commit
makes sure that we close the document between tests so that we can't
accidentally rely on state set by a previous test.
2025-04-13 15:19:59 +02:00
Tim van der Meij
193bebd78a
Isolate the accessibility integration tests
To avoid being able to introduce dependencies between tests this commit
makes sure that we close the document between tests so that we can't
accidentally rely on state set by a previous test.
2025-04-13 15:18:19 +02:00
Tim van der Meij
c071f44883
Merge pull request #19807 from timvandermeij/updates
Update dependencies and translations to the most recent versions
2025-04-13 11:24:15 +02:00
Tim van der Meij
d5dce6bc42
Update translations to the most recent versions 2025-04-12 19:38:22 +02:00
Tim van der Meij
b61d52c6da
Update dependencies to the most recent versions 2025-04-12 19:38:22 +02:00
Tim van der Meij
e06b32c831
Merge pull request #19806 from Snuffleupagus/more-logical-assign
Add more logical assignment in the `src/` folder
2025-04-12 18:51:28 +02:00
Jonas Jenwald
834423b51d Add more logical assignment in the src/ folder
This patch uses nullish coalescing assignment in cases where it's immediately obvious from surrounding code that doing so is safe, and logical OR assignment elsewhere (mostly the changes in XFA code).
2025-04-12 17:28:33 +02:00
Tim van der Meij
5da507f279
Merge pull request #19805 from Snuffleupagus/_xfaStreams-Map
Change `PDFDocument.prototype._xfaStreams` to return a `Map`
2025-04-12 14:00:09 +02:00
Tim van der Meij
5f3e8806fe
Merge pull request #19789 from Snuffleupagus/generic-SignatureStorage-save
Simplify `Object.fromEntries` usage a tiny bit in the `web/generic_signature_storage.js` file
2025-04-12 13:37:40 +02:00
Tim van der Meij
f482232493
Merge pull request #19790 from Snuffleupagus/test-getAnnotationStorage-rm-entries
Simplify the `getAnnotationStorage` integration-test helper function
2025-04-12 13:36:20 +02:00
Jonas Jenwald
1c80412f61 Change PDFDocument.prototype._xfaStreams to return a Map
Using a `Map` rather than an `Object` is a nicer, since it has better support for both iteration and checking if a key exists.
We also change the initial values to be `null`, rather than empty strings, and reduce duplication when creating the `Map`.

*Please note:* Since this is worker-thread code, these changes are "invisible" at the API-level.
2025-04-12 12:47:22 +02:00
Jonas Jenwald
9c6e2e6df0
Merge pull request #19803 from Snuffleupagus/issue-19800
Catch circular references in /Form XObjects (issue 19800)
2025-04-11 17:03:42 +02:00
Jonas Jenwald
1048508dd1 Catch circular references in /Form XObjects (issue 19800)
For simplicity we will abort /Form XObject parsing *immediately* when encountering a circular reference, rather than letting it continue up until some limit (as e.g. PDFium appears to do), which should be fine since there are never any guarantees if/how *corrupt* PDF documents will render.
2025-04-11 16:54:22 +02:00
Jonas Jenwald
7a94fafd30 Prefer /Resources from the /Contents stream-dict, if available
In rare cases /Resources are also found in the /Contents stream-dict, in addition to in the /Page dict, hence we need to prefer those when available; see `issue18894.pdf`.
2025-04-11 16:54:22 +02:00
Jonas Jenwald
53c5a53668
Merge pull request #19804 from Snuffleupagus/issue-19802
Use `adjustWidths` unconditionally for all embedded fonts (issue 19802)
2025-04-11 16:53:20 +02:00
Jonas Jenwald
835a456767 Use adjustWidths unconditionally for all embedded fonts (issue 19802)
Previously we'd only do this for Type1/CFF fonts, see e.g. PR 6736, since the font-program may update the /FontMatrix.
However, it seems that we should do this unconditionally to account for fonts with non-default /FontMatrix-entries in the font-dictionary (which seem to be pretty rare).
2025-04-11 15:01:35 +02:00
calixteman
539a81c7a3
Merge pull request #19797 from calixteman/issue19793
[Editor] Commit the current drawing before switching the current mode
2025-04-10 21:34:51 +02:00
calixteman
1d8af5fe68
Merge pull request #19799 from calixteman/bug1959774
[Editor] Fix the border line of the thickness slider in the signature modal while in HCM (bug 1959774)
2025-04-10 21:32:19 +02:00
Calixte Denizet
61df54c689 [Editor] Commit the current drawing before switching the current mode
It fixes #19793.
2025-04-10 21:31:24 +02:00
Calixte Denizet
88d58f393b [Editor] Fix the border line of the thickness slider in the signature modal while in HCM (bug 1959774) 2025-04-10 19:55:22 +02:00
Jonas Jenwald
220a28933c
Merge pull request #19791 from Snuffleupagus/IndexedCS-round-clamp
Handle non-integer and out-of-range values correctly in Indexed color spaces
2025-04-09 16:29:23 +02:00
Jonas Jenwald
fbc4f4b12a Handle non-integer and out-of-range values correctly in Indexed color spaces
In PDF version 2.0 the handling of Indexed color spaces was clarified as follows:
> The index value should be an integer in the range 0 to hival. If the value is a real number, it shall be rounded to the nearest integer (0.5 values shall be rounded up); if it is outside the range 0 to hival, it shall be adjusted to the nearest value within that range.

Please refer to https://github.com/pdf-association/pdf-differences/tree/main/IndexedColor
2025-04-09 15:31:49 +02:00
Jonas Jenwald
60bf9b133a Simplify the getAnnotationStorage integration-test helper function
As can be seen [at MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/fromEntries#parameters) the `Object.fromEntries` method accepts a `Map` directly, hence using the `Map.prototype.entries` method is superfluous here.
2025-04-09 13:42:22 +02:00
Jonas Jenwald
1d1e6e7b92 Simplify Object.fromEntries usage a tiny bit in the web/generic_signature_storage.js file
As can be seen [at MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/fromEntries#parameters) the `Object.fromEntries` method accepts a `Map` directly, hence using the `Map.prototype.entries` method is superfluous here.
2025-04-09 12:06:40 +02:00
Jonas Jenwald
22657e2b6e
Merge pull request #19778 from Snuffleupagus/replace-getAll
[api-minor] Replace various `getAll` methods with iterators
2025-04-08 17:26:24 +02:00
Jonas Jenwald
12c7c7b0af
Merge pull request #19773 from Snuffleupagus/inline-PDFImage-createRawMask
Inline `PDFImage.createRawMask` in the `PDFImage.createMask` method
2025-04-08 17:19:09 +02:00
Jonas Jenwald
19486952c2
Merge pull request #19781 from Snuffleupagus/mv-IDENTITY_MATRIX
Move the `IDENTITY_MATRIX` constant into `src/core/core_utils.js` (PR 19772 follow-up)
2025-04-08 17:16:31 +02:00
Jonas Jenwald
0e50125a6c
Merge pull request #19788 from Snuffleupagus/no-array-reduce
Enable the `no-array-reduce` ESLint plugin rule
2025-04-08 17:09:44 +02:00
Jonas Jenwald
38d01250f4 Enable the no-array-reduce ESLint plugin rule
Please see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-array-reduce.md

Note that this still allows "simple" usage of `Array.prototype.reduce`, however most of those cases will be possible to replace with `Math.sumPrecise` once that becomes generally available (currently not supported in Node.js or QuickJS).
2025-04-08 12:21:20 +02:00
Jonas Jenwald
dc3e24a76a Inline PDFImage.createRawMask in the PDFImage.createMask method
After the introduction of `OffscreenCanvas` support we now have *two separate* mask-methods in the `PDFImage` class, and the reason that they were not combined is likely that we need the "raw" bytes when parsing Type3-glyph image masks.
However, that case is easy to support simply by disabling `OffscreenCanvas` usage when parsing Type3-glyphs and that way we're able to reduce some code duplication.

Another slightly strange property of the `PDFImage.createMask` method is that it needs various image-dictionary parameters *manually* provided, which is probably because this is very old code.
That feels slightly unwieldy, and we instead change the method to pass in the image-stream directly and do the necessary data-lookup internally.

A side-effect of this re-factoring is that we now support using the custom `isSingleOpaquePixel` operator in Type3-glyphs, which shouldn't hurt even though it seems extremely unlikely for that to ever happen in Type3-glyphs.
2025-04-08 12:01:50 +02:00
Jonas Jenwald
85e6f3c92b
Merge pull request #19785 from nicolo-ribaudo/chrome-selection-fix
[chrome] Fix text selection with `.markedContent`
2025-04-08 11:57:32 +02:00
Jonas Jenwald
115ea6afa3
Merge pull request #19786 from nicolo-ribaudo/linting-export
Lint against `export [some declaration]`
2025-04-08 11:07:07 +02:00
Nicolò Ribaudo
f654fb1b83
Lint against export [some declaration]
This disallowd the following types of `export` declaration:
- `export class A {}`/`export function A() {}`
- `export default class A {}`/`export default function A() {}`
- `export let A`/`export const A`/`export var A`

While allowing
- `export { A }`
- `export default A`
2025-04-07 17:51:17 +02:00
Nicolò Ribaudo
da5b681b16
[chrome] Fix text selection with .markedContent
The current text layer approach based on absolutely positioned
`<span>` elements by default causes flickering with text selection,
and we have browser-specific workarounds to solve that.

In Chrome, the workaround involves moving the `.endOfContent` element to
right after the last element that contains some selected content. This
works well in simple PDFs, but breaks when we have `span.markedContent`
elements. Given a text layer structure like the following, rendered
as four consecutive lines:
```html
<span class="markedContent">
  <br>
  <span>development enter the construction phase (estimated at around</span>
</span>
<span class="markedContent">
  <br>
  <span>300 MEUR).</span>
</span>
<span class="markedContent">
  <br>
  <span>Kreate's EBITA increased to 2.8 MEUR (Q4'23: 2.7 MEUR) and the</span>
</span>
<span class="markedContent">
  <br>
  <span>margin rose to 3.7% (Q4'23: 3.4%). However, profitability was</span>
</span>
```
when starting to select from inside the first line and dragging down
to the empty space after the second line, Chrome will anchor the
selection at the beginning of either the `<br>` or the `<span>` inside
the last `.markedContent`, depending on whether the selection is in
"per-character mode" (i.e. click and drag) or "per-word mode" (i.e.
double click and drag). This causes us to insert the `.endOfContent`
element in the wrong place (one element too far), which causes one
more line to be selected, which triggers another `"selecctionchange"`
event, which causes us to move `.endOfContent` again, and so on, looping
until when the whole page is selected.

This commit fixes the issue by making sure that when the end of the
selection range points to the _begining_ of an element, we walk back
the dom finding the first non-empty element, and attatch `.endOfContent`
to the end of that.
2025-04-07 17:36:40 +02:00
Jonas Jenwald
d882d0869c Move the IDENTITY_MATRIX constant into src/core/core_utils.js (PR 19772 follow-up)
After the changes in PR 19772 the `IDENTITY_MATRIX` constant is now only used on the worker-thread, which leads to Webpack marking the code as unused in the *built* `pdf.mjs` file; see https://phabricator.services.mozilla.com/D244533#change-8oITAexCvrlQ
2025-04-07 11:40:18 +02:00
Jonas Jenwald
2c593b06e4 [api-minor] Replace various getAll methods with iterators
These `getAll` methods are not used anywhere within the PDF.js code-base, outside of tests, and were mostly added (speculatively) for third-party users.
To still allow access to the same data we instead introduce iterators on these classes, which (slightly) shortens the code and allows us to remove the `objectFromMap` helper function.

A summary of the changes in this patch:
 - Replace the `getAll` methods with iterators in the following classes: `AnnotationStorage`, `Metadata`, and `OptionalContentGroup`.

 - Change, and also re-name, `AnnotationStorage.prototype.setAll` into a test-only method since it's not used elsewhere.

 - Remove the `Metadata.prototype.has` method, since it's only used in tests and can be trivially replaced by calling `Metadata.prototype.get` and checking if the returned value is `null`.
2025-04-06 21:43:16 +02:00
Tim van der Meij
72feb4c256
Merge pull request #19775 from Snuffleupagus/AFSimple_Calculate-MIN-MAX-destructuring
Use Array-destructuring when computing MIN/MAX in `AFSimple_Calculate`
2025-04-06 18:32:37 +02:00
Tim van der Meij
36ece9af8d
Merge pull request #19777 from Snuffleupagus/Node-engines-20.16.0
Tweak the Node.js version listed in "engines", to ensure that `process.getBuiltinModule` is available
2025-04-06 18:25:26 +02:00
Tim van der Meij
082485f094
Merge pull request #19776 from Snuffleupagus/rm-reduce-unit-tests
Remove `Array.prototype.reduce` usage from the unit-tests
2025-04-06 18:24:29 +02:00
Jonas Jenwald
18617eb792 Tweak the Node.js version listed in "engines", to ensure that process.getBuiltinModule is available
In order to use the PDF.js library in Node.js environments the `process.getBuiltinModule` functionality must be available, which was released in [version `20.16.0`](https://nodejs.org/en/blog/release/v20.16.0), however we've seen repeated issues filed by users on older `20.x` versions.
2025-04-06 14:32:36 +02:00
Jonas Jenwald
ec5b5184d3 Remove Array.prototype.reduce usage from the unit-tests
Using `Array.prototype.reduce` often leads to less readable code, and in these cases we can replace it with other Array-methods instead.
2025-04-06 12:12:37 +02:00
Jonas Jenwald
0845552ff9 Use Array-destructuring when computing MIN/MAX in AFSimple_Calculate
This appears to work fine with QuickJS, as evident by the added unit-test, and allows us to remove more `Array.prototype.reduce` usage.
2025-04-06 11:44:08 +02:00
calixteman
6cc37c8415
Merge pull request #19772 from calixteman/settextmatrix
Avoid to create an array when setting the text matrix
2025-04-05 21:59:30 +02:00
Calixte Denizet
4c63905a18 Avoid to create an array when setting the text matrix 2025-04-05 20:45:26 +02:00
Jonas Jenwald
9217d253aa
Merge pull request #19771 from Snuffleupagus/canvas-shorter-CanvasExtraState
Change how (most) fields are initialized in the `CanvasExtraState` class
2025-04-05 18:46:24 +02:00
Jonas Jenwald
7cfb1be650
Merge pull request #19758 from Snuffleupagus/OperatorList-setOptions
Initialize the `isOffscreenCanvasSupported` option, in the `OperatorList` class, once per document
2025-04-05 18:45:55 +02:00
Jonas Jenwald
a70f42339e
Merge pull request #19756 from Snuffleupagus/canvas-unconditional-ctx-filter
Use `ctx.filter` unconditionally in the `src/display/canvas.js` file
2025-04-05 18:45:19 +02:00
Jonas Jenwald
010b6ad886 Change how (most) fields are initialized in the CanvasExtraState class
The majority of the class fields don't depend on any parameters, hence we can re-factor and shorten by this using modern JavaScript features.
2025-04-05 15:03:06 +02:00
Jonas Jenwald
624d8a418e Remove "unnecessary" inline function names in the src/display/canvas.js file
This is ever so slightly shorter, which cannot hurt.
2025-04-05 14:59:04 +02:00
calixteman
7eef7dfc78
Merge pull request #19763 from calixteman/simplify_updaterect
Replace UpdateRectMinMax by getAxialAlignedBoundingBox
2025-04-04 21:33:05 +02:00
Jonas Jenwald
a6934a4dd5
Merge pull request #19768 from Snuffleupagus/writer-infoMap
Pass the /Info-strings as a `Map` to the `src/core/writer.js` code
2025-04-04 20:53:55 +02:00
Calixte Denizet
e7a951547d Replace UpdateRectMinMax by getAxialAlignedBoundingBox
and don't use array destructuring because it induces a memory and perf penalties.
2025-04-04 19:57:55 +02:00
Jonas Jenwald
dad6febc39 Pass the /Info-strings as a Map to the src/core/writer.js code
We want to iterate through the data in the `computeMD5` function, and `Map`s have "nicer" support for that than generic objects.
(Somewhat recently `Map` performance was improved in Firefox, however this also isn't really performance sensitive code.)
2025-04-04 13:36:13 +02:00
Jonas Jenwald
0bde69c7bf
Merge pull request #19767 from Snuffleupagus/issue-19761
Attempt to get bundlers to leave Emscripten Compiler generated `URL`s alone (issue 19761)
2025-04-04 12:30:15 +02:00
Jonas Jenwald
20e06c4bb5 Attempt to get bundlers to leave Emscripten Compiler generated URLs alone (issue 19761)
Note that we load all wasm-files manually, however the Emscripten Compiler (emcc) unfortunately generates `URL`s for fallback wasm-file loading.
In the PDF.js build-scripts we work-around that by using suitable Webpack-options, however that apparently doesn't work when third-party users re-bundle our code and we thus try to work-around this by adding "ignore comments" to these `URL`s (similar to how we handle `import`-statements).
2025-04-04 11:45:54 +02:00
Jonas Jenwald
bd06061e85
Merge pull request #19766 from Snuffleupagus/version-5.2
Bump library version to `5.2`
2025-04-04 08:58:16 +02:00
Jonas Jenwald
bd418de6b0 Bump library version to 5.2 2025-04-04 08:54:06 +02:00
Jonas Jenwald
16c876569f
Merge pull request #19760 from Snuffleupagus/OperatorList-transfers-bitmap
Also transfer `ImageBitmap`s for image masks and inline images
2025-04-03 20:10:27 +02:00
Jonas Jenwald
8c5fb7979f Also transfer ImageBitmaps for image masks and inline images
Currently we're only transferring TypedArrays, however there's no reason (as far as I can tell) to not also transfer `ImageBitmap`s in these cases.
2025-04-03 18:50:39 +02:00
calixteman
ff2d95a9b6
Merge pull request #19752 from calixteman/simplify_updateRectMinMax
Simplify updateRectMinMax in order to use slightly less memory
2025-04-03 18:25:30 +02:00
Calixte Denizet
41bed561f0 Simplify updateRectMinMax in order to use slightly less memory 2025-04-03 17:06:58 +02:00
Jonas Jenwald
4a6c47489e Initialize the isOffscreenCanvasSupported option, in the OperatorList class, once per document
Currently we're setting this option for each small inline image, which seems unnecessary since it should suffice to do that once per document.
2025-04-03 14:00:07 +02:00
Jonas Jenwald
0c78b46184 Use ctx.filter unconditionally in the src/display/canvas.js file
It seems that the `@napi-rs/canvas` dependency has *basic* canvas-filter support, whereas the "old" `canvas` dependency didn't, hence we no longer need the Node.js-specific checks in the `src/display/canvas.js` file.

Note that I've successfully tested the [`pdf2png` example](https://github.com/mozilla/pdf.js/tree/master/examples/node/pdf2png) with this patch applied and things appear to work as before.
2025-04-03 12:30:29 +02:00
Jonas Jenwald
a45f961a1c
Merge pull request #19751 from Snuffleupagus/applyTransform-in-place
Change `Util.applyTransform` to use the point-argument as an in/out parameter
2025-04-02 20:47:21 +02:00
calixteman
b7437376f1
Merge pull request #19732 from calixteman/rm_useless_beginpath
Remove few useless beginPaths
2025-04-02 13:46:05 +02:00
Jonas Jenwald
4262603b06 Re-name the Util.applyTransformToBezierInPlace method
Given that all `Util.apply...` methods are now using in/out parameters, we can slightly shorten the name of this one.
2025-04-01 23:03:50 +02:00
Jonas Jenwald
c852e877d8 Change Util.applyInverseTransform to use the point-argument as an in/out parameter
This will help reduce the total number of Array allocations, which cannot hurt.
2025-04-01 23:03:44 +02:00
Jonas Jenwald
fa643bb22f Change Util.applyTransform to use the point-argument as an in/out parameter
This will help reduce the total number of Array allocations, which cannot hurt, and also allows us to remove the `Util.applyTransformInPlace` method.
2025-04-01 23:03:36 +02:00
Jonas Jenwald
e5fbf52405
Merge pull request #19736 from Snuffleupagus/compileType3Glyph-worker
[api-minor] Move Type3-glyph compilation to the worker-thread
2025-04-01 19:40:30 +02:00
Jonas Jenwald
b33522a208
Merge pull request #19746 from Snuffleupagus/evaluator-img-cache-tweaks
Reduce some code duplication when handling globally cached images
2025-04-01 19:15:10 +02:00
calixteman
25693dc0ee
Merge pull request #19712 from calixteman/optimize_save_construct
Optimize save-transform-constructPath-restore
2025-04-01 18:20:59 +02:00
Calixte Denizet
a35443ff45 Remove few useless beginPaths.
The ctx current path is no more changed since we use some Path2D when we want to fill/stroke them.
It makes calling ctx.beginPath useless.
2025-04-01 16:02:38 +02:00
Jonas Jenwald
9cd5a9658a [api-minor] Move Type3-glyph compilation to the worker-thread
After PR 19731 the format of compiled Type3-glyphs is now simple enough that the compilation can be moved to the worker-thread, without introducing any significant additional complexity.
This allows us to, ever so slightly, simplify the implementation in `src/display/canvas.js` since the Type3 operatorLists will now directly include standard path-rendering operators (using the format introduced in PR 19689).

As part of these changes we also stop caching Type3 image masks since: we've not come across any cases where that actually helps, they're usually fairly small, and it simplifies the code.

Note that one "negative" change introduced in this patch is that we'll now compile Type3-glyphs *eagerly*, whereas previously we'd only do that lazily upon their first use.
However, this doesn't seem to impact performance in any noticeable way since the compilation is fast enough (way below 1 ms/glyph in my testing) and Type3-fonts are also limited to just 256 glyphs. Also, many (or most?) Type3-fonts don't even use image masks and are thus not affected by these changes.
2025-04-01 09:09:00 +02:00
calixteman
a4950c0b71
Merge pull request #19721 from calixteman/simplif_singular_decomposition
Simplify singularValueDecompose2dScale in order to make it using less memory
2025-03-31 12:53:17 +02:00
Jonas Jenwald
213830f44f Use, and re-name, the addLocallyCachedImageOps helper for global images too
This avoids having to "manually" set the image operators for globally cached images.
2025-03-31 10:57:04 +02:00
Jonas Jenwald
e0e59eaf01 Define the global cache-data once in buildPaintImageXObject
Currently we duplicate the same identical code three times, which seems both unnecessary and error prone.
2025-03-31 10:29:29 +02:00
Calixte Denizet
6e9fbd9420 Simplify singularValueDecompose2dScale in order to make it using less memory
In using the Firefox profiler (with JS allocations tracking) and wuppertal.pdf, I noticed
we were using a bit too much memory for a function which is supposed to just compute 2 numbers.
The memory used by itself isn't so important but having a too much objects lead to waste some time
to gc them.

So this patch aims to simplify it a bit.
2025-03-31 10:28:01 +02:00
Jonas Jenwald
e8b4ed2fde
Merge pull request #19743 from timvandermeij/integration-tests-freetext-isolate-part-3
Isolate the "basic operations" freetext editor integration tests
2025-03-31 09:27:26 +02:00
Tim van der Meij
ed08a6a988
Isolate the "basic operations" freetext editor integration tests
This commit reduces the number of freetext editor integration test suite
failures, in full isolation, from 5 to 0 by fixing the following issues
in the "basic operations" block:

- Most tests relied on the first test to enable freetext editing mode.
  For isolation we now do it explicitly in all tests.
- Most tests relied on the other tests having created editors. For
  isolation we now create the editors explicitly in the tests themselves.
- Most tests relied on previous tests for the editor numbering. For
  isolation we change the editor numbering to the one after initial
  document load. Since we can't have state (editors) from a previous
  test anymore we can remove various `clearAll` calls as well.
2025-03-30 18:52:19 +02:00
Tim van der Meij
f32254dbd4
Merge pull request #19742 from timvandermeij/updates
Update dependencies and translations to the most recent versions
2025-03-30 18:04:07 +02:00
Tim van der Meij
040e9c7be4
Update translations to the most recent versions 2025-03-30 15:46:00 +02:00
Tim van der Meij
bb8fb74b72
Upgrade eslint-plugin-unicorn to version 58.0.0
This is a major version bump, but the changelog at
https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v58.0.0
doesn't indicate any breaking changes that should impact us.
2025-03-30 15:44:51 +02:00
Tim van der Meij
a6db2d9f47
Update dependencies to the most recent versions 2025-03-30 15:43:55 +02:00
Tim van der Meij
221956d8ba
Merge pull request #19741 from timvandermeij/bump
Bump the stable version in `pdfjs.config`
2025-03-30 15:33:32 +02:00
Tim van der Meij
7a1ff7f36c
Bump the stable version in pdfjs.config 2025-03-30 15:30:08 +02:00
Tim van der Meij
45cbe8bb0d
Merge pull request #19735 from Snuffleupagus/Type3WordSpacing
Apply char/word-spacing correctly for missing Type3-glyphs
2025-03-30 12:07:54 +02:00
Tim van der Meij
1ccc82beff
Merge pull request #19733 from Snuffleupagus/import-vite-ignore
[api-minor] Attempt to improve support for using the PDF.js builds with Vite
2025-03-30 11:58:20 +02:00
Tim van der Meij
97bf09b795
Merge pull request #19739 from Snuffleupagus/buildPaintImageXObject-fn-OPS
Reduce duplication when specifying the fn-operations in `buildPaintImageXObject`
2025-03-30 11:55:53 +02:00
Tim van der Meij
cb818ce0d3
Merge pull request #19720 from Snuffleupagus/_initializeViewerComponents-shorten
Shorten the `PDFViewerApplication._initializeViewerComponents` method
2025-03-30 11:52:19 +02:00
Tim van der Meij
9d237b9f96
Merge pull request #19737 from Snuffleupagus/TilingPattern-color-param
Simplify handling of the color-parameter in `TilingPattern` (PR 4824 follow-up)
2025-03-30 11:49:11 +02:00
Tim van der Meij
9e58bac43c
Merge pull request #19740 from Snuffleupagus/integration-test-properly-spelling
Spell "properly" in viewer integration-test names
2025-03-30 11:48:12 +02:00
Jonas Jenwald
5b7b94c078 Spell "properly" in viewer integration-test names 2025-03-29 16:35:22 +01:00
Jonas Jenwald
8e3a3387e0 Reduce duplication when specifying the fn-operations in buildPaintImageXObject
Currently we explicitly specify the fn-`OPS` both when adding entries to the operatorList and to the image-caches, and by using a temporary variable we can reduce a bit of duplication (similar to the existing args-handling).
2025-03-29 15:56:46 +01:00
Jonas Jenwald
09118670ca Simplify handling of the color-parameter in TilingPattern (PR 4824 follow-up)
The color-parameter is already available through `IR` (i.e. the internal representation), and after the changes in PR 4824 (which landed in 2014) we no longer need any special handling for it.
2025-03-29 13:02:13 +01:00
Jonas Jenwald
667645798f Apply char/word-spacing correctly for missing Type3-glyphs
In the included PDF document the Type3-font doesn't contain any glyph definition for "space", despite that character being referenced in the /Contents stream.
While missing Type3-glyphs obviously cannot be rendered, we still need to update the current canvas position such that any char/word-spacing is correctly applied.

The test-case was found at https://github.com/pdf-association/pdf-differences/tree/main/Type3WordSpacing
2025-03-29 00:12:08 +01:00
calixteman
dfa553dc11
Merge pull request #19734 from calixteman/bug1952563
[Editor] Add a border to the undo button in the snackbar in order to make a contrast (bug 1952563)
2025-03-28 22:03:22 +01:00
Calixte Denizet
bb2ef20420 [Editor] Add a border to the undo button in the snackbar in order to make a contrast (bug 1952563) 2025-03-28 21:42:57 +01:00
Jonas Jenwald
8bcc3664c9 [api-minor] Attempt to improve support for using the PDF.js builds with Vite
Similar to Webpack there's apparently other bundlers that will not leave `import`-calls alone unless magic comments are used.
Hence we extend the builder to also append `/* @vite-ignore */` comments to `import`-calls, in order to attempt to improve support for using the PDF.js builds together with Vite.

This patch also renames `__non_webpack_import__` to `__raw_import__` since the functionality is no longer bundler-specific.

***PLEASE NOTE:*** This patch is provided as-is, and it does *not* mean that the PDF.js project can/will provide official support for Vite.
2025-03-28 16:34:00 +01:00
Jonas Jenwald
34136d7775
Merge pull request #19731 from Snuffleupagus/Type3-Path2D-pre-transform
Pre-apply the transform when building the `Path2D` objects for Type3-fonts
2025-03-28 16:29:18 +01:00
Jonas Jenwald
f577271908 Simplify the compileType3Glyph function to just return the Path2D objects
Originally this function would "manually" invoke the rendering commands for Type3-glyphs, however that was changed some time ago:
 - Initial `Path2D` support was added in PR 14858, but the old code kept for Node.js compatibility.
 - Since PR 15951 we've been using a `Path2D` polyfill in Node.js environments.

Hence, after the previous commit, we can further simplify this function by *directly* returning/using the `Path2D` object when rendering Type3-glyphs; see also https://github.com/mozilla/pdf.js/pull/19731#discussion_r2018712695
While this won't improve performance significantly, when compared to the introduction of `Path2D`, it definately cannot hurt.
2025-03-28 15:20:43 +01:00
Jonas Jenwald
852b7e407a Pre-apply the transform when building the Path2D objects for Type3-fonts
Rather than updating the transform every time that we're painting a Type3-glyph, we can instead just compute the "final" coordinates during building of the `Path2D` objects.
2025-03-28 13:28:25 +01:00
calixteman
31ec357282
Merge pull request #19730 from calixteman/update_fluent
Update @fluent/dom to 0.10.1
2025-03-28 11:13:53 +01:00
Calixte Denizet
6ff1626cf3 Update @fluent/dom to 0.10.1 2025-03-28 09:39:02 +01:00
calixteman
3da8901f26
Merge pull request #19728 from calixteman/bug1956513
[Editor] Set an aria-description for an added signature (bug 1956513)
2025-03-27 21:31:02 +01:00
Jonas Jenwald
f23087ca7e
Merge pull request #19726 from Snuffleupagus/_setDefaultAppearance-bbox
Use `Util.rectBoundingBox` more in the annotation code (PR 19713 follow-up)
2025-03-27 21:30:01 +01:00
Calixte Denizet
7d8c64b2ff [Editor] Set an aria-description for an added signature (bug 1956513)
NVDA behaves differently depending if the user is hovering or focusing an added signature.
An aria-description is read in both cases while an aria-label is not.
2025-03-27 18:14:06 +01:00
Jonas Jenwald
29788eb0b8 Use Util.rectBoundingBox more in the annotation code (PR 19713 follow-up)
By changing the return format of the various `pointsCallback` functions we can use the `Util.rectBoundingBox` helper in the `MarkupAnnotation.prototype._setDefaultAppearance` method as well, thus shortening the code slightly.
2025-03-27 13:46:36 +01:00
calixteman
2da54ffb59
Merge pull request #19725 from calixteman/bug1956114
[Editor] in the signature UI, disable the description input if there is no signature (bug 1956114)
2025-03-27 13:36:32 +01:00
Calixte Denizet
62df96894d [Editor] in the signature UI, disable the description input if there is no signature (bug 1956114) 2025-03-26 23:02:13 +01:00
calixteman
828398f60f
Merge pull request #19722 from calixteman/bug1956110
[Editor] Fix the border color of a tab panel in HCM (bug 1956110)
2025-03-26 18:54:19 +01:00
Calixte Denizet
5c3c003931 [Editor] Fix the border color of a tab panel in HCM (bug 1956110)
And fix the color of the signature itself when its a drawing or if it comes
from an image.
2025-03-26 14:56:24 +01:00
Jonas Jenwald
c6b9338f6f
Merge pull request #19719 from Snuffleupagus/structTree-xref
Pass the `XRef`-instance explicitly to the `StructTreeRoot` class, and simplify the `StructElementNode.prototype.role` getter
2025-03-25 19:41:20 +01:00
Jonas Jenwald
74ab29544e
Merge pull request #19701 from Snuffleupagus/enableAutoLinking-true
[api-minor] Enable `enableAutoLinking` by default
2025-03-25 18:18:08 +01:00
Jonas Jenwald
22107145df
Merge pull request #19691 from Snuffleupagus/xfa-template-rm-reduce
Remove `Array.prototype.reduce` usage from the `src/core/xfa/template.js` file
2025-03-25 18:17:12 +01:00
Jonas Jenwald
532406427b Simplify the StructElementNode.prototype.role getter a tiny bit
Given that the `roleMap` only contains `Name`-strings, the lookup can be simplified thanks to modern JavaScript features.
2025-03-25 18:04:56 +01:00
Jonas Jenwald
3c93d63731 Pass the XRef-instance explicitly to the StructTreeRoot class
This avoids the current situation where we're accessing it through various dictionaries, since that's a somewhat brittle solution given that in the general case a `Dict`-instance may not have the `xref`-field set (see e.g. the empty-Dict).
2025-03-25 18:04:51 +01:00
calixteman
d4c7aaa9d3
Merge pull request #19702 from calixteman/issue19694
In the struct tree a kid can be a reference to an MCID entry (issue #19694)
2025-03-25 18:02:46 +01:00
Calixte Denizet
6146e5fee7 Optimize save-transform-constructPath-restore
The 4 operations can be replaced with just one in applying the transform to the points coordinates.
2025-03-25 15:31:45 +01:00
Calixte Denizet
dee80cb082 In the struct tree a kid can be a reference to an MCID entry (issue #19694) 2025-03-25 15:01:52 +01:00
Jonas Jenwald
8f7d6f4118 Shorten the PDFViewerApplication._initializeViewerComponents method
By tweaking a few local variable names we can shorten various viewer-component initialization code, and we can also reduce some duplication when assigning components to the `PDFViewerApplication`-scope.
2025-03-25 12:51:40 +01:00
calixteman
a8c77633a1
Merge pull request #19717 from calixteman/issue16287
Don't overwrite the global alpha when switching to smask mode (bug 1764587)
2025-03-25 10:08:36 +01:00
Calixte Denizet
1d0227af62 Don't overwrite the global alpha when switching to smask mode
It fixes #issue16287.
2025-03-24 21:35:09 +01:00
calixteman
b57da32d70
Merge pull request #19716 from calixteman/issue16742
Take into account the group bbox
2025-03-24 16:57:34 +01:00
Jonas Jenwald
9456b88f6b Remove Array.prototype.reduce usage from the src/core/xfa/template.js file
Using `Array.prototype.reduce` often leads to less readable code, and in these cases we can replace that with other Array-methods instead.
2025-03-24 16:40:41 +01:00
Jonas Jenwald
fceaab8864
Merge pull request #19713 from Snuffleupagus/Util-minMax-methods
Add new bounding-box helpers in `Util` to reduce code duplication
2025-03-24 16:39:05 +01:00
Jonas Jenwald
d8d4f2a850
Merge pull request #19714 from Snuffleupagus/MathClamp-3
Use the `MathClamp` helper function even more (PR 19617 follow-up)
2025-03-24 16:35:07 +01:00
Calixte Denizet
a3c31904f1 Take into account the group bbox
It fixes #16742.
2025-03-24 15:07:31 +01:00
calixteman
bcba053a5e
Merge pull request #19715 from calixteman/issue18529
Take into account the path and the line width when consuming a stroked path
2025-03-24 14:41:29 +01:00
Jonas Jenwald
b85f0903ca Add new bounding-box helpers in Util to reduce code duplication
Currently we have a `Util`-helper for computing the bounding-box of a Bézier curve, however for simple points and rectangles we repeat virtually identical code in many spots throughout the code-base.

 - Introduce new `Util.pointBoundingBox` and `Util.rectBoundingBox` helpers.

 - Remove the "fallback" from `Util.bezierBoundingBox` and only support passing in a `minMax`-array, since there's only a single call-site using the other format and it could be easily updated.
2025-03-23 19:20:02 +01:00
Calixte Denizet
2369e2d84f Take into account the path and the line width when consuming a stroked path 2025-03-23 18:08:06 +01:00
Jonas Jenwald
4547e582ff Use the MathClamp helper function even more (PR 19617 follow-up)
There's a few more spots that I accidentally missed in PR 19617.
2025-03-23 17:11:06 +01:00
Tim van der Meij
19b4adac03
Merge pull request #19711 from timvandermeij/integration-tests-freetext-isolate-part-2
Isolate the "create editor with keyboard" freetext editor integration tests
2025-03-23 15:06:39 +01:00
calixteman
7c5695f5c6
Merge pull request #19708 from calixteman/fix_save_smask_mode
Fix save/restore while in smask mode
2025-03-23 14:45:09 +01:00
Tim van der Meij
d01913e62e
Isolate the "create editor with keyboard" freetext editor integration tests
This commit reduces the number of freetext editor integration test suite
failures, in full isolation, from 6 to 5 by fixing the following issues
in the "create editor with keyboard" block:

- The second test relied on the first test to enable freetext editing
  mode and put focus on the page (annotation layer). For isolation we
  now do that explicitly in the second test.
- The second test relied on the first test for the editor numbering. For
  isolation we change the editor numbering to the one after initial
  document load.

Moreover, the test names have been updated to clarify with scenario is
being tested, which came up during comparison of the changes against
commit ea5eafa to make sure that we are still testing the originally
intended scenarios (confirmed by disabling the relevant code from the
commit per scenario and noticing the corresponding test failing).
2025-03-23 14:28:03 +01:00
Tim van der Meij
94b2c86251
Merge pull request #19704 from timvandermeij/updates
Update dependencies and translations to the most recent versions
2025-03-23 13:43:28 +01:00
Jonas Jenwald
c7c08bbd07
Merge pull request #19710 from Snuffleupagus/Math-sumPrecise
Introduce `Math.sumPrecise` usage in the code-base
2025-03-23 13:34:28 +01:00
Jonas Jenwald
e73224ded7 Introduce Math.sumPrecise usage in the code-base
This is a new JavaScript feature that makes it easy to compute the sum of list of values; see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sumPrecise

This allows us to remove most cases of `Array.prototype.reduce`, which helps improve readability since that (in my opinion) often isn't the most intuitive code.
2025-03-23 13:03:56 +01:00
Tim van der Meij
7352d1d683
Update translations to the most recent versions 2025-03-23 12:46:06 +01:00
Tim van der Meij
4522c6c071
Update dependencies to the most recent versions 2025-03-23 12:46:02 +01:00
Tim van der Meij
80d4d7058f
Merge pull request #19706 from timvandermeij/integration-tests-freetext-isolate-part-1
Isolate the "move editor with arrows" freetext editor integration tests
2025-03-23 12:01:30 +01:00
Calixte Denizet
c275c72977 Fix save/restore while in smask mode
The rendering bug with issue17779.pdf is due to the fact that we call save on the suspended ctx
but not on the the current ctx. So each time we've something like save/transform/restore then
the transform not "removed" when restoring.
So this patch just apply the save/restore operations to ctx which are mirrored on the suspended one.
2025-03-22 23:26:51 +01:00
calixteman
d009e4b3a7
Merge pull request #19689 from calixteman/use_path2d
[api-minor] Use a Path2D when doing a path operation in the canvas (bug 1946953)
2025-03-22 21:46:27 +01:00
Tim van der Meij
440d519326
Isolate the "move editor with arrows" freetext editor integration tests
This commit reduces the number of freetext editor integration test suite
failures, in full isolation, from 8 to 6 by fixing the following issues
in the "move editor with arrows" block:

- The second and third test relied on the first test to enable freetext
  editing mode. For isolation we now do it explicitly in both tests.
- The second test relied on the first test having created an editor. For
  isolation we now create the editor explicitly in the second test.
- The third test relied on the previous tests for the editor numbering.
  For isolation we change the editor numbering to the one after initial
  document load. Since we can't have state (editors) from a previous
  test anymore we can remove the `clearAll` call as well.
2025-03-22 20:46:21 +01:00
Tim van der Meij
72212a892b
Merge pull request #19705 from timvandermeij/integration-tests-scripting-isolate
Isolate the scripting integration tests
2025-03-22 20:38:50 +01:00
Calixte Denizet
be1f5671bb [api-minor] Use a Path2D when doing a path operation in the canvas (bug 1946953)
With this patch, all the paths components are collected in the worker until a path
operation is met (i.e., stroke, fill, ...).
Then in the canvas a Path2D is created and will replace the path data transfered from the worker,
this way when rescaling, the Path2D can be reused.
In term of performances, using Path2D is very slightly improving speed when scaling the canvas.
2025-03-22 20:35:24 +01:00
Tim van der Meij
1c73e526e0
Isolate the scripting integration tests
To avoid being able to introduce dependencies between tests, and to
bring existing dependencies to the surface, this commit makes sure that
we close the document between tests so that we can't accidentally rely
on state set by a previous test. This prevents multiple tests from
failing if one of them fails and makes debugging easier by being able to
run each test on their own independent of other tests.

This commit, combined with the previous ones, is enough to make the
scripting integration test suite pass consistently if random mode in
Jasmine is enabled, proving that the tests are fully isolated now.
2025-03-22 18:31:23 +01:00
Tim van der Meij
0f3692a621
Remove the dependency between the order-dependent scripting integration tests
The integration tests are order-dependent because they rely on input
field state set by a previous test. This commit fixes the issue by
updating the values to match the initial state of the document, which
makes sure that we don't build upon values from previous tests while
still testing the intended logic in the individual tests like before.
2025-03-22 18:31:23 +01:00
Tim van der Meij
334d681359
Refactor the order-dependent scripting integration tests
By checking for the expected value directly we can shorten the code, and
it simplifies removing the dependencies between the tests in the next
commit (by having fewer places to change). Note that this follows the
same pattern as PRs #19192, #19001 and #18399 and also helps to remove
any further possibilities for intermittent failures.
2025-03-22 18:31:10 +01:00
Tim van der Meij
11e89b74d9
Merge pull request #19696 from Snuffleupagus/issue-19695
Extend `getSupplementalGlyphMapForCalibri` with Pound-sign (issue 19695)
2025-03-22 13:21:07 +01:00
Tim van der Meij
9023395550
Merge pull request #19681 from Snuffleupagus/AbortSignal-any-basic-polyfill
[api-minor] Add a basic `AbortSignal.any` polyfill in PDF.js `legacy` builds
2025-03-22 13:20:18 +01:00
Tim van der Meij
7f70835830
Merge pull request #19703 from Snuffleupagus/bidi-rm-setValues
Replace the `setValues` function with `Array.prototype.fill()` in the `src/core/bidi.js` file
2025-03-22 13:13:42 +01:00
Jonas Jenwald
fe19d9666f Replace the setValues function with Array.prototype.fill() in the src/core/bidi.js file
This code is originally from 2012, see PR 1218, and the Array-method wasn't available until Firefox 31 (released on 2014-07-22).
2025-03-21 23:00:38 +01:00
Jonas Jenwald
abcddb51e0 [api-minor] Enable enableAutoLinking by default
It's already enabled by default in Firefox, and since there's no open issues regarding auto-linking I suppose that we can attempt to enable it unconditionally.
2025-03-21 11:49:03 +01:00
Jonas Jenwald
8f4c0169a0
Merge pull request #19692 from Snuffleupagus/writer-improve
Improve the implementation in `src/core/writer.js` a little bit
2025-03-20 21:43:21 +01:00
Jonas Jenwald
50eb97afb3 Improve the implementation in src/core/writer.js a little bit
- Let the `writeString` helper function return the new offset, to avoid having to recompute that in multiple spots.

 - In the `computeMD5` helper function we can create the `md5Buffer` via Array-destructuring, rather than using a manual loop.
2025-03-20 21:13:34 +01:00
Jonas Jenwald
f90732e4c3 Extend getSupplementalGlyphMapForCalibri with Pound-sign (issue 19695) 2025-03-20 20:12:24 +01:00
Jonas Jenwald
a229914b46
Merge pull request #19693 from Snuffleupagus/writer-fix-md5
Fix the MD5 computation in the `src/core/writer.js` file
2025-03-20 16:30:57 +01:00
Jonas Jenwald
e6c869c127 Fix the MD5 computation in the src/core/writer.js file
Currently the MD5 computation doesn't actually work (at all?), since we're invoking the `calculateMD5` function without providing all of the necessary parameters and the PDF-data thus isn't taken into account.

Fixing this caused unit-tests to fail, which isn't that surprising since the current date/time is used in the MD5 computation, and we thus utilize Jasmine to work-around that.
2025-03-20 14:41:25 +01:00
calixteman
cd4a30341f
Merge pull request #19685 from calixteman/issue19424
[Editor] Take into account the parent rotation when switch to edit mode (issue #19424)
2025-03-19 15:15:25 +01:00
Calixte Denizet
276c8f3518 [Editor] Take into account the parent rotation when switch to edit mode (issue #19424) 2025-03-19 14:26:55 +01:00
Jonas Jenwald
1a39e2dac1
Merge pull request #19684 from Snuffleupagus/issue-19683
Improve `addSignatureDescription`/`editSignatureDescription` handling (issue 19683)
2025-03-19 13:43:54 +01:00
Jonas Jenwald
79058c92e3 Improve addSignatureDescription/editSignatureDescription handling (issue 19683)
- Point the `addSignatureDescription` respectively `editSignatureDescription` labels to their actual `input`-elements (this way clicking the label will actually focus the input).

 - Add the event listener to the `addSignatureDescription`-input, rather than its `span`-element (this is consistent with the `editSignatureDescription` case).

 - Correctly check if the `addSignatureDescription`-input is empty, since we're accidentally comparing with its `span`-element.

 - Remove unbalanced, and likely accidentally added, `</span>` tags.
2025-03-19 11:38:56 +01:00
Jonas Jenwald
028e4f7ea8 [api-minor] Add a basic AbortSignal.any polyfill in PDF.js legacy builds
This is an admittedly very basic polyfill, to allow us to remove a bunch of inline feature testing, that I've thrown together based on reading https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal/any_static and related MDN articles.

Compared to PR 19218 it's obviously much more "primitive", however the implementation is simple and it doesn't suffer from any licensing issues (since I wrote the code myself).
2025-03-18 10:54:49 +01:00
Jonas Jenwald
00e3a4d87a
Merge pull request #19674 from Snuffleupagus/core-document-more-async
Introduce more `async` code in the `src/core/document.js` file
2025-03-17 21:40:16 +01:00
Jonas Jenwald
6243afa85e
Merge pull request #19675 from Snuffleupagus/IccColorSpace-fetchSync
Introduce a `fetchSync` helper function for the `IccColorSpace` classes
2025-03-17 20:22:00 +01:00
Jonas Jenwald
2f1497c9c4
Merge pull request #19677 from Snuffleupagus/issue-19676
For JPEG images with CMYK-data, ensure that the alpha-component is set correctly when WebAssembly is disabled (issue 19676)
2025-03-17 20:17:00 +01:00
Jonas Jenwald
afb14bdc0b For JPEG images with CMYK-data, ensure that the alpha-component is set correctly when WebAssembly is disabled (issue 19676) 2025-03-17 16:15:32 +01:00
Jonas Jenwald
1fb6edc713 Introduce a fetchSync helper function for the IccColorSpace classes
This reduces code duplication a tiny bit, which shouldn't hurt.
2025-03-17 14:58:53 +01:00
Jonas Jenwald
e37236e9af
Merge pull request #19673 from Snuffleupagus/rm-ftl-comment
Remove documentation for unused l10n variable (PR 18492 follow-up)
2025-03-17 14:28:12 +01:00
Jonas Jenwald
d00482380a Introduce more async code in the src/core/document.js file 2025-03-17 13:20:51 +01:00
Jonas Jenwald
e5e0856f99 Remove documentation for unused l10n variable (PR 18492 follow-up)
Looking at PR 18492 it doesn't seem that the `$percent` variable, for the `pdfjs-editor-new-alt-text-ai-model-downloading-progress` l10n-string, was ever used.
2025-03-17 12:20:30 +01:00
Tim van der Meij
92d7b6d09f
Merge pull request #19671 from timvandermeij/integration-tests-signature-intermittent
Fix the "Signature Editor Basic operations must check copy and paste" integration test
2025-03-16 21:35:25 +01:00
Tim van der Meij
2a4f970e00
Fix the "Signature Editor Basic operations must check copy and paste" integration test
This integration test fails intermittently because of concurrent
clipboard access due to running the test in parallel in both browsers.
It can be reproduced by introducing `await waitForTimeout(1000)` between
the copy and paste operations.

This commit fixes the issue by running the test sequentially instead,
mirroring the change from commit 0e94f2bd.
2025-03-16 20:35:36 +01:00
Tim van der Meij
e738566900
Merge pull request #19669 from timvandermeij/icc-colorspace-404
Don't get ICC color space files if required API options are missing
2025-03-16 18:45:21 +01:00
Tim van der Meij
f44cba86d5
Don't get ICC color space files if required API options are missing
This commit improves validation of the API options for the ICC color
space logic. If `useWasm` is `true` but the corresponding `wasmUrl`
or `iccUrl` API options are not provided we can avoid requesting
files with `null` URLs which always results in a 404 response.
2025-03-16 16:29:42 +01:00
Jonas Jenwald
4c5ad92584
Merge pull request #19667 from Snuffleupagus/version-5.1
Bump library version to `5.1`
2025-03-16 13:51:35 +01:00
Jonas Jenwald
e3e2396230 Bump library version to 5.1 2025-03-16 13:47:18 +01:00
Tim van der Meij
d86045eacb
Merge pull request #19632 from Snuffleupagus/issue-15085
[api-minor] Attempt to support fetching the raw data of the PDF document from the `PDFDocumentLoadingTask`-instance (issue 15085)
2025-03-16 12:32:20 +01:00
Tim van der Meij
f8c2a949b7
Merge pull request #19665 from timvandermeij/updates
Update dependencies and translations to the most recent versions
2025-03-16 11:31:08 +01:00
Jonas Jenwald
9e8d4e4d46 [api-minor] Attempt to support fetching the raw data of the PDF document from the PDFDocumentLoadingTask-instance (issue 15085)
The new API-functionality will allow a PDF document to be downloaded in the viewer e.g. while the PasswordPrompt is open, or in cases when document initialization failed.
Normally the raw data of the PDF document would be accessed via the `PDFDocumentProxy.prototype.getData` method, however in these cases the `PDFDocumentProxy`-instance isn't available.
2025-03-16 10:09:44 +01:00
Tim van der Meij
33af8b5c2c
Update translations to the most recent versions 2025-03-15 20:42:08 +01:00
Tim van der Meij
85818f404f
Upgrade babel-loader to version 10.0.0
This is a major version bump, but the changelog at
https://github.com/babel/babel-loader/releases/tag/v10.0.0
doesn't indicate any breaking changes that should impact us.
2025-03-15 20:42:08 +01:00
Tim van der Meij
cfe6cc6a7e
Upgrade @metalsmith/layouts to version 3.0.0
This is a major version bump, and the changelog at
https://github.com/metalsmith/layouts/releases/tag/v3.0.0
indicates a breaking change that impacts us, namely that we need to
explicitly define the pattern and transformer that we wish to use.
2025-03-15 20:42:08 +01:00
Tim van der Meij
ef7e0ddae4
Update dependencies to the most recent versions 2025-03-15 20:42:08 +01:00
Jonas Jenwald
d1d88cc09e
Merge pull request #19662 from Snuffleupagus/xfa-rm-regex
Replace a few simple regular expressions in the XFA-code with string parsing
2025-03-15 19:44:30 +01:00
Tim van der Meij
2d1833b566
Merge pull request #19663 from timvandermeij/bump
Bump the stable version in `pdfjs.config`
2025-03-15 19:19:22 +01:00
Tim van der Meij
a1bcd789b9
Bump the stable version in pdfjs.config 2025-03-15 19:15:34 +01:00
Tim van der Meij
23972e1946
Merge pull request #19661 from Snuffleupagus/thumbnails-inline-finishRenderTask
Inline the `PDFThumbnailView.prototype.#finishRenderTask`  helper method
2025-03-15 18:46:26 +01:00
Jonas Jenwald
8a24c1907a Replace a few simple regular expressions in the XFA-code with string parsing
- Add a couple of `limit` parameters in cases where those were "missing", for `String.prototype.split()` calls, to avoid unnecessary parsing.

 - Remove some "pointless" initial trimming of leading/trailing spaces, since that's already done at a later parsing step in many cases.
2025-03-15 17:25:26 +01:00
Jonas Jenwald
6548c9f1f6 Inline the PDFThumbnailView.prototype.#finishRenderTask helper method
Given that the `draw` method is already asynchronous we can easily inline this old helper method, which shortens the code and improves consistency in the code-base (note the `BasePDFPageView`-implementation).
2025-03-15 14:19:16 +01:00
Jonas Jenwald
7ee061bcf1 Add a helper function, in web/pdf_thumbnail_view.js, for "zeroing" a canvas
This removes a tiny bit of code duplication.
2025-03-15 13:24:52 +01:00
Jonas Jenwald
b7eef925ac Shorten the PDFThumbnailView.prototype.#getReducedImageDims method (PR 19635 follow-up)
This method is slightly more verbose than necessary, hence we can shorten the code a little bit.
2025-03-15 13:19:34 +01:00
Tim van der Meij
4b2683ecb6
Merge pull request #19656 from Snuffleupagus/shorten-MeshStreamReader
Slightly shorten a couple of `MeshStreamReader` methods
2025-03-14 19:50:36 +01:00
Jonas Jenwald
9967ab4aa8
Merge pull request #19657 from Snuffleupagus/GenericL10n-rm-regex
Replace the regular expression in `GenericL10n.#getPaths` with simple string parsing
2025-03-14 16:21:54 +01:00
Jonas Jenwald
9180e27f15 Replace the regular expression in GenericL10n.#getPaths with simple string parsing 2025-03-14 15:54:14 +01:00
Jonas Jenwald
ec30f0788b Slightly shorten a couple of MeshStreamReader methods
By using object destructuring in the `readCoordinate` and `readComponents` methods we can ever so slightly shorten this code.
2025-03-14 12:57:41 +01:00
calixteman
2294a510b0
Merge pull request #19653 from calixteman/rm_strings_html
Remove all the translatable strings from the html
2025-03-13 21:24:34 +01:00
Calixte Denizet
88c3ed9a80 Remove all the translatable strings from the html 2025-03-13 18:38:29 +01:00
calixteman
8791b24742
Merge pull request #19652 from calixteman/rm_useless_css_var
[Editor] Remove useless css variable
2025-03-13 16:48:50 +01:00
Calixte Denizet
7c706b6525 [Editor] Remove useless css variable 2025-03-13 16:40:30 +01:00
calixteman
dc61e36bf4
Merge pull request #19651 from calixteman/fix_ftl
[Editor] Fix variable name in the ftl file
2025-03-13 16:36:38 +01:00
Calixte Denizet
56f58bde9a [Editor] Fix variable name in the ftl file
and add a linting rule to avoid such an error in the future.
2025-03-13 16:26:16 +01:00
calixteman
d5c185b90a
Merge pull request #19649 from calixteman/bug1953298
[Editor] Fix the title of saved signature button (bug 1953298)
2025-03-13 13:50:43 +01:00
Calixte Denizet
da105f71f6 [Editor] Fix the title of saved signature button (bug 1953298) 2025-03-13 13:07:45 +01:00
Jonas Jenwald
78b310afb1
Merge pull request #19650 from Snuffleupagus/shorten-crypto
Shorten the `src/core/crypto.js` file a little bit
2025-03-13 12:46:53 +01:00
Jonas Jenwald
ef01ceda1b Change a couple of "password" ref-tests to "eq" tests
Currrently these are just "load" tests, and by also testing rendering we get slightly better test-coverage for the `src/core/crypto.js` file.
2025-03-13 11:58:13 +01:00
Jonas Jenwald
0e15f709c4 Remove unnecessary else if when checking the encryptionKey in the CipherTransformFactory constructor
This can be simplified a tiny bit since we already throw `PasswordException` when no password is provided.
2025-03-13 11:58:13 +01:00
Jonas Jenwald
cc63ffa6bb Reduce duplication when checking the userPassword, in CipherTransformFactory.prototype.#prepareKeyData
Currently we duplicate the exact same code in both the `if`- and `else`-branches, which seems unnecessary, and we can also replace the manual loop.
2025-03-13 11:58:02 +01:00
calixteman
38cb01c629
Merge pull request #19648 from calixteman/bug1953290
[Editor] Fix the role of the different editors in order to make them interactive elements (bug 1953290)
2025-03-13 09:20:26 +01:00
Calixte Denizet
7fce3eac93 [Editor] Fix the role of the different editors in order to make them interactive elements (bug 1953290)
Having some interactive elements forces the screen readers to switch to form mode
and consequently they delegate the keyboard stuff to the browser.
This patch sets an aria label on each editor in order to have a better description than just
'application'.
2025-03-12 22:19:31 +01:00
Jonas Jenwald
a8ad7d6485
Merge pull request #19645 from Snuffleupagus/OutputScale-pixelRatio
Add an `OutputScale` static method to get the `devicePixelRatio`
2025-03-12 21:22:16 +01:00
Jonas Jenwald
319d239f41 Add an OutputScale static method to get the devicePixelRatio
Currently we lookup the `devicePixelRatio`, with fallback handling, in a number of spots in the code-base.
Rather than duplicating code we can instead add a new static method in the `OutputScale` class, since that one is now exposed in the API.
2025-03-12 21:07:06 +01:00
Jonas Jenwald
e4795f639c
Merge pull request #19644 from Snuffleupagus/crypto-PDFBase
Introduce a common base class for the `PDF17` and `PDF20` crypto classes
2025-03-12 21:05:39 +01:00
Jonas Jenwald
643c44b631
Merge pull request #19643 from Snuffleupagus/l10n-update
Update l10n files
2025-03-12 21:02:24 +01:00
Jonas Jenwald
0cbb2b1d13
Merge pull request #19646 from Snuffleupagus/dont-cache-MIN_TOUCH_DISTANCE_TO_PINCH
Don't shadow the `TouchManager.prototype.MIN_TOUCH_DISTANCE_TO_PINCH` value
2025-03-12 21:02:02 +01:00
Jonas Jenwald
bec6287b0a
Merge pull request #19647 from Snuffleupagus/bug-1953099
Let `Lexer.prototype.getNumber` treat more cases of a single minus sign as zero (bug 1953099)
2025-03-12 19:34:07 +01:00
calixteman
7bc7416111
Merge pull request #19642 from calixteman/bug1953003
[Editor] Fix the style of the buttons in dialog (bug 1953003)
2025-03-12 19:24:53 +01:00
Jonas Jenwald
ee34c5c648 Let Lexer.prototype.getNumber treat more cases of a single minus sign as zero (bug 1953099)
This patch extends the approach of PR 14543, by also treating e.g. minus signs followed by '(' or '<' as zero.
Inside of a /Contents stream those characters will generally mean the start of one or more glyphs.
2025-03-12 17:50:13 +01:00
Jonas Jenwald
92adc7ea1b Don't shadow the TouchManager.prototype.MIN_TOUCH_DISTANCE_TO_PINCH value
The `devicePixelRatio` may change if the window resolution changes, which can happen e.g. if the viewer is moved to another monitor.
2025-03-12 14:53:20 +01:00
Jonas Jenwald
2ff6829e47 Introduce a common base class for the PDF17 and PDF20 crypto classes
With the exception of a different hashing function these classes are identical, and the base class thus help reduce code duplication.

This patch reduces the size of the `gulp mozcentral` build with 1344 bytes, which isn't a lot but still cannot hurt.
2025-03-12 12:25:55 +01:00
Jonas Jenwald
4ebcc996d0 Update l10n files
Given the recently added l10n-strings, let's do yet another update before the upcoming release to avoid needlessly "broken" translations.
2025-03-12 09:58:52 +01:00
Calixte Denizet
216e17afc5 [Editor] Fix the style of the buttons in dialog (bug 1953003)
This patch fixes:
 - the style of the primary/secondary buttons in the dialog which weren't fully compliant to the last specs.
 - the style of the input field in HCM (wrong background)
 - the color of the link in the image tab.
2025-03-11 20:03:23 +01:00
Jonas Jenwald
d74619847d
Merge pull request #19640 from Snuffleupagus/secondaryToolbar-fix-close
Don't close the `secondaryToolbar` when clicking inside it (PR 18385 follow-up)
2025-03-11 19:42:36 +01:00
Jonas Jenwald
221eba29b9 Don't close the secondaryToolbar when clicking inside it (PR 18385 follow-up)
When the DOM structure of the viewer was updated in PR 18385 it caused the `secondaryToolbar` to accidentally start closing when clicking inside of it, since the `secondaryToolbar` now reside *under* the `toolbar` in the DOM.

**Steps to reproduce:**
 - Open the viewer.
 - Open the `secondaryToolbar`.
 - Try to change document rotation at least *twice*.

**Expected behaviour:**
 The document rotation can be changed an arbitrary number of times.

**Actual results:**
 The `secondaryToolbar` closes after changing rotation just once.
2025-03-11 19:26:23 +01:00
calixteman
391e84c34b
Merge pull request #19639 from calixteman/issue19633
Always use the absolute value of the line thickness (issue 19633)
2025-03-11 14:35:33 +01:00
Calixte Denizet
4b4f85484e Always use the absolute value of the line thickness (issue 19633) 2025-03-11 14:03:23 +01:00
calixteman
d008452e80
Merge pull request #19637 from calixteman/bug1952571
[Editor] Add an aria label to an added signature (bug 1952571)
2025-03-10 20:44:42 +01:00
Calixte Denizet
b5a7b827b5 [Editor] Add an aria label to an added signature (bug 1952571) 2025-03-10 19:15:05 +01:00
calixteman
febf59ce75
Merge pull request #19636 from calixteman/bug1952558
[Editor] Make sure the save checkbox isn't focusable when saving is disabled (bug 1952558)
2025-03-10 18:46:40 +01:00
Calixte Denizet
69a2e5137d [Editor] Make sure the save checkbox isn't focusable when saving is disabled (bug 1952558)
And fix the the width of the warning message when the limit of signatures has been reached:
in french the string is longer than the dialog's one.
2025-03-10 18:08:42 +01:00
calixteman
13474aca63
Merge pull request #19620 from calixteman/cmyk_icc
[api-minor] Use an icc profile for converting CMYK to RGB
2025-03-10 16:55:48 +01:00
Jonas Jenwald
4152eae3fb
Merge pull request #19635 from Snuffleupagus/thumbnails-maxCanvasPixels
Support the `maxCanvasPixels` option in the thumbnails code
2025-03-10 16:30:25 +01:00
Jonas Jenwald
26b5c8f821
Merge pull request #19625 from Snuffleupagus/issue-19624
Improve text-selection for Type3 fonts, using `d0` operators, with empty /FontBBox-entries (issue 19624)
2025-03-10 16:26:04 +01:00
Jonas Jenwald
0edfd29a3e Improve text-selection for Type3 fonts, using d0 operators, with empty /FontBBox-entries (issue 19624)
For Type3 glyphs with `d1` operators it's easy to compute a fallback bounding box, however for `d0` the situation is more difficult.
Given that we nowadays compute the min/max of basic path-rendering operators on the worker-thread, we can utilize that by parsing these Type3 operatorLists to guess a more suitable fallback bounding box.
2025-03-10 16:21:54 +01:00
Jonas Jenwald
b9e8844541
Merge pull request #19613 from Snuffleupagus/issue-19611
Let SMask/Mask images fallback to the parent image dimensions (issue 19611)
2025-03-10 16:12:48 +01:00
Calixte Denizet
7280540901 [api-minor] Use an icc profile for converting CMYK to RGB 2025-03-10 14:18:20 +01:00
Jonas Jenwald
fc22d3afc7 Support the maxCanvasPixels option in the thumbnails code
This addresses an inconsistency in the viewer, since the thumbnails don't respect the `maxCanvasPixels` option.
Note that, as far as I know, this has not lead to any bugs since the thumbnails render with a fixed (and small) width, however it really cannot hurt to address this (especially after the introduction of the `maxCanvasDim` option).

To support this a new `OutputScale`-method was added, to avoid having to duplicate code in multiple files.
2025-03-10 14:12:07 +01:00
Jonas Jenwald
10a99ea0a7 Let SMask/Mask images fallback to the parent image dimensions (issue 19611)
One of the images have a corrupt SMask, where the /Height-entry is bogus; see the excerpt below (via https://brendandahl.github.io/pdf.js.utils/browser/).
```
SMask (stream) [id: 17, gen: 0]

    ColorSpace = /DeviceGray
    Height = /Length
    Subtype = /Image
    Filter = /FlateDecode
    Type = /XObject
    Width = 157
    Matte (array)
    BitsPerComponent = 8
    Length = 3893
    <view contents> download
```

Hence we enable SMask/Mask images to fallback to the parent image dimensions, and also add more validation of the width/height to get a better error message when that data is wrong.
2025-03-10 12:37:44 +01:00
Jonas Jenwald
1bc98dfbd9
Merge pull request #19621 from Snuffleupagus/bug-1943094-thumbs
Limit the maximum thumbnail canvas width/height, similar to pages (PR 19604 follow-up)
2025-03-10 11:32:08 +01:00
Tim van der Meij
81baa16c8b
Merge pull request #19629 from Snuffleupagus/split-crypto
Re-factor the `src/core/crypto.js` file
2025-03-09 13:08:40 +01:00
Tim van der Meij
621258f85c
Merge pull request #19623 from Snuffleupagus/PDFFunctionFactory-rm-createFromArray
Remove the `PDFFunctionFactory.createFromArray` method
2025-03-09 12:58:55 +01:00
Tim van der Meij
66af403f10
Merge pull request #19628 from Snuffleupagus/MathClamp-2
Use the `MathClamp` helper function more (PR 19617 follow-up)
2025-03-09 12:49:53 +01:00
Jonas Jenwald
0a2c176027 Remove the unused or/shiftLeft methods from the Word64 class (PR 4938 follow-up)
These methods were introduced in *the first* commit of PR 4938, however they became unused in *the second* commit of that PR.
Hence it seems that we've been accidentally shipping, a small amount of, unused code for over a decade.
2025-03-08 17:33:16 +01:00
Jonas Jenwald
67065e43f5 Replace loops with TypedArray.prototype.set in the CipherTransformFactory class
Also, adds `TypedArray.prototype.fill` usage in one spot.
2025-03-08 16:17:45 +01:00
Jonas Jenwald
c65f1b0dae Move a couple of AESBaseCipher fields from the constructors
Thanks to modern JS class features we can, ever so slightly, shorten some class field definitions.
2025-03-08 16:06:30 +01:00
Jonas Jenwald
461488cb16 Initialize the defaultPasswordBytes, in CipherTransformFactory, lazily 2025-03-08 16:06:30 +01:00
Jonas Jenwald
139d27aa7d Simplify various calculate... methods a tiny bit
While initializing the `padded` Uint8Arrays we're manually assigning zeros to some entries, which is completely unnecessary since that's the default value for a TypedArray, and instead we can just increment the index.
2025-03-08 16:06:27 +01:00
Jonas Jenwald
facf34606f Move the calculateSHA384 and calculateSHA512 functions into their own file
This allows us to remove a closure, and we also change the code to initialize various constants lazily.
2025-03-08 15:56:22 +01:00
Jonas Jenwald
a1eac86037 Move the calculateSHA256 function into its own file
This allows us to remove a closure, and we also change the code to initialize various constants lazily.
2025-03-08 15:56:16 +01:00
Jonas Jenwald
3e8d01ad7c Move the calculateMD5 function into its own file
This allows us to remove a closure, and we also change the code to initialize various constants lazily.
2025-03-08 15:56:05 +01:00
Jonas Jenwald
1b5151f969 Remove pointless Math.min usage in the XFA parsing
When creating the `StyleMapping` for the "xfa-font-horizontal-scale" and "xfa-font-vertical-scale" properties there's currently pointless `Math.min` usage, since we're not actually comparing with anything.
2025-03-08 12:22:33 +01:00
Jonas Jenwald
bee0f53c65 Use the MathClamp helper function more (PR 19617 follow-up)
There's a few spots that I accidentally missed in PR 19617.
2025-03-08 12:19:56 +01:00
Jonas Jenwald
cef4fcf025
Merge pull request #19622 from nicolo-ribaudo/zoom-detail-view-constant-redraw
Do not constantly render the detail canvas on zoom (bug 1952496)
2025-03-07 13:56:13 +01:00
Nicolò Ribaudo
a1dc46aa9d
Do not constantly render the detail canvas on zoom
When zooming, we should skip rendering the detail canvas until the
zoom is done, similarly to how normal page rendering is delayed.
To do so is enough to skip details view while zooming, since the
main view rendering that already happens after the delay will also
trigger rendering of the detail views.
2025-03-07 12:38:52 +01:00
Jonas Jenwald
17d7943758 Remove the PDFFunctionFactory.createFromArray method
This combines the `PDFFunctionFactory.create` and `PDFFunctionFactory.createFromArray` methods, which helps simplify and shorten the code.
Additionally, to simplify the parameter handling we pass the `PDFFunctionFactory`-instance directly to the various `PDFFunction`-methods.
2025-03-07 12:28:14 +01:00
Jonas Jenwald
eef15a30cd Limit the maximum thumbnail canvas width/height, similar to pages (PR 19604 follow-up)
The changes in PR 19604 weren't enough for thumbnail canvases in some cases, see e.g. https://web.archive.org/web/20231204152348if_/https://user.informatik.uni-bremen.de/cabo/rfc9000.pdf#pagemode=thumbs
2025-03-06 23:00:20 +01:00
Jonas Jenwald
af89e77124
Merge pull request #19619 from Snuffleupagus/fix-#savedHasOwnCanvas
Fix the `#savedHasOwnCanvas` handling in the `StampAnnotation` class
2025-03-06 17:59:14 +01:00
calixteman
1abb7be11a
Merge pull request #19618 from calixteman/non_editable_stamp
[Editor] In edit mode, a non-editable stamp must be visible after the page is rendered
2025-03-06 16:23:55 +01:00
Jonas Jenwald
4f2cf38bfa
Merge pull request #19617 from Snuffleupagus/MathClamp
Introduce a helper function for clamping a value to a range
2025-03-06 15:48:14 +01:00
Jonas Jenwald
d646b2b270
Merge pull request #19610 from Snuffleupagus/rm-opacityToHex
[Editor] Remove the unused `opacityToHex` helper function (PR 19093 follow-up)
2025-03-06 15:42:38 +01:00
Calixte Denizet
f3454a738d [Editor] In edit mode, a non-editable stamp must be visible after the page is rendered 2025-03-06 15:37:27 +01:00
Jonas Jenwald
08fa4eba20 Fix the #savedHasOwnCanvas handling in the StampAnnotation class
This may not be possible to trigger in practice, however it seems that if `StampAnnotation.prototype.mustBeViewedWhenEditing` is called back-to-back with `isEditing === true` set then the second invocation could overwrite the `#savedHasOwnCanvas`-field and thus lose its initial state.
2025-03-06 15:17:52 +01:00
Jonas Jenwald
07bbbf75a5 Introduce a helper function for clamping a value to a range
Currently we have a number of spots in the code-base where we need to clamp a value to a [min, max] range. This is either implemented using `Math.min`/`Math.max` or with a local helper function, which leads to some unnecessary duplication.

Hence this patch adds and re-uses a single helper function for this, which we'll hopefully be able to remove in the future once https://github.com/tc39/proposal-math-clamp/ becomes generally available.
2025-03-06 14:05:26 +01:00
Jonas Jenwald
4ec5f08803 [Editor] Remove the unused opacityToHex helper function (PR 19093 follow-up)
The only call-site was removed in PR 19093, hence this is now dead code.
2025-03-05 23:10:56 +01:00
Jonas Jenwald
dea35aed4a
Merge pull request #19608 from Snuffleupagus/l10n-update
Update l10n files
2025-03-05 15:25:55 +01:00
Jonas Jenwald
c2fa55420c
Merge pull request #19607 from Snuffleupagus/ColorSpaceUtils-rm-singletons
Simplify the `ColorSpaceUtils.singletons` handling (PR 19564 follow-up)
2025-03-05 15:25:19 +01:00
Jonas Jenwald
de47041e77 Update l10n files
Given the recently added l10n-strings, let's do another update before the upcoming release to avoid needlessly "broken" translations.
2025-03-05 15:08:39 +01:00
Jonas Jenwald
d8d7235876 Simplify the ColorSpaceUtils.singletons handling (PR 19564 follow-up)
With the changes in PR 19564 the actual `ColorSpace`-classes where separated from the various static "helper" methods.
Hence it seems that we can now simplify/shorten this old code to instead cache the "standard" ColorSpaces directly on the `ColorSpaceUtils`-class.
2025-03-05 15:02:05 +01:00
Jonas Jenwald
fedfdf9d10
Merge pull request #19599 from Snuffleupagus/ColorSpace-rm-parseAsync
Remove `ColorSpaceUtils.parseAsync` and simplify the ColorSpace "API-surface"
2025-03-05 13:11:45 +01:00
Jonas Jenwald
fbf1f2ba15 Remove ColorSpaceUtils.parseAsync and simplify the ColorSpace "API-surface"
This patch reduces the number of `ColorSpaceUtils` static-methods, and in particular the `parseAsync` method is removed and it's now instead possible to have `parse` optionally return a Promise.
This thus removes the need to manually check if a `ColorSpace`-instance is cached, note the changes in the `src/core/evaluator.js` file.
2025-03-05 12:43:58 +01:00
calixteman
19bc5dcb0e
Merge pull request #19564 from calixteman/qcms_icc
[api-minor] Support using ICC profiles in using qcms (bug 860023)
2025-03-05 10:34:23 +01:00
Calixte Denizet
971be48b60 Support using ICC profiles in using qcms (bug 860023) 2025-03-05 10:29:59 +01:00
calixteman
4693b7ad2f
Merge pull request #19585 from calixteman/update_openjpeg2
Use the latest emsdk version to compile openjpeg decoder
2025-03-05 10:07:11 +01:00
Calixte Denizet
559ff28db3 Use the latest emsdk version to compile openjpeg decoder 2025-03-04 18:41:20 +01:00
Jonas Jenwald
ab8ebc9b77
Merge pull request #19604 from Snuffleupagus/bug-1943094
[api-minor] Limit the maximum canvas width/height, in addition to its total area (bug 1943094)
2025-03-04 17:53:31 +01:00
Jonas Jenwald
9f9de4508c [api-minor] Limit the maximum canvas width/height, in addition to its total area (bug 1943094)
Browsers not only limit the maximum total canvas area, but additionally also limit their maximum width/height which affects PDF documents with e.g. very tall and narrow pages.
To address this we add a new `maxCanvasDim` viewer-option, which in Firefox will use a browser preference, such that both the total canvas area and the width/height will affect when CSS-zooming is used.
2025-03-04 15:23:45 +01:00
Jonas Jenwald
5e6cfbe163
Merge pull request #19598 from Snuffleupagus/ColorSpace#subParse
Also cache "sub" ColorSpaces globally (PR 19583 follow-up)
2025-03-03 17:30:14 +01:00
Jonas Jenwald
ba640e5cdc Shorten various static ColorSpace method signatures
By passing around common parameters, i.e. everything that's not the ColorSpace-data, in an object we can shorten this code a little bit.
2025-03-03 11:08:05 +01:00
Jonas Jenwald
33dfc4dd5f Also cache "sub" ColorSpaces globally (PR 19583 follow-up)
Some ColorSpaces can reference other ColorSpaces, and since it's fairly common for many pages to use the same ColorSpaces (see e.g. `issue17061.pdf`) this can help reduce a lot of unnecessary re-parsing especially for e.g. `ICCBased` ColorSpaces.
2025-03-03 10:07:41 +01:00
Tim van der Meij
0c1ac54f48
Merge pull request #19597 from Snuffleupagus/then-arrow-functions
Use arrow functions with some `Promise.then` calls
2025-03-02 22:14:53 +01:00
Jonas Jenwald
7b5cd9cddd Use arrow functions with some Promise.then calls
A lot of this is fairly old code, which we can shorten slightly by using arrow functions instead of "regular" functions.
2025-03-02 19:57:38 +01:00
Jonas Jenwald
3cd1b10433
Merge pull request #19576 from nicolo-ribaudo/fix-linkannotation
Fix autolinking with highlighted search results
2025-03-02 19:51:15 +01:00
Nicolò Ribaudo
b47d81536c
Fix autolinking with highlighted search results
The current logic assumes that all spans in the text layer contain
only one text node, and thus that the position information
returned by `highlighter._convertMatches` can be directly used
on the element's only child.

This is not true in case of highlighted search results: they will be
injected in the DOM as `<span>` elements, causing the `<span>`s
in the text layer to have more than one child.

This patch fixes the problem by properly converting the (span, offset)
pair in a (textNode, offset) pair that points to the right text node.
2025-03-02 17:09:58 +01:00
Tim van der Meij
146bc58f32
Merge pull request #19596 from Snuffleupagus/Array-methods-arrow-functions
Use arrow function with various Array methods
2025-03-02 16:09:09 +01:00
Tim van der Meij
be6ef64a2c
Merge pull request #19577 from Snuffleupagus/isValidExplicitDest-reuse
Re-use the `isValidExplicitDest` helper function in the worker/viewer
2025-03-02 15:50:54 +01:00
Tim van der Meij
e8bbb60869
Merge pull request #19582 from dhdaines/consume_response
Be sure to consume responses in case of error in downloading test files (issue 19580)
2025-03-02 15:48:26 +01:00
Tim van der Meij
1aee9d5c61
Merge pull request #19581 from Snuffleupagus/issue-19579
Write string-data into the `.error`-file created for broken test-manifest links (issue 19579)
2025-03-02 15:39:11 +01:00
Tim van der Meij
dfa6370161
Merge pull request #19589 from Snuffleupagus/RunLengthStream-fill
Replace a loop with `TypedArray.prototype.fill()` in the `RunLengthStream` class
2025-03-02 15:36:49 +01:00
Tim van der Meij
27c82ab8cc
Merge pull request #19568 from Snuffleupagus/FakeMLManager-no-bundle
Don't bundle the `FakeMLManager` class in regular builds
2025-03-02 15:30:03 +01:00
Tim van der Meij
93759f34f4
Merge pull request #19571 from yjoer/master
Add the missing return type for `PDFWorker.fromPort()`
2025-03-02 15:27:10 +01:00
Jonas Jenwald
2e62f426fe Use arrow function with various Array methods
A lot of this is quite old code, which we can shorten slightly by using arrow functions instead of "regular" functions.
2025-03-02 15:19:04 +01:00
Jonas Jenwald
a3d259a681 Replace a loop with TypedArray.prototype.fill() in the RunLengthStream class
This is a tiny bit shorter, which cannot hurt.
2025-03-02 13:10:34 +01:00
Jonas Jenwald
7081a1f112
Merge pull request #19578 from nicolo-ribaudo/flaky-test
Try reducing flakiness of CSS-only zoom test
2025-03-02 10:28:11 +01:00
Nicolò Ribaudo
de9b041b5e
Fix flakiness of CSS-only zoom test
Update the test to wait for the `pagerendered`` event of a specific
page (1), so that the `pagerendered`` event of other pages from a
previously running render doesn't resolve the `waitForPageRendered`
promise.
2025-03-01 19:10:28 +01:00
Jonas Jenwald
89ccc3a526
Merge pull request #19583 from Snuffleupagus/GlobalColorSpaceCache
Add a `GlobalColorSpaceCache` to reduce unnecessary re-parsing
2025-03-01 14:24:49 +01:00
Jonas Jenwald
4be79748c9 Add a GlobalColorSpaceCache to reduce unnecessary re-parsing
This complements the existing `LocalColorSpaceCache`, which is unique to each `getOperatorList`-invocation since it also caches by `Name`, which should help reduce unnecessary re-parsing especially for e.g. `ICCBased` ColorSpaces once we properly support those.
2025-03-01 14:21:05 +01:00
David Huggins-Daines
962f972aea Be sure to consume responses in case of error in downloading test files (issue 19580)
As mentioned in https://nodejs.org/docs/latest-v20.x/api/http.html#httpgeturl-options-callback
if a request results in an error, you still need to consume the data, or call
`response.resume()`, or your code will hang waiting for the request to close.
2025-03-01 07:53:56 -05:00
Jonas Jenwald
165d90fe26 Re-use the isValidExplicitDest helper function in the worker/viewer
Currently we re-implement the same helper function twice, which in hindsight seems like the wrong decision since that way it's quite easy for the implementations to accidentally diverge.
The reason for doing it this way was because the code in the worker-thread is able to check for `Ref`- and `Name`-instances directly, which obviously isn't possible in the viewer but can be solved by passing validation-functions to the helper.
2025-03-01 12:08:56 +01:00
calixteman
5f4d923618
Merge pull request #19584 from calixteman/update_openjpeg1
Fix the build of the openjpeg decoder in order to use an optimized build of the openjpeg library (bug 1951128)
2025-02-28 22:55:46 +01:00
calixteman
84a5e90a43
Merge pull request #19544 from hecerinc/hecerinc/viewerCssFF
Reenable viewerCssTheme option for Firefox
2025-02-28 21:27:20 +01:00
Calixte Denizet
c565810a3d Fix the build of the openjpeg decoder in order to use an optimized build of the openjpeg library (bug 1951128) 2025-02-28 21:25:51 +01:00
Jonas Jenwald
d1b2476c14 Write string-data into the .error-file created for broken test-manifest links (issue 19579)
This appears to have broken in PR 17431, since prior to that the `downloadFile` function returned a string (via a callback) on failure and now we're instead rejecting with an Error.
2025-02-28 17:05:15 +01:00
Jonas Jenwald
6e1cfa20d1
Merge pull request #19574 from Snuffleupagus/autolinking-xfa-disable
Don't attempt to use auto-linking in XFA documents (PR 19110 follow-up)
2025-02-28 16:30:45 +01:00
Jonas Jenwald
7273db2e35 Don't attempt to use auto-linking in XFA documents (PR 19110 follow-up)
Auto-linking requires a normal textLayer which XFA documents obviously don't have, and currently XFA documents cause "pointless" error messages to be logged in the console.
2025-02-28 14:47:48 +01:00
Yeoh Joer
2221ccf160 Add the missing return type for PDFWorker.fromPort() 2025-02-28 02:49:44 +08:00
Jonas Jenwald
b5ac96da19 Don't bundle the FakeMLManager class in regular builds
Given that this functionality is only used in the development viewer and in TESTING builds, there's no reason to include this in the regular builds.
2025-02-27 12:59:58 +01:00
Jonas Jenwald
50c573d16d
Merge pull request #19563 from Snuffleupagus/loadType3Data-once
Invoke `TranslatedFont.prototype.loadType3Data` only *once* per font
2025-02-27 11:20:26 +01:00
Jonas Jenwald
56a683bc3b
Merge pull request #19562 from Snuffleupagus/issue-19550
Extend `getGlyphMapForStandardFonts` with some Cyrillic entries (issue 19550)
2025-02-27 11:17:42 +01:00
Jonas Jenwald
4a48a7ec0f
Merge pull request #19557 from Snuffleupagus/PDFViewer-cleanupTimeouts
Abort various timeouts, in `PDFViewer`, when closing the document (PR 19128 follow-up)
2025-02-27 11:17:02 +01:00
Jonas Jenwald
21829f4157
Merge pull request #19556 from Snuffleupagus/_initializeViewerComponents-more-local-vars
Use more local variables in `PDFViewerApplication._initializeViewerComponents`
2025-02-27 11:16:04 +01:00
Jonas Jenwald
4e76a78341
Merge pull request #19549 from Snuffleupagus/fewer-EXPORT_DATA_PROPERTIES-2
[api-minor] Stop exporting, by default, a few additional Font properties (PR 11777 follow-up)
2025-02-27 11:15:27 +01:00
calixteman
a4fea2dafd
Merge pull request #19565 from calixteman/signature_fix_telemetry
[Editor] Fix the telemetry for the signature stuff
2025-02-27 10:10:13 +01:00
Calixte Denizet
bbf9bfc3c2 [Editor] Fix the telemetry for the signature stuff 2025-02-27 09:34:31 +01:00
Jonas Jenwald
bdfa96878d Invoke TranslatedFont.prototype.loadType3Data only *once* per font
Currently we're first loading the font, and then for Type3 fonts we're invoking `loadType3Data` every time that the font is encountered.
That seems completely unnecessary, and it's probably connected to the age of this code, since the `loadType3Data`-method will only run once anyway (note the caching).
2025-02-26 15:17:11 +01:00
Jonas Jenwald
da17c7b82f
Merge pull request #19548 from Snuffleupagus/Font-exportData-disableFontFace-fontExtraProperties
Send `disableFontFace` and `fontExtraProperties` as part of the exported font-data
2025-02-26 11:25:29 +01:00
Jonas Jenwald
59cb9a064e Extend getGlyphMapForStandardFonts with some Cyrillic entries (issue 19550) 2025-02-26 10:16:06 +01:00
Jonas Jenwald
0e0872288e
Merge pull request #19558 from Snuffleupagus/RenderingCancelledException-null-#renderError
Reset `#renderError` on `RenderingCancelledException` (PR 19128 follow-up)
2025-02-26 09:43:39 +01:00
Hector Rincon
4069c3a422 Reenable viewerCssTheme option for Firefox
The `viewerCssTheme` was removed in #17222  and subsequently reenabled in #17293,
but only for Chromium and generic builds. This commit reenables the
function using the new method introduced in #17293.
2025-02-25 22:00:32 -08:00
Jonas Jenwald
d50d3b0b0e Reset #renderError on RenderingCancelledException (PR 19128 follow-up)
This restores the behaviour that existed prior to PR 19128, see e.g. 8727a04ae5/web/pdf_page_view.js (L908-L911), since `RenderingCancelledException` should still overwrite any previously seen Error.
2025-02-25 16:46:01 +01:00
Jonas Jenwald
71ad9fd0b7 Abort various timeouts, in PDFViewer, when closing the document (PR 19128 follow-up)
Looking at recent integration-test logs there's occasionally warnings about trying to invoke `PDFViewer.prototype.update` too late, which probably started with PR 19128 (see log excerpt below).
Given that we already had another timeout before that PR the problem was pre-existing, but it seems to trigger more easily now.

```
JavaScript warning: http://127.0.0.1:42333/build/generic/web/viewer.mjs, line 12668: Script terminated by timeout at:
update@http://127.0.0.1:42333/build/generic/web/viewer.mjs:12668:9
@http://127.0.0.1:42333/build/generic/web/viewer.mjs:12373:12
setTimeout handler*_scrollUpdate@http://127.0.0.1:42333/build/generic/web/viewer.mjs:12371:29
viewAreaElementScrolled@http://127.0.0.1:42333/build/generic/web/viewer.mjs:154:15
FrameRequestCallback*debounceScroll@http://127.0.0.1:42333/build/generic/web/viewer.mjs:140:18
EventListener.handleEvent*watchScroll@http://127.0.0.1:42333/build/generic/web/viewer.mjs:165:19
PDFViewer@http://127.0.0.1:42333/build/generic/web/viewer.mjs:11777:19
_initializeViewerComponents@http://127.0.0.1:42333/build/generic/web/viewer.mjs:15081:23
initialize@http://127.0.0.1:42333/build/generic/web/viewer.mjs:14931:16
async*run@http://127.0.0.1:42333/build/generic/web/viewer.mjs:15227:16
webViewerLoad@http://127.0.0.1:42333/build/generic/web/viewer.mjs:17078:24
@http://127.0.0.1:42333/build/generic/web/viewer.mjs:17082:3
```
2025-02-25 13:11:51 +01:00
Jonas Jenwald
cec32c6177 Use more local variables in PDFViewerApplication._initializeViewerComponents
This, ever so slightly, shortens the code which can never hurt.
2025-02-25 12:33:13 +01:00
Jonas Jenwald
aa70b28365
Merge pull request #19555 from rossj/master
Pad rev 4 encryption keys to be >= 16 bytes (issue 19484)
2025-02-25 10:03:56 +01:00
calixteman
e999f77959
Merge pull request #19554 from calixteman/signature_telemetry
[Editor] Add some telemetry for the signature editor (bug 1945827)
2025-02-24 22:53:49 +01:00
Ross Johnson
4f25d7f6cd Fix decryption of R=4, V=4 files with < 16-byte keys by 0-padding - undocumented but matches Acrobat behavior (issue #19484) 2025-02-24 15:36:37 -06:00
Calixte Denizet
9e672ff05e [Editor] Add some telemetry for the signature editor (bug 1945827) 2025-02-24 21:10:04 +01:00
calixteman
fef706233d
Merge pull request #19551 from Snuffleupagus/loadSystemFont-fix-assert
Fix the `assert` in `FontLoader.prototype.loadSystemFont`
2025-02-24 16:49:03 +01:00
calixteman
12d2f1b04a
Merge pull request #19552 from calixteman/add_generated_header_openjpeg
Add a comment 'THIS FILE IS GENERATED - DO NOT EDIT' in openjpeg files generated with emscripten
2025-02-24 16:17:48 +01:00
Jonas Jenwald
2966171a2b Fix the assert in FontLoader.prototype.loadSystemFont
Currently this `assert` isn't actually doing what it's supposed to, since the `FontLoader`-class doesn't have a `disableFontFace`-field.
The `FontFaceObject`-class on the other hand has such a field, hence we update the method-signature to be able to check the intended thing.
2025-02-24 16:09:07 +01:00
calixteman
f9aa8e1d15
Merge pull request #19539 from calixteman/paste_signature
[Editor] Shift the signature editor when pasted
2025-02-24 16:07:50 +01:00
Calixte Denizet
c099245daa Add a comment 'THIS FILE IS GENERATED - DO NOT EDIT' in openjpeg files generated with emscripten 2025-02-24 16:05:19 +01:00
Jonas Jenwald
132ccf04db [api-minor] Stop exporting, by default, a few additional Font properties (PR 11777 follow-up)
None of the "composite", "subtype", or "type" properties are normally used on the main-thread and/or in the API, hence there's no need to include them in the exported font-data by default.
Given that these properties may still be useful when debugging, and that `debugger.mjs` actually relies on the "type" property, they will instead only be sent to the main-thread when the `fontExtraProperties` API-option is used.
2025-02-24 12:27:51 +01:00
Jonas Jenwald
c4784832ac
Merge pull request #19545 from hecerinc/hecerinc/issueLinkFix
Fix the link for issue5939.pdf
2025-02-24 10:08:15 +01:00
Jonas Jenwald
d428db63c3 Improve the "FontFallback" handling on the worker-thread
Remove the `Catalog.prototype.fontFallback` method, and move its code into `PDFDocument.prototype.fontFallback` instead, to reduce the indirection a little bit.
Pass the `evaluatorOptions` directly to the `TranslatedFont.prototype.fallback` method, since nothing else in the `TranslatedFont`-class needs it now.
2025-02-24 09:34:58 +01:00
Jonas Jenwald
839e23f5c2 Send disableFontFace and fontExtraProperties as part of the exported font-data
These options are needed in the `FontFaceObject` class, and indirectly in `FontLoader` as well, which means that we currently need to pass them around manually in the API.
Given that the options are (obviously) available on the worker-thread, it's very easy to just provide them when creating `Font`-instances and then send them as part of the exported font-data. This way we're able to simplify the code (primarily on the main-thread), and note that `Font`-instances even had a `disableFontFace`-field already (but it wasn't properly initialized).
2025-02-24 09:34:48 +01:00
Hector Rincon
c19e70f6d9 Fix the link for issue5939.pdf
Web archive no longer has the revision for the saved PDF referenced in
that test case, so this updates that link to a more recent revision to
enable the tests to run on a clean clone.
2025-02-23 15:15:11 -08:00
Jonas Jenwald
ed64faa88c
Merge pull request #19543 from timvandermeij/integration-tests-helpers
Refactor the editor integration test helper functions
2025-02-23 22:56:38 +01:00
Calixte Denizet
cc3d6ab539 [Editor] Shift the signature editor when pasted
The idea is to avoid to have the pasted editor hidding the copied one:
the user could think that nothing happened.
So the top-left corner of the pasted one is moved to the bottom-right corner of the copied one.
2025-02-23 21:35:01 +01:00
Tim van der Meij
acc5a2153a
Introduce a generic clearEditors helper function
This replaces the various copies of this logic with a single helper that
we template for each editor type, similar to what we already do for the
`switchToEditor` helper.
2025-02-23 20:49:04 +01:00
Tim van der Meij
f155b69c07
Introduce a generic selectEditors helper function
This replaces the various copies of this logic with a single helper that
we template for each editor type, similar to what we already do for the
`switchToEditor` helper.
2025-02-23 20:48:24 +01:00
Tim van der Meij
060ef0e15e
Deduplicate the waitForPointerUp helper function in the highlight editor integration tests
The helper function is available in `test_utils.mjs` since commit
3fe55ba, so we can remove the local copy by importing it.
2025-02-23 20:48:17 +01:00
Tim van der Meij
07629e105c
Deduplicate the getXY helper function in the highlight editor integration tests
The helper function is available in `test_utils.mjs` since commit
301f1bb, so by exporting it there it can be reused.
2025-02-23 20:48:17 +01:00
Tim van der Meij
4f3dbcf24d
Remove the waitForEditorMovedInDOM helper function export
It's no longer used outside of `test_utils.mjs` since commit 301f1bb.
2025-02-23 20:48:17 +01:00
Tim van der Meij
fcf94e8c38
Merge pull request #19542 from timvandermeij/updates
Update dependencies and translations to the most recent versions
2025-02-23 20:47:10 +01:00
Tim van der Meij
33c53dfaa9
Update translations to the most recent versions 2025-02-23 19:31:20 +01:00
Tim van der Meij
cd6c5b009f
Upgrade globals to version 16.0.0
This is a major version bump, but the changelog at
https://github.com/sindresorhus/globals/releases/tag/v16.0.0
doesn't indicate any breaking changes that should impact us.
2025-02-23 19:31:20 +01:00
Tim van der Meij
8b0f1641ee
Upgrade eslint-plugin-unicorn to version 57.0.0
This is a major version bump, but the changelog at
https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v57.0.0
doesn't indicate any breaking changes that should impact us.

However, we do replace the deprecated `no-instanceof-array` rule with
the new `no-instanceof-builtins` rule. Note that the changelog calls
this rule `no-instanceof-builtin-object`, but it got renamed in
https://github.com/sindresorhus/eslint-plugin-unicorn/pull/2537.
2025-02-23 19:28:28 +01:00
Tim van der Meij
08ba910ef0
Update dependencies to the most recent versions 2025-02-23 18:21:50 +01:00
calixteman
878d206c79
Merge pull request #19538 from calixteman/move_draw
[Editor] Fix the position in the page of a drawing after it has been moved with the keyboard
2025-02-22 15:55:26 +01:00
Calixte Denizet
301f1bbf2b [Editor] Fix the position in the page of a drawing after it has been moved with the keyboard
When a drawing was moved with arrow keys and then printed or saved, the drawing wasn't moved finally.
So the fix is just about calling onTranslated once the translation is done.
2025-02-22 15:19:14 +01:00
Jonas Jenwald
a648e1e769
Merge pull request #19537 from Snuffleupagus/api-useWasm
[api-minor] Re-factor how the `useWorkerFetch` option is used internally
2025-02-22 14:16:31 +01:00
Tim van der Meij
23d7398371
Merge pull request #19531 from stof/patch-1
Disable the loading of node types in the type tests
2025-02-22 13:47:44 +01:00
Jonas Jenwald
637e95985a Simplify JpxImage.setOptions a little bit
After PR 19392 we're only invoking this method *once* per document, hence the early-return branch shouldn't be necessary any more.
2025-02-22 13:38:10 +01:00
Jonas Jenwald
641e2f506e [api-minor] Re-factor how the useWorkerFetch option is used internally
With the recently added OpenJPEG no-wasm fallback we need to send the `wasmUrl` option to the worker-thread *regardless* of the value of the `useWorkerFetch` option, since the fallback won't work if we don't have a URL to `import` it from.
For consistency the code is re-factored to always send the factory-urls to the worker-thread, and simply check the `useWorkerFetch` option there instead.

Also, as a follow-up to PR 19525, introduce a new `useWasm` option that can be used in e.g. browser-tests to forcibly disable WebAssembly usage.
2025-02-22 09:56:53 +01:00
Jonas Jenwald
6d3bb47655
Merge pull request #19525 from calixteman/bug1935076_part2
Provide a js fallback when the wasm version of openjpeg is failing to load (bug 1935076)
2025-02-22 09:34:40 +01:00
calixteman
c2e616dfc9
Merge pull request #19534 from calixteman/signature_description_test
[Editor] Add a test for copy & paste a signature editor
2025-02-21 23:01:31 +01:00
Jonas Jenwald
553ec7babc
Merge pull request #19128 from nicolo-ribaudo/draw-page-portion
[api-minor] Render high-res partial page views when falling back to CSS zoom (bug 1492303)
2025-02-21 22:24:41 +01:00
calixteman
b4e26dc425
Merge pull request #19533 from Xiphoseer/type3-text-rise
Consider textRise when showing Type3 font glyphs (issue 19532)
2025-02-21 22:10:58 +01:00
Calixte Denizet
814d2bbe6d [Editor] Add a test for copy & paste a signature editor
This patch fixes an issue when pasting: an exception was thrown when pasting.
And while writing the test and comparing the paths in the svg, I found a difference
which is fixed thanks to call to the right constructor (to take into account the inheritance)
in inkdraw.js
2025-02-21 21:43:19 +01:00
Xiphoseer
24aa39eb14 Consider textRise when showing type3 font glyphs
Add test case for issue 19532
2025-02-21 21:31:04 +01:00
Calixte Denizet
36e4f5c222 Provide a js fallback when the wasm version of openjpeg is failing to load (bug 1935076) 2025-02-21 19:03:47 +01:00
Nicolò Ribaudo
dc5d6aad8a
Avoid degrading scroll performance due to the detail view
When scrolling quickly, the constant re-rendering of the detail view
significantly affects rendering performance, causing Firefox to
not render even the _background canvas_, which is just a static canvas
not being re-drawn by JavaScript.

This commit changes the viewer to only render the detail view while
scrolling if its rendering hasn't just been cancelled. This means that:
- when the user is scrolling slowly, we have enough time to render the
  detail view before that we need to change its area, so the user always
  sees the full screen as high resolution.
- when the user is scrolling quickly, as soon as we have to cancel a
  rendering we just give up, and the user will see the lower resolution
  canvas. When then the user stops scrolling, we render the detail view
  for the new visible area.
2025-02-21 10:00:57 -08:00
Nicolò Ribaudo
458b2ee402
[api-minor] Render high-res partial page views when falling back to CSS zoom (bug 1492303)
When rendering big PDF pages at high zoom levels, we currently fall back
to CSS zoom to avoid rendering canvases with too many pixels. This
causes zoomed in PDF to look blurry, and the text to be potentially
unreadable.

This commit adds support for rendering _part_ of a page (called
`PDFPageDetailView` in the code), so that we can render portion of a
page in a smaller canvas without hiting the maximun canvas size limit.

Specifically, we render an area of that page that is slightly larger
than the area that is visible on the screen (100% larger in each
direction, unless we have to limit it due to the maximum canvas size).
As the user scrolls around the page, we re-render a new area centered
around what is currently visible.
2025-02-21 10:00:55 -08:00
Nicolò Ribaudo
06257f782e
Extract PDFPageViewBase class out of PDFPageView
This base class contains the generic logic for:
- Creating a canvas and showing when appropriate
- Rendering in the canvas
- Keeping track of the rendering state
2025-02-21 09:48:31 -08:00
Christophe Coevoet
93a5fa5b88
Disable the loading of node types in the type tests
Those type tests are performing type checking on a project using DOM APIs, intended to reflect the usage in a non-node project.
Not loading the node types in that project ensures that the library type declarations don't force a dependency on the node types.
2025-02-21 14:10:35 +01:00
Jonas Jenwald
e3ea92603d
Merge pull request #19493 from Snuffleupagus/URL-parse
Introduce some `URL.parse()` usage in the code-base
2025-02-21 10:40:32 +01:00
calixteman
34ef74cf0e
Merge pull request #19518 from Snuffleupagus/JpegStream-EXIF-replace
Move the EXIF-block replacement into `JpegStream` (PR 19356 follow-up)
2025-02-20 23:11:43 +01:00
calixteman
c64d3d7cc0
Merge pull request #19524 from calixteman/fix_doorhanger_color
[Editor] Fix the color of the labels in the editing doorhangers
2025-02-20 22:45:51 +01:00
Calixte Denizet
cd94c19f9a [Editor] Fix the color of the labels in the editing doorhangers
The fix in #19522 wasn't correct.
This one should be better.
2025-02-20 19:31:57 +01:00
calixteman
6713c239e3
Merge pull request #19523 from calixteman/signature_menu_outline
[Editor] Fix the outline of a focused button in the doorhanger while navigating with the keyboard
2025-02-20 19:23:54 +01:00
Calixte Denizet
8be6d744cd [Editor] Fix the outline of a focused button in the doorhanger while navigating with the keyboard
It's a follow-up of #19507.
Without this patch the outline is partially hidden.
2025-02-20 18:33:19 +01:00
calixteman
b1d579d4ab
Merge pull request #19522 from calixteman/bug1949417
[Editor] Make the editing toolbar buttons text visible when hovered in HCM with Desert theme (bug 1949417)
2025-02-20 15:45:20 +01:00
Calixte Denizet
b7e65b854b [Editor] Make the editing toolbar buttons text visible when hovered in HCM with Desert theme (bug 1949417) 2025-02-20 15:01:52 +01:00
calixteman
c52b5bac6c
Merge pull request #19516 from calixteman/bug1949201
[Editor] Remove the error panel when the user click on an other tab (bug 1949201)
2025-02-20 14:07:07 +01:00
Calixte Denizet
12ba81718c [Editor] Remove the error panel when the user click on an other tab (bug 1949201) 2025-02-20 14:03:59 +01:00
Jonas Jenwald
d5ce35f744 Move the EXIF-block replacement into JpegStream (PR 19356 follow-up)
Currently we modify the EXIF-block in place, which may end up "breaking" the JPEG-data of the original PDF document since e.g. saving it from the viewer no longer contains the real EXIF-block.
Hence the EXIF-block replacement is moved into the `JpegStream` class, such that we can copy the data before doing the replacement.
2025-02-20 12:41:39 +01:00
Jonas Jenwald
d10cea5dd0
Merge pull request #19470 from ryzokuken/fix-autolinking-edge-cases
Fix autolinking errors
2025-02-19 14:43:14 +01:00
Ujjwal Sharma
38ab358fb1 Fix autolinking error due to redundant annotations on zooming
Fix an issue where redundant links were being added to the annotation
layer on zooming on the page with the links.
2025-02-19 13:18:31 +01:00
Ujjwal Sharma
70e2873430 Fix autolinking errors due to regex and email validation
Fix some edge cases in the autolinking logic with the regex as well as
validating email domains and add unit tests for them.

Fixes: https://github.com/mozilla/pdf.js/issues/19462
2025-02-19 13:18:31 +01:00
Jonas Jenwald
63b397f49d
Merge pull request #19513 from Snuffleupagus/issue-19510
Don't cache free/missing XRef entries (issue 19510)
2025-02-18 21:23:01 +01:00
Jonas Jenwald
db7cf40a30 Don't cache free/missing XRef entries (issue 19510)
During the XRef stream parsing we're attempting to lookup an entry that hasn't yet been found, since parsing is currently running, and given that we'd also cache free/missing XRef entries we'd then return an incorrect value during normal PDF parsing.

The simplest solution here is to just not cache free/missing XRef entries, since a properly generated PDF document shouldn't be trying to access objects it doesn't contain.
Furthermore, the amount of "extra" parsing now needed for such XRef entries shouldn't be significant enough to be an issue.
2025-02-18 18:04:00 +01:00
calixteman
5bc3cb839b
Merge pull request #19512 from calixteman/signature_test2
[Editor] Add two integration tests for the signature feature
2025-02-18 18:03:00 +01:00
Jonas Jenwald
426c730e11
Merge pull request #19504 from Snuffleupagus/eslint-fix-arrow-body-style
Fix all outstanding ESLint `arrow-body-style` warnings
2025-02-18 17:52:36 +01:00
Calixte Denizet
3fe55baa5e [Editor] Add two integration tests for the signature feature
- one test about adding a drawn signature
- an other one about adding a signature extracted from an image.
2025-02-18 15:24:03 +01:00
calixteman
a857ca3261
Merge pull request #19511 from calixteman/editor_dnd_image
[Editor] Wait for switching to stamp mode before adding a new editor when dnd'ing an image
2025-02-18 13:16:30 +01:00
Calixte Denizet
9984afe6a6 [Editor] Wait for switching to stamp mode before adding a new editor when dnd'ing an image
When dnd'ing an image with the FreeText mode enabled, the image wasn't correctly added.
2025-02-18 10:53:34 +01:00
calixteman
203452c170
Merge pull request #19508 from calixteman/issue19505
[JS] Skip throwing actions
2025-02-17 22:57:14 +01:00
calixteman
d0107566ba
Merge pull request #19506 from calixteman/bug1948741
[Editor] Scale the signature editor when it's too large (bug 1948741)
2025-02-17 21:59:46 +01:00
Calixte Denizet
8f9232202f [JS] Skip throwing actions
It fixes #19505.

We were invaliding throwing actions (in setting event.rc to false) and all the event process was stopped.
Now we're just dumping the exception in the console: the action is skipped and event.rc is not set
else the input fields aren't updated wit KeyStroke actions.
2025-02-17 21:58:20 +01:00
calixteman
a0bdd67bc3
Merge pull request #19507 from calixteman/bug1948771
[Editor] Add a scrollbar to the signature doorhanger when it's overflowing (bug 1948771)
2025-02-17 21:31:01 +01:00
Calixte Denizet
cde7d83319 [Editor] Add a scrollbar to the signature doorhanger when it's overflowing (bug 1948771) 2025-02-17 21:09:56 +01:00
Calixte Denizet
3fc6b1321f [Editor] Scale the signature editor when it's too large (bug 1948741) 2025-02-17 20:20:26 +01:00
Jonas Jenwald
36979e9eb2 Fix all outstanding ESLint arrow-body-style warnings
Currently this rule is disabled in a number of spots across the code-base, and unless absolutely necessary we probably shouldn't disable linting, so let's just update the code to fix all the outstanding cases.
2025-02-17 15:45:44 +01:00
Jonas Jenwald
affce70a09
Merge pull request #19503 from Snuffleupagus/web-rm-some-eslint-disable
Remove a few `eslint-disable` statements in the `web/` folder
2025-02-17 15:21:57 +01:00
calixteman
2df0f925b9
Merge pull request #19500 from calixteman/test_signature1
[Editor] Add two integration tests for the signature UI
2025-02-17 14:48:07 +01:00
Calixte Denizet
b8993cfcc8 [Editor] Add two integration tests for the signature UI 2025-02-17 13:58:54 +01:00
Jonas Jenwald
a2d15ceb84 Remove a few eslint-disable statements in the web/ folder
These cases could be easily re-written to avoid having to disable ESLint rules.
2025-02-17 13:40:09 +01:00
Tim van der Meij
33c97570f5
Merge pull request #19499 from Snuffleupagus/useWorkerFetch-ensure-boolean
Ensure that the `useWorkerFetch` fallback value is always a boolean
2025-02-16 14:50:29 +01:00
Jonas Jenwald
06e4580f8b Ensure that the useWorkerFetch fallback value is always a boolean
If either of the factory-urls are missing or invalid, the fallback value would currently become `useWorkerFetch === null`.
While that is obviously a falsy value, which means that the code still works as intended, we should ensure that this is consistent.
2025-02-16 14:04:30 +01:00
Jonas Jenwald
c2e33307b1 Introduce some URL.parse() usage in the code-base
This (fairly new) static method allows parsing URLs without having to wrap `new URL(...)` calls within `try...catch` blocks, thus simplifying the code; see https://developer.mozilla.org/en-US/docs/Web/API/URL/parse_static

For older browsers/environments the functionality will be polyfilled, but *only* in `legacy` builds, via `core-js`; see https://github.com/zloirock/core-js?tab=readme-ov-file#url-and-urlsearchparams

*Please note:* This is currently limited to the `src/`- and `web/`-folders, such that we don't break development/testing, since the functionality is not available in all Node.js versions that we support; see https://developer.mozilla.org/en-US/docs/Web/API/URL/parse_static#browser_compatibility
2025-02-15 19:10:36 +01:00
Jonas Jenwald
3f15e0c469
Merge pull request #19495 from Snuffleupagus/issue-19494
Check more of the stream when looking for commands after inline image (issue 19494)
2025-02-15 17:05:59 +01:00
Jonas Jenwald
8dec353c7a
Merge pull request #19496 from Snuffleupagus/shorter-#buildObjectKey
Shorten the `CipherTransformFactory.prototype.#buildObjectKey` method
2025-02-15 17:03:35 +01:00
Jonas Jenwald
65df1d336f Check more of the stream when looking for commands after inline image (issue 19494)
Currently we only check `followingBytes`, which turns out to be too short to find e.g. valid transform (cm) commands with decimal arguments.
2025-02-15 15:14:47 +01:00
Jonas Jenwald
a722ca4de5 Shorten the CipherTransformFactory.prototype.#buildObjectKey method
- Use `TypedArray.prototype.set()` rather than a manual loop when building the `key`.

 - Use an existing local variable to avoid re-computing the length of the `encryptionKey`.
2025-02-15 13:00:42 +01:00
calixteman
92ff26e4ff
Merge pull request #19427 from calixteman/bug1946181
Add some unicode mapping for ligatures when writing the cmap table in the font (bug 1946181)
2025-02-14 17:46:07 +01:00
Jonas Jenwald
144e5fe196
Merge pull request #19476 from Snuffleupagus/issue-19474
Search for destinations in both /Names and /Dests dictionaries (issue 19474)
2025-02-14 16:05:36 +01:00
Jonas Jenwald
33cba30bdb Search for destinations in both /Names and /Dests dictionaries (issue 19474)
Currently we only use either one of them, preferring the NameTree when it's available.
2025-02-14 15:49:05 +01:00
Jonas Jenwald
c69282a64f
Merge pull request #19487 from Snuffleupagus/OverlayManager-closeIfActive
Add a new `closeIfActive` method in the `OverlayManager` class
2025-02-14 15:46:13 +01:00
Jonas Jenwald
96f5dcbd91 Add a new closeIfActive method in the OverlayManager class
It's now pretty common that we only want to close a `dialog` *if* it's currently active, to avoid throwing errors, and this new method provides a shorter and more convenient way to achieve that.
2025-02-14 15:43:00 +01:00
calixteman
6258a77bd7
Merge pull request #19486 from calixteman/signature_edit_desc
[Editor] Add the possibility to change a signature description (bug 1948116)
2025-02-14 15:41:45 +01:00
Jonas Jenwald
6ad56135c9
Merge pull request #19481 from Snuffleupagus/GenericL10n-fetch-bundles-parallel
[GenericL10n] Fetch the language bundles in parallel to reduce load time
2025-02-14 15:33:29 +01:00
Jonas Jenwald
c81a404138
Merge pull request #19475 from Snuffleupagus/injectLinkAnnotations-method-event
Move the auto-link handling into its own `PDFPageView` helper-method, and dispatch a "linkannotationsadded" event
2025-02-14 14:05:06 +01:00
Calixte Denizet
1d82b2ce94 [Editor] Add the possibility to change a signature description (bug 1948116) 2025-02-14 14:00:45 +01:00
Jonas Jenwald
a877493826
Merge pull request #19485 from Snuffleupagus/SignatureManager-Array-from-shorten
Slightly shorten an `Array.from` usage in the `SignatureManager` class
2025-02-14 10:44:37 +01:00
Jonas Jenwald
7dbf8c8e4b Slightly shorten an Array.from usage in the SignatureManager class
This should be equivalent to the old code, and besides being ever so slightly shorter I'm also finding it a little bit easier to read at a glance.
2025-02-13 20:04:02 +01:00
calixteman
74a7576c2c
Merge pull request #19478 from calixteman/signature_init
[Editor] Populate the 'Add signature' menu with the saved signatures (bug 1947828)
2025-02-13 16:46:01 +01:00
Calixte Denizet
68451fe17e [Editor] Populate the 'Add signature' menu with the saved signatures (bug 1947828) 2025-02-13 15:59:57 +01:00
Jonas Jenwald
8d8e25c89d [GenericL10n] Fetch the language bundles in parallel to reduce load time
For non `en-US` locales this will, ever so slightly, shorten the time it takes to load and parse the language bundles.
2025-02-13 11:53:45 +01:00
Jonas Jenwald
8727a04ae5 Move the auto-link handling into its own PDFPageView helper-method, and dispatch a "linkannotationsadded" event
This is similar to a lot of existing functionality for various layers, and the new event might be helpful in e.g. the integration-tests.
2025-02-12 14:57:44 +01:00
Jonas Jenwald
d6f63d0e4b
Merge pull request #19469 from Snuffleupagus/bug-1947248
[api-major] Apply the `userUnit` using CSS, to fix the text/annotation layers (bug 1947248)
2025-02-11 23:13:46 +01:00
calixteman
5b13ea14c2
Merge pull request #19472 from calixteman/update_button_hover_color
Fix the color of the background button when hovering it
2025-02-11 22:42:51 +01:00
Calixte Denizet
6950a312aa Fix the color of the background button when hovering it 2025-02-11 20:15:17 +01:00
Jonas Jenwald
e2d2263788
Merge pull request #19464 from Snuffleupagus/autolinking-catch
Catch and ignore any errors during auto-linking parsing (PR 19110 follow-up)
2025-02-11 20:06:33 +01:00
Jonas Jenwald
bd05b255fa [api-major] Apply the userUnit using CSS, to fix the text/annotation layers (bug 1947248)
Rather than modifying the "raw" dimensions of the page, we'll instead apply the `userUnit` as an *additional* scale-factor via CSS.

*Please note:* It's not clear to me if this solution is fully correct either, or if there's other problems with it, but it at least *appears* to work.

---

With these changes, the following CSS variables are now assumed to be available/set as necessary: `--total-scale-factor`, `--scale-factor`, `--user-unit`, `--scale-round-x`, and `--scale-round-y`.
2025-02-11 14:36:06 +01:00
calixteman
e3cca6d513
Merge pull request #19425 from calixteman/signature_save
[Editor] Add the possibility to compress/decompress the signature data in  order to store them in the logins storage in Firefox (bug 1946171)
2025-02-10 19:20:32 +01:00
Calixte Denizet
6b95095e14 Add the possibility to compress/decompress the signature data in order to store them in the logins storage in Firefox (bug 1946171) 2025-02-10 19:09:51 +01:00
Jonas Jenwald
29fbed384a
Merge pull request #19461 from Snuffleupagus/autolinking-lazy-borderStyle
Create the `borderStyle` of inferred links lazily (PR 19110 follow-up)
2025-02-10 16:32:12 +01:00
Jonas Jenwald
357ff4afde Catch and ignore any errors during auto-linking parsing (PR 19110 follow-up)
While investigating a bug, that I've not yet had time to fully investigate and report, I found that if there's ever an error thrown from the `Autolinker` class it'll prevent the annotationEditorLayer from rendering *and* the renderTask itself will be treated as having failed.
2025-02-10 16:28:02 +01:00
Jonas Jenwald
de1c2146b8
Merge pull request #19458 from timvandermeij/updates
Update dependencies and translations to the most recent versions
2025-02-10 12:47:56 +01:00
Jonas Jenwald
fba5f3c237 Create the borderStyle of inferred links lazily (PR 19110 follow-up)
Given that most inferred links will overlap existing LinkAnnotations, creating a lot of unused `borderStyle` objects seem unnecessary.
Hence we can move that into the `AnnotationLayer.prototype.addLinkAnnotations` method instead, which also allows us to slightly reduce the API-surface.
2025-02-10 11:53:22 +01:00
Jonas Jenwald
e608daed9f
Merge pull request #19460 from Snuffleupagus/autolinking-check-annotationLayer
Check that the annotationLayer is still active before injecting inferred links (PR 19110 follow-up)
2025-02-10 10:08:47 +01:00
Jonas Jenwald
81e99da440 Check that the annotationLayer is still active before injecting inferred links (PR 19110 follow-up)
This issue is quite difficult to trigger reliably, however it's possible for rendering to have been aborted and thus for the annotationLayer to have been removed once we're invoking `injectLinkAnnotations`. In that case, an Error is thrown[1].

The way that I'm able to *intermittently* trigger this is by:
 - Loading http://localhost:8888/web/viewer.html?file=/test/pdfs/pdf.pdf#disableHistory=true
 - Enable "Wrapped Srolling" mode.
 - Quickly zoom out, to the minimum zoom level.

---
[1]
```
renderView: TypeError: can't access property "injectLinkAnnotations", this.annotationLayer is null
    resultPromise http://localhost:8888/web/pdf_page_view.js:1116
    draw http://localhost:8888/web/pdf_page_view.js:1099
    renderView http://localhost:8888/web/pdf_rendering_queue.js:196
    forceRendering http://localhost:8888/web/pdf_viewer.js:1849
    promise callback*forceRendering http://localhost:8888/web/pdf_viewer.js:1848
    renderHighestPriority http://localhost:8888/web/pdf_rendering_queue.js:79
    renderView http://localhost:8888/web/pdf_rendering_queue.js:198
    renderView http://localhost:8888/web/pdf_rendering_queue.js:197
    forceRendering http://localhost:8888/web/pdf_viewer.js:1849
    promise callback*forceRendering http://localhost:8888/web/pdf_viewer.js:1848
    renderHighestPriority http://localhost:8888/web/pdf_rendering_queue.js:79
    renderView http://localhost:8888/web/pdf_rendering_queue.js:198
    renderView http://localhost:8888/web/pdf_rendering_queue.js:197
    forceRendering http://localhost:8888/web/pdf_viewer.js:1849
    promise callback*forceRendering http://localhost:8888/web/pdf_viewer.js:1848
    renderHighestPriority http://localhost:8888/web/pdf_rendering_queue.js:79
    renderView http://localhost:8888/web/pdf_rendering_queue.js:198
    renderView http://localhost:8888/web/pdf_rendering_queue.js:197
    forceRendering http://localhost:8888/web/pdf_viewer.js:1849
    promise callback*forceRendering http://localhost:8888/web/pdf_viewer.js:1848
    renderHighestPriority http://localhost:8888/web/pdf_rendering_queue.js:79
    renderView http://localhost:8888/web/pdf_rendering_queue.js:198
    renderView http://localhost:8888/web/pdf_rendering_queue.js:197
    forceRendering http://localhost:8888/web/pdf_viewer.js:1849
    promise callback*forceRendering http://localhost:8888/web/pdf_viewer.js:1848
    renderHighestPriority http://localhost:8888/web/pdf_rendering_queue.js:79
    update http://localhost:8888/web/pdf_viewer.js:1677
    onScaleChanging http://localhost:8888/web/app.js:2550
    dispatch http://localhost:8888/web/event_utils.js:115
    #setScaleUpdatePages http://localhost:8888/web/pdf_viewer.js:1363
    #setScale http://localhost:8888/web/pdf_viewer.js:1389
    updateScale http://localhost:8888/web/pdf_viewer.js:2263
    updateZoom http://localhost:8888/web/app.js:814
    zoomOut http://localhost:8888/web/app.js:827
    onKeyDown http://localhost:8888/web/app.js:2780
    bindWindowEvents http://localhost:8888/web/app.js:2097
    initialize http://localhost:8888/web/app.js:262
    run http://localhost:8888/web/app.js:704
    webViewerLoad http://localhost:8888/web/viewer.js:294
    <anonymous> http://localhost:8888/web/viewer.js:305
pdf_rendering_queue.js:204:21
```
2025-02-10 09:19:04 +01:00
Jonas Jenwald
86ae2ca01c
Merge pull request #19449 from Snuffleupagus/autolinking-URL-fuzzy-match
Ignore the URLs when checking if inferred links overlap existing LinkAnnotations (PR 19110 follow-up)
2025-02-09 22:51:37 +01:00
Jonas Jenwald
37ef0b4a86 Ignore the URLs when checking if inferred links overlap existing LinkAnnotations (PR 19110 follow-up)
*Note:* For the issue mentioned on Matrix it'll obviously still make sense to improve the regular expression to detect more URL edge-cases.

However it occurred to me that even once that particular case is fixed there'll always be a risk that inferred links could overlap, and effectively block, the actual LinkAnnotations.
Hence this patch removes the URL comparison to ensure that overlapping inferred links will always be ignored.
2025-02-09 22:06:58 +01:00
Tim van der Meij
58a60b8959
Update translations to the most recent versions 2025-02-09 18:59:00 +01:00
Tim van der Meij
d2a07dcac6
Update dependencies to the most recent versions
Moreover, fix the linting issues (using `npx gulp lint --fix`) that are
found by the new versions of the linting tools.
2025-02-09 18:58:26 +01:00
Tim van der Meij
d88035525c
Merge pull request #19457 from timvandermeij/integration-tests-ink-isolate
Isolate the ink editor integration tests
2025-02-09 18:10:29 +01:00
Jonas Jenwald
b4a6b1ba0b
Merge pull request #19456 from Snuffleupagus/more-TypedArray-fill
Replace a couple of loops with `TypedArray.prototype.fill()`
2025-02-09 17:45:17 +01:00
calixteman
6862e84daa
Merge pull request #19437 from calixteman/signature_save_print1
[Editor] Add the ability to print and save some newly added signatures (bug 1946795)
2025-02-09 17:13:01 +01:00
Tim van der Meij
6d9ff34611
Isolate the ink editor integration tests
To avoid being able to introduce dependencies between tests, and to
bring existing dependencies to the surface, this commit makes sure that
we close the document between tests so that we can't accidentally rely
on state set by a previous test. This prevents multiple tests from
failing if one of them fails and makes debugging easier by being able to
run each test on their own independent of other tests.

This commit, combined with the previous one, is enough to make the ink
editor integration test suite pass consistently if random mode in
Jasmine is enabled, proving that the tests are fully isolated now.
2025-02-09 16:46:58 +01:00
Tim van der Meij
ced1268ec3
Remove the dependency between two ink editor integration tests
The second test of the basic operations block for the ink editor
depends on the first test to work. This becomes visible if we only run
the second test, using `fit`, which always fails with:

`ProtocolError: Waiting for selector '.annotationEditorLayer' failed:
Runtime.callFunctionOn timed out. Increase the 'protocolTimeout' setting
in launch/connect calls for a higher timeout if needed.`

The problem is that the second test doesn't enable the ink editor and
relies on the first test having done that already (because we don't
close the document between tests yet). This commit fixes the issue by
unconditionally enabling the ink editor in the second test to remove the
dependency between the two tests so they both pass in isolation.
2025-02-09 16:46:58 +01:00
Jonas Jenwald
294fa3e4e6 Replace a couple of loops with TypedArray.prototype.fill()
When you want to initialize a TypedArray with a non-zero value for all elements the `fill`-method is simpler than manually looping through it.
2025-02-09 16:24:45 +01:00
Tim van der Meij
c1035e4356
Merge pull request #19454 from Snuffleupagus/Chrome-110
[api-minor] Update the minimum supported Google Chrome version to 110
2025-02-09 15:59:50 +01:00
Jonas Jenwald
ad1c79e6af [api-minor] Update the minimum supported Google Chrome version to 110
This patch updates the minimum supported browsers as follows:
 - Google Chrome 110, which was released on 2023-02-07; see https://chromereleases.googleblog.com/2023/02/stable-channel-update-for-desktop.html

Note that nowadays we usually try, where feasible and possible, to support browsers that are about two years old. By limiting support to only "recent" browsers we reduce the risk of holding back improvements of the *built-in* Firefox PDF Viewer, and also (significantly) reduce the maintenance/support burden for the PDF.js contributors.

*Please note:* As always, the minimum supported browser version assumes that a `legacy`-build of the PDF.js library is being used; see https://github.com/mozilla/pdf.js/wiki/Frequently-Asked-Questions#faq-support
2025-02-09 13:33:55 +01:00
Tim van der Meij
8ba8e75d6c
Merge pull request #19446 from Snuffleupagus/shorten-MeshStreamReader-readBits
Shorten the `MeshStreamReader.prototype.readBits` method a little bit
2025-02-09 12:57:53 +01:00
Tim van der Meij
739324d77e
Merge pull request #19447 from Snuffleupagus/fix-integrationtest-inferred_link_
Check for the correct link-id prefix in "must not add links when unnecessary" integration-test (PR 19110 follow-up)
2025-02-09 12:55:10 +01:00
Tim van der Meij
1921aefccf
Merge pull request #19450 from Snuffleupagus/crypto-CipherTransform-iv-getRandomValues
Use `crypto.getRandomValues` unconditionally in the `src/core/crypto.js` file
2025-02-09 12:53:27 +01:00
Jonas Jenwald
7919f4e84f Use crypto.getRandomValues unconditionally in the src/core/crypto.js file
This functionality is now available in all browsers/environments that we support, please see https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues#browser_compatibility
2025-02-09 11:42:17 +01:00
Jonas Jenwald
6eec20afc0 Check for the correct link-id prefix in "must not add links when unnecessary" integration-test (PR 19110 follow-up)
Currently this test-case would never fail, even if the actual implementation was broken, since it checks for a link-id prefix that we're not using.
2025-02-08 15:42:31 +01:00
Jonas Jenwald
36522d85cc Shorten the MeshStreamReader.prototype.readBits method a little bit
- Use a `BaseStream`-instance method to directly get the int32 value.

 - Use local variables more.
2025-02-08 11:17:35 +01:00
Jonas Jenwald
72339dc561
Merge pull request #19399 from Snuffleupagus/TextLayer-#getAscent-simplify
[api-minor] Simplify the `TextLayer.#getAscent` fallback (PR 12896 follow-up)
2025-02-08 00:01:40 +01:00
Calixte Denizet
24417a1a0b [Editor] Add the ability to print and save some newly added signatures (bug 1946795) 2025-02-07 23:07:27 +01:00
Tim van der Meij
b43efdd545
Merge pull request #19436 from Snuffleupagus/api-FetchBinaryData
Combine the main-thread message handlers for CMap-, StandardFontData-, and Wasm-files
2025-02-07 21:13:58 +01:00
Tim van der Meij
01148d35bc
Merge pull request #19423 from Snuffleupagus/annotation-more-getPdfColorArray
Use the `getPdfColorArray` helper more in the `src/core/annotation.js` file
2025-02-07 21:05:52 +01:00
Tim van der Meij
5b7bc27c46
Merge pull request #19419 from Snuffleupagus/blank_issues_enabled-false
Disable the "Blank issue" alternative when using the GitHub "New issue"-button
2025-02-07 20:52:26 +01:00
Jonas Jenwald
88e5da1e37 Combine the main-thread message handlers for CMap-, StandardFontData-, and Wasm-files
Currently we have three separate and virtually identical message handlers for this data, which can easily be combined into a single message handler instead.
2025-02-07 14:33:15 +01:00
calixteman
651d712109
Merge pull request #19433 from calixteman/signature_icon
[Editor] Add an icon for the signature tool and move it before the highlight one
2025-02-06 21:59:27 +01:00
Jonas Jenwald
7d9cfbf597
Merge pull request #19432 from Snuffleupagus/isSyncFontLoadingSupported-FeatureTest
Use the `FeatureTest` helper in the `src/display/font_loader.js` file
2025-02-06 21:36:28 +01:00
Calixte Denizet
5ee7307bf5 [Editor] Add an icon for the signature tool and move it before the highlight one 2025-02-06 20:58:59 +01:00
Jonas Jenwald
33f3506842 Use the FeatureTest helper in the src/display/font_loader.js file 2025-02-06 20:45:18 +01:00
Jonas Jenwald
41a918b0fe
Merge pull request #19430 from Snuffleupagus/Fluent-PLATFORM
[GENERIC viewer] Add Fluent `PLATFORM` function (PR 19414 follow-up)
2025-02-06 20:07:07 +01:00
calixteman
16155fd801
Merge pull request #19431 from Snuffleupagus/var--save-warning-color
Fix `--save-warning-color` CSS variable typo (PR 19414 follow-up)
2025-02-06 19:09:20 +01:00
Jonas Jenwald
314928ffd7 Fix --save-warning-color CSS variable typo (PR 19414 follow-up) 2025-02-06 19:06:04 +01:00
Jonas Jenwald
d5d3d8b3f7 [GENERIC viewer] Add Fluent PLATFORM function (PR 19414 follow-up)
This patch extends the `FeatureTest.platform` getter to provide the necessary information, and uses that one to implement a Fluent `PLATFORM` function based on: https://searchfox.org/mozilla-central/rev/d1fbe983fb7720f0a4aca0e748817af11c1a374e/intl/l10n/rust/fluent-ffi/src/bundle.rs#81-98
2025-02-06 18:59:35 +01:00
calixteman
f1152f5caf
Merge pull request #19429 from calixteman/autolinking_firefox
Enable autolinking in Firefox (bug 1019475)
2025-02-06 17:47:55 +01:00
Calixte Denizet
76c06c5996 Enable autolinking in Firefox (bug 1019475) 2025-02-06 17:02:54 +01:00
calixteman
2d773cb773
Merge pull request #19110 from ryzokuken/autolink-demo
Enable automatic URL linking (bug 1019475)
2025-02-06 16:53:48 +01:00
calixteman
08663f715b
Merge pull request #19414 from calixteman/signature_dialog2
[Editor] Add a new dialog for the signature editor (bug 1945574)
2025-02-06 16:20:01 +01:00
Calixte Denizet
185ec1faf6 Add some unicode mapping for ligatures when writing the cmap table in the font (bug 1946181) 2025-02-06 10:51:15 +01:00
Calixte Denizet
fa25ab9c13 [Editor] Add a new dialog for the signature editor (bug 1945574) 2025-02-05 23:00:38 +01:00
Ujjwal Sharma
61ba1ea48c Enable automatic URL linking
Automatically detect links in the text content of a file and automatically
generate link annotations at the appropriate locations to achieve
automatic link detection and hyperlinking.
2025-02-05 16:56:54 +01:00
Jonas Jenwald
925071ab46 Use the getPdfColorArray helper more in the src/core/annotation.js file
While the file-size reduction is obviously tiny, it should never hurt to remove code duplication.
2025-02-05 11:37:32 +01:00
Jonas Jenwald
0b118efc26 Disable the "Blank issue" alternative when using the GitHub "New issue"-button
With recent changed made to the GitHub issues-UI the "Blank issue" alternative is now showing up quite prominently, which can easily negate the point of our bug/feature templates and lead to incomplete issues being filed.
2025-02-04 15:19:04 +01:00
Jonas Jenwald
90a5c37cb0
Merge pull request #19416 from Snuffleupagus/getFactoryUrlProp
[api-minor] Add more validation for the `cMapUrl`, `standardFontDataUrl`, and `wasmUrl` parameters
2025-02-04 12:48:21 +01:00
Jonas Jenwald
212388a980
Merge pull request #19415 from Snuffleupagus/dist-wasm
Bundle wasm-files in `pdfjs-dist` (PR 19329 follow-up)
2025-02-04 11:41:00 +01:00
Jonas Jenwald
696c6c626b Include the OpenJPEG license files
This is consistent with the handling of CMaps and StandardFontData.
2025-02-04 10:39:38 +01:00
Jonas Jenwald
fa3358baf9 [api-minor] Add more validation for the cMapUrl, standardFontDataUrl, and wasmUrl parameters
Given that we now have a few different factory-url parameters, we introduce a helper function for parsing them.

*Please note:* These parameters have always been documented as requiring a trailing slash[1], which we can now easily enforce during the `getDocument`-call.

---
[1] I recall that we've occasionally seen issues because users miss that detail, and the new Error should hopefully be more easily actionable than one thrown during rendering/parsing.
2025-02-04 10:27:31 +01:00
Jonas Jenwald
de79996574 Bundle wasm-files in pdfjs-dist (PR 19329 follow-up) 2025-02-04 10:22:26 +01:00
Tim van der Meij
d1f62509e5
Merge pull request #19410 from timvandermeij/integration-tests-freetext
Centralize the editor selector definitions in the freetext editor integration tests
2025-02-02 19:41:13 +01:00
Tim van der Meij
9a6511127a
Put waitForSelector options on a single line in the editor integration tests
This pattern was already followed quite consistently outside of the
freetext editor integration tests, so this commit aligns the remaining
places for consistency. This also helps to make the tests more compact
and to reduce the number of changes in follow-up changes.
2025-02-02 17:20:14 +01:00
Tim van der Meij
e95a26dc1d
Centralize the editor selector definitions in the freetext editor integration tests
In most integration tests we already use the pattern of defining the
editor selector once and reusing it in the rest of the test, but it's
not fully consistent everywhere yet. This commit fixes that for the
freetext editor integration tests, which has multiple advantages:

- it improves consistency between the various editor integration tests;
- it removes duplicate function calls and aligns variable definitions;
- it reduces the number of `getEditorSelector` calls that contained
  hardcoded IDs, which helps to isolate the tests and to simplify
  follow-up patches.
2025-02-02 17:18:14 +01:00
Tim van der Meij
bdbd9a317f
Merge pull request #19408 from Snuffleupagus/rm-popup-color-mix-fallback
Remove the `color-mix` fallback used with PopupAnnotations
2025-02-02 14:22:08 +01:00
Tim van der Meij
944602a7d5
Merge pull request #19405 from timvandermeij/integration-tests-highlight
Centralize the editor selector definitions in the highlight editor integration tests
2025-02-02 14:19:23 +01:00
Tim van der Meij
f9d3f699a7
Merge pull request #19404 from timvandermeij/updates
Update dependencies and translations to the most recent versions
2025-02-02 14:19:06 +01:00
Jonas Jenwald
9752d88241
Merge pull request #19407 from hamirmahal/master
Replace uninformative README badge (issue 19406)
2025-02-02 11:31:49 +01:00
Jonas Jenwald
9f62a88c38 Remove the color-mix fallback used with PopupAnnotations
This CSS feature is now available in *most* browsers that we support, with old Chromium-based browsers being the only exception; please see https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/color-mix#browser_compatibility

From this data we see that the feature in question has been supported since Chrome 111, which was released on 2023-03-01 (i.e. almost two years ago).

Please note that we've never guaranteed that all features and functionality will be available in the oldest supported browsers.
Furthermore, even with the `color-mix` fallback removed PopupAnnotations will still function just as before but may render with the default color (defined in the CSS-file) rather than the one specified in the PDF document.
2025-02-02 10:41:35 +01:00
Hamir Mahal
d8b6f1138f
Replace uninformative README badge (issue 19406) 2025-02-01 15:32:09 -08:00
Tim van der Meij
8babcded5d
Centralize the editor selector definitions in the highlight editor integration tests
In most integration tests we already use the pattern of defining the
editor selector once and reusing it in the rest of the test, but it's
not fully consistent everywhere yet. This commit fixes that for the
highlight editor integration tests, which has multiple advantages:

- it improves consistency between the various editor integration tests;
- it removes duplicate function calls and aligns variable definitions;
- it reduces the number of `getEditorSelector` calls that contained
  hardcoded IDs, which helps to isolate the tests and to simplify
  follow-up patches.
2025-02-01 19:23:42 +01:00
Tim van der Meij
0326814a1e
Update translations to the most recent versions 2025-02-01 18:37:01 +01:00
Tim van der Meij
c0957986b7
Update dependencies to the most recent versions 2025-02-01 18:35:56 +01:00
Tim van der Meij
de191d2a12
Merge pull request #19402 from Snuffleupagus/AnnotationElement-width-height-getters
Add width/height getters in the `AnnotationElement` class
2025-02-01 16:17:59 +01:00
Jonas Jenwald
2fd1344ece Add width/height getters in the AnnotationElement class
This is similar to PR 19397, but for the main-thread code, and helps to slightly shorten the code.
2025-02-01 13:20:15 +01:00
Jonas Jenwald
c8be02f2a7 [api-minor] Simplify the TextLayer.#getAscent fallback (PR 12896 follow-up)
At the time of PR 12896 the `fontBoundingBox{Ascent, Descent}` properties were not yet available by default in Fírefox, however that's no longer the case since Firefox 116; please see https://bugzilla.mozilla.org/show_bug.cgi?id=1801198.

Hence this patch which replaces the "full" fallback with a warning and uses the `ascent`/`descent` values from the fonts in the PDF document (as we did previously). Obviously the TextLayer won't look as good in that case, but it's a simpler and shorter solution.
2025-02-01 10:11:57 +01:00
Tim van der Meij
b48717a99e
Merge pull request #19397 from Snuffleupagus/Annotation-width-height-getters
Add width/height getters in the `Annotation` class
2025-01-31 16:14:02 +01:00
calixteman
938add1bb0
Merge pull request #19396 from calixteman/update_signature_draw
[Editor] Add some functions in order to extract contours from text and to generate a drawing from a drawn signature
2025-01-31 15:44:00 +01:00
Calixte Denizet
20992e87f5 [Editor] Add some functions in order to extract contours from text and to generate a drawing from a drawn signature 2025-01-31 14:59:58 +01:00
Jonas Jenwald
6f2966628c Add width/height getters in the Annotation class
Currently we're manually computing the width/height of the /Rect-entry in a number of spots throughout the worker-thread Annotation code, which these new getters help avoid.
2025-01-31 13:21:53 +01:00
calixteman
58c8f069f7
Merge pull request #19395 from calixteman/fix_overlay_manager
Avoid to remove the active overlay when a cancelled dialog (like the file picker) was called from a dialog
2025-01-30 16:51:26 +01:00
calixteman
ec7270c546
Merge pull request #19394 from calixteman/mv_supported_img_types
Move the array containing the supported image mime types in display_utils
2025-01-30 16:48:13 +01:00
Calixte Denizet
eca1e6c52e Avoid to remove the active overlay when a cancelled dialog (like the file picker) was called from a dialog 2025-01-30 16:13:48 +01:00
Calixte Denizet
2c737bc420 Move the array containing the supported image mime types in display_utils
and make it available for the viewer (it'll be used in the signature UI).
2025-01-30 15:35:17 +01:00
Jonas Jenwald
31deee26b9
Merge pull request #19393 from Snuffleupagus/fewer-hasFieldFlag
Use fewer `hasFieldFlag` calls in the `src/core/annotation.js` file
2025-01-30 15:10:14 +01:00
Jonas Jenwald
d1a0f3e495
Merge pull request #19392 from Snuffleupagus/image-options-init-once
Initialize the image-options, on the worker-thread, once per document
2025-01-30 15:06:25 +01:00
Jonas Jenwald
9e227de3c5 Use fewer hasFieldFlag calls in the src/core/annotation.js file
We lookup a number of field-flags multiple times, which seems unnecessary.
2025-01-30 13:38:57 +01:00
Jonas Jenwald
db53320da8 Initialize the image-options, on the worker-thread, once per document
Currently we're initializing the image-options for every page, which seems unnecessary since it should suffice to do that once per document.

Also, changes the `BasePdfManager` constructor to improve readability/documentation a little bit.
2025-01-30 11:52:15 +01:00
calixteman
42c2b7b657
Merge pull request #19339 from calixteman/signature_tools
[Editor] (WIP) Add a new tool in order to add an handwritten signature to a pdf (bug 1942343)
2025-01-30 10:54:56 +01:00
Calixte Denizet
2f828c7bf4 [Editor] (WIP) Add a new tool in order to add an handwritten signature to a pdf (bug 1942343)
This patch is adding some code in order to extract a drawing as curves from an image.
The algorithm is basically the following:
 - reduce the dimensions
 - make it gray
 - apply a bilateral filter in order to add some blurryness while keeping the edges
 - compute the histogram
 - guess what's the background color which should contain a large majority of the pixels
 - make a binary image
 - extract the contours in using the Suzuki algorithm
 - apply the Douglas-Peucker algorithm in order to reduce the number of points

The algorithm is improvable but it should work pretty well if there's a clear difference between
the background and the drawing.
In a v2 we could use a ML model in order to improve the extraction.

There's few changes related to the UI in order to make the tool usable, but they're very basic
for the moment.
2025-01-29 21:52:14 +01:00
Jonas Jenwald
9bc4331485
Merge pull request #19390 from Snuffleupagus/issue-19389
Support the password field-flag in TextWidgetAnnotation (issue 19389)
2025-01-29 14:41:19 +01:00
Jonas Jenwald
6f2706fad6 Support the password field-flag in TextWidgetAnnotation (issue 19389) 2025-01-29 12:40:09 +01:00
Jonas Jenwald
786ac2fe01
Merge pull request #19388 from Snuffleupagus/readInt16
Introduce a `readInt16` helper function in the `src/core/core_utils.js` file
2025-01-29 11:42:59 +01:00
Jonas Jenwald
237a17ad56 Introduce a readInt16 helper function in the src/core/core_utils.js file
Rather than manually repeating code needed to get an int16, we can move and re-use an existing helper function instead.
2025-01-29 10:14:23 +01:00
Jonas Jenwald
b0b9552216
Merge pull request #19384 from Snuffleupagus/isNumberArray-fix-BigInt-check
Handle *empty* BigInt64Array/BigUint64Array in the `isNumberArray` helper
2025-01-28 10:05:01 +01:00
Jonas Jenwald
6281a89778 Handle *empty* BigInt64Array/BigUint64Array in the isNumberArray helper
The current checks would accidentally allow *empty* BigInt64Array/BigUint64Array, which we can fix by instead checking directly for those types.
This should be fine since those types are available in all environments that we support, see:
 - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt64Array#browser_compatibility
 - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigUint64Array#browser_compatibility
2025-01-27 12:57:47 +01:00
Tim van der Meij
4f1078dc63
Merge pull request #19368 from Snuffleupagus/rm-delayed-cleanup
[api-minor] Simplify clean-up of page resources after rendering
2025-01-26 16:54:43 +01:00
Tim van der Meij
09a0a0f06f
Merge pull request #19358 from Snuffleupagus/Node-enable-web_pdfjsLib
Enable the "checks that the viewer re-exports the expected API functionality" unit-test in Node.js
2025-01-26 16:45:51 +01:00
Tim van der Meij
329c3d1d71
Merge pull request #19381 from Snuffleupagus/rm-isInEditingMode
Remove unused `isInEditingMode` method (PR 19311 follow-up)
2025-01-26 16:44:21 +01:00
Tim van der Meij
3cfc41e54d
Merge pull request #19382 from mozilla/dependabot/npm_and_yarn/undici-6.21.1
Bump undici from 6.19.8 to 6.21.1
2025-01-26 16:43:11 +01:00
dependabot[bot]
85a6c1ea6b
Bump undici from 6.19.8 to 6.21.1
Bumps [undici](https://github.com/nodejs/undici) from 6.19.8 to 6.21.1.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v6.19.8...v6.21.1)

---
updated-dependencies:
- dependency-name: undici
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-26 15:37:40 +00:00
Jonas Jenwald
b02274e5d6 Remove unused isInEditingMode method (PR 19311 follow-up)
This method was added in PR 19311, however it's not actually used anywhere in the code-base.
2025-01-25 13:17:25 +01:00
calixteman
38800715cd
Merge pull request #19373 from Hydraulicus/fix-drawing-beyond-page
[Editor] Add validation for the target element of curve endpoints
2025-01-23 23:54:37 +01:00
Jonas Jenwald
4a513bb52e
Merge pull request #19365 from Snuffleupagus/viewer-component-render-option-objects
[api-major] Change viewer component `render`-methods to take parameter objects
2025-01-23 22:36:28 +01:00
calixteman
f798bade4e
Merge pull request #19338 from avdoseferovic/fix/ink-editor-jumping
[Editor] Don't scroll when drawing (issue 17327)
2025-01-23 22:07:29 +01:00
hydraulicus
104e1c3f90 [Editor] Add validation for the target element of curve endpoints
This patch fixes a bug that caused incorrect curve shapes when an endpoint lies beyond the page boundaries. It adds a check for the endpoint's position, and if it is outside the page, the point is excluded from the shape's coordinates.
2025-01-23 22:05:33 +02:00
Jonas Jenwald
30fa7c3d84
Merge pull request #19372 from Snuffleupagus/mainHighlightColorPicker-toolbar-init
[GENERIC viewer] Re-initialize the viewer-toolbar `ColorPicker` for each PDF document
2025-01-23 18:08:02 +01:00
Jonas Jenwald
342b5e20b4 [GENERIC viewer] Re-initialize the viewer-toolbar ColorPicker for each PDF document
Steps to reproduce this in `master`:
 1. Open https://mozilla.github.io/pdf.js/web/viewer.html
 2. Use the "Open"-button (in the secondaryToolbar), or drag-and-drop, to load another PDF document.
 3. Enable the highlight-editor.
 4. Try to pick a new colour.

Note how it's no longer possible to change the default highlight-colour.
The reason for this is that we're only initializing the viewer-toolbar `ColorPicker` *once*, which doesn't work since every PDF document gets its own `AnnotationEditorUIManager`-instance. To address this we simply need to re-initialize the viewer-toolbar `ColorPicker`, and note that this patch won't affect the Firefox PDF Viewer.
2025-01-23 16:53:31 +01:00
Jonas Jenwald
2132552d71
Merge pull request #19371 from Snuffleupagus/issue-19369
[Editor] Ensure that `highlightSelection` waits until we've fully updated the editing-mode (issue 19369)
2025-01-23 14:39:35 +01:00
Jonas Jenwald
3b4758a400 [Editor] Ensure that highlightSelection waits until we've fully updated the editing-mode (issue 19369)
With the changes in PR 18843 the `AnnotationEditorUIManager.prototype.updateMode` method is now asynchronous, which we need to take into account when dispatching the "annotationeditormodechanged" event.
2025-01-23 13:46:39 +01:00
Jonas Jenwald
9241e1be8c [api-minor] Simplify clean-up of page resources after rendering
After PR 2317, which landed in 2012, we'd immediately clean-up after rendering for pages with large image resources. This had the effect that re-rendering, e.g. after zooming, would force us to re-parse the entire page which could easily lead to bad performance.
In PR 16108, which landed in 2023, we tried to lessen the impact of that by slightly delaying clean-up however that's obviously not a perfect solution (and it increased the complexity of the relevant code).

Furthermore, the condition for this "immediate" clean-up seems a bit arbitrary to me since a page could easily contain a large number of smaller images whose total size vastly exceeds the threshold.

Hence this patch, which suggests that we remove the conditional and delayed clean-up after rendering. Compared to the situation back in 2012, a number of things have improved since:
 - We have *multiple* caches for repeated image-resources on the worker-thread[1], which helps reduce overall memory usage and improves performance.
 - We downsize huge images on the worker-thread, which means that the images we're using on the main-thread cannot be arbitrarily large.
 - The amount of available RAM on devices should be a lot higher, since more than a decade has passed.

A future improvement here, for more resource constrained environments, could be to instead clean-up when actually needed using e.g. `WeakRef`s (see issue 18148).

---
[1] More specifically:
 - `LocalImageCache`, which caches image-data by /Name and /Ref on the `PartialEvaluator.prototype.getOperatorList` level.
 - `RegionalImageCache`, which caches image-data by /Ref on the `PartialEvaluator`-instance (i.e. at the page) level.
 - `GlobalImageCache`, which caches image-data by /Ref globally at the document level.
2025-01-22 12:19:44 +01:00
Jonas Jenwald
7450457525 [api-major] Change viewer component render-methods to take parameter objects
This is nicer than a bunch of somewhat arbitrarily ordered parameters, and makes any future changes easier.
2025-01-21 23:29:45 +01:00
calixteman
877f69886c
Merge pull request #19361 from calixteman/issue19360
Correctly render the glyph outline when it has a stroke pattern
2025-01-21 16:41:26 +01:00
Calixte Denizet
1ccf6ed976 Correctly render the glyph outline when it has a stroke pattern
It fixes #19360.

Each glyph in the test case has a fill and a stroke pattern, so the current transform used
to scale the glyph outline must be the same.
In setting the stroke color to green, I noticed that the last outline contains some non-closed
subpaths, so when generating the glyph outline, every time we 'moveTo', we close the previous
subpath.
2025-01-21 15:30:16 +01:00
Jonas Jenwald
79a976ce9d
Merge pull request #19337 from Snuffleupagus/dev-wasm
Support multiple wasm-files in the development viewer
2025-01-21 10:50:17 +01:00
Jonas Jenwald
23dc3ff49f
Merge pull request #19353 from Snuffleupagus/ESLint-import/no-restricted-paths
Enable the `import/no-restricted-paths` ESLint plugin rule for the viewer
2025-01-20 22:28:50 +01:00
Jonas Jenwald
0790d94674 Enable the "checks that the viewer re-exports the expected API functionality" unit-test in Node.js
By also running `gulp generic-legacy` before the Node.js unit-tests, we can enable one more test-case in Node.js environments.
2025-01-20 22:10:36 +01:00
Jonas Jenwald
850e605e36
Merge pull request #19356 from Snuffleupagus/bug-1942064-2
Replace the EXIF-block with dummy data to prevent JPEG images being rotated (bug 1942064)
2025-01-20 16:54:09 +01:00
Jonas Jenwald
c4ba3ac23f Replace the EXIF-block with dummy data to prevent JPEG images being rotated (bug 1942064)
The `ImageDecoder` will respect the EXIF orientation, which can lead to JPEG images being incorrectly rotated. To avoid this we replace the entire EXIF-block with dummy data, which works since it'll cause EXIF parsing to bail out early in Firefox; see https://searchfox.org/mozilla-central/rev/9a66d18cb35595c89f499a1011c9dd7e573fce77/image/decoders/EXIF.cpp#130-138
2025-01-20 16:50:22 +01:00
Jonas Jenwald
d91830c447 Enable the import/no-restricted-paths ESLint plugin rule for the viewer
Code in the `web/` folder cannot import directly from the `src/` folder, since that could result in most (or all) main-thread code being bundled into the viewer, and must rather be imported via the `pdfjs-lib` alias.

Let's use ESLint to help enforce this, please find additional details in https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-restricted-paths.md
2025-01-20 11:40:29 +01:00
Jonas Jenwald
01d542eee5
Merge pull request #19351 from timvandermeij/integration-tests-ink
Centralize the editor selector definitions in the ink editor integration tests
2025-01-20 10:23:08 +01:00
Jonas Jenwald
b950c51373
Merge pull request #19350 from timvandermeij/integration-tests-stamp
Centralize the editor selector definitions in the stamp editor integration tests
2025-01-20 10:21:00 +01:00
Tim van der Meij
bd67156ef5
Centralize the editor selector definitions in the ink editor integration tests
In most integration tests we already use the pattern of defining the
editor selector once and reusing it in the rest of the test, but it's
not fully consistent everywhere yet. This commit fixes that for the
ink editor integration tests, which has multiple advantages:

- it improves consistency between the various editor integration tests;
- it removes duplicate function calls and aligns variable definitions;
- it reduces the number of `getEditorSelector` calls that contained
  hardcoded IDs, which helps to isolate the tests and to simplify
  follow-up patches.
2025-01-19 19:46:50 +01:00
Tim van der Meij
0f95617b4c
Centralize the editor selector definitions in the stamp editor integration tests
In most integration tests we already use the pattern of defining the
editor selector once and reusing it in the rest of the test, but it's
not fully consistent everywhere yet. This commit fixes that for the
stamp editor integration tests, which has multiple advantages:

- it improves consistency between the various editor integration tests;
- it removes duplicate function calls and aligns variable definitions;
- it reduces the number of `getEditorSelector` calls and other helper
  function calls that contained hardcoded IDs (by updating them to take
  editor selectors as arguments instead of editor IDs), which helps to
  isolate the tests and to simplify follow-up patches.
2025-01-19 19:33:35 +01:00
Tim van der Meij
c7b35ecd78
Enable a disabled stamp editor integration test in Chrome
Puppeteer recently got updated to version 24.0.0+, so we're past version
23.9.1- where the integration test failed before and we can enable it
again now that it passes in Chrome.
2025-01-19 19:05:42 +01:00
Tim van der Meij
ac57939648
Merge pull request #19344 from timvandermeij/integration-tests-editor-helpers
Implement helper functions for (un)selecting an editor in the integration tests
2025-01-19 18:39:04 +01:00
Tim van der Meij
895edafc23
Implement a helper function for unselecting an editor in the integration tests
This has multiple advantages:

- it improves consistency between the various editor integration tests;
- it makes the code easier to read/understand;
- it reduces code duplication.
2025-01-19 12:26:17 +01:00
Tim van der Meij
c051dd78cf
Implement a helper function for selecting an editor in the integration tests
This has multiple advantages:

- it improves consistency between the various editor integration tests;
- it makes the code easier to read/understand;
- it reduces code duplication;
- it reduces the number of `getEditorSelector` calls that contained
  hardcoded IDs, which helps to isolate the tests and to simplify
  follow-up patches.
2025-01-19 12:26:17 +01:00
Tim van der Meij
5026af107f
Align variable names in the freetext editor integration tests
The `selectorEditor` name is used 57 times, but only in the freetext
editor integration tests file. The `editorSelector` name on the other
hand is used 241 times in all editor integration test files, so this
commit renames the former name to the latter name to achieve consistency
in variable names across all editor integration test files, which also
simplifies upcoming changes.
2025-01-18 20:35:25 +01:00
Tim van der Meij
50b7922f8c
Merge pull request #19342 from timvandermeij/updates
Update dependencies to the most recent versions
2025-01-18 20:34:11 +01:00
Tim van der Meij
615ed67174
Update dependencies to the most recent versions 2025-01-18 18:55:44 +01:00
Jonas Jenwald
54729a57b7
Merge pull request #19341 from Snuffleupagus/api-Default-Factory
Inline the default Factory-definitions in `getDocument`
2025-01-18 14:20:57 +01:00
Jonas Jenwald
db43f158dc Inline the default Factory-definitions in getDocument
- Most of the these are only used in the `src/display/api.js` file, and this leads to slightly shorter code.

 - A number of unit-tests need a `BaseCanvasFactory`-instance, however that one is available through the `PDFDocumentProxy`-instance nowadays.

 - For other unit-tests the remaining necessary default Factory-definitions can be moved into the `test/unit/test_utils.js` file.
2025-01-18 14:09:14 +01:00
Tim van der Meij
6d12d2924f
Merge pull request #19331 from Snuffleupagus/api-Factory-JSDoc
Simplify the JSDocs for the various `getDocument` Factory-parameters
2025-01-18 13:38:29 +01:00
avdoseferovic
78f612ffef fix: don't scroll when drawing [#17327] 2025-01-18 09:12:03 +00:00
Jonas Jenwald
3adec3724c
Merge pull request #19340 from calixteman/issue19336
Handle the case where openjpeg.wasm is missing
2025-01-18 09:36:14 +01:00
Jonas Jenwald
0053b36ee7 Support multiple wasm-files in the development viewer
This prepares for a future where we're using more than one wasm-file, originating in different `external/`-folders, by extending the existing `gulp.watch` usage.
The following diff illustrates how to add more entries:

```diff
diff --git a/gulpfile.mjs b/gulpfile.mjs
index 0e0a5a1ac..1502755be 100644
--- a/gulpfile.mjs
+++ b/gulpfile.mjs
@@ -655,6 +655,10 @@ function createWasmBundle() {
       base: "external/openjpeg",
       encoding: false,
     }),
+    gulp.src(["external/foobar/*.wasm"], {
+      base: "external/foobar",
+      encoding: false,
+    }),
   ]);
 }

@@ -2125,7 +2129,7 @@ gulp.task(
     },
     function watchWasm() {
       gulp.watch(
-        "external/openjpeg/*",
+        ["external/openjpeg/*", "external/foobar/*"],
         { ignoreInitial: false },
         gulp.series("dev-wasm")
       );
```
2025-01-18 09:35:11 +01:00
Calixte Denizet
0c14d6e2db Handle the case where openjpeg.wasm is missing
It fixes #19336.
2025-01-17 22:11:24 +01:00
Jonas Jenwald
45a32b7c58
Merge pull request #19335 from Snuffleupagus/test-rm-console-log-spam
Reduce console spam when running tests in Firefox
2025-01-17 11:29:23 +01:00
Jonas Jenwald
851a52faf3
Merge pull request #19333 from Snuffleupagus/src-core-fetchBinaryData
Handle JPX wasm fetch-response errors correctly (PR 19329 follow-up)
2025-01-17 11:29:12 +01:00
Jonas Jenwald
534bd3e4a8 Reduce console spam when running tests in Firefox
Rather than waiting for the upstream patch to reach the Firefox version we're using with Puppeteer, let's just set the same preference as done in https://phabricator.services.mozilla.com/D234320.
2025-01-17 10:58:46 +01:00
Jonas Jenwald
6038b5a992 Handle JPX wasm fetch-response errors correctly (PR 19329 follow-up)
Currently we're not checking that the response is actually OK before getting the data, which means that rather than throwing an error we can get an empty `ArrayBuffer`.

To avoid duplicating code we can move an existing helper into `src/core/core_utils.js` and re-use it when fetching the JPX wasm-file as well.
2025-01-17 10:20:16 +01:00
Jonas Jenwald
88735d0f14
Merge pull request #19332 from Snuffleupagus/version-5.0
Bump library version to `5.0`
2025-01-16 23:25:39 +01:00
Jonas Jenwald
12d114bccb
Merge pull request #19264 from Snuffleupagus/ResponseException
[api-major] Replace `MissingPDFException` and `UnexpectedResponseException` with one exception
2025-01-16 23:23:16 +01:00
Jonas Jenwald
7765af228d Bump library version to 5.0 2025-01-16 23:07:09 +01:00
Jonas Jenwald
1ddce76a8b Simplify the JSDocs for the various getDocument Factory-parameters
Given that we nowadays provide default Node.js versions of these Factory-parameters it no longer seems necessary to mention that environment specifically.
2025-01-16 23:01:36 +01:00
Jonas Jenwald
75cba72ca6 [api-major] Replace MissingPDFException and UnexpectedResponseException with one exception
These old exceptions have a fair amount of overlap given how/where they are being used, which is likely because they were introduced at different points in time, hence we can shorten and simplify the code by replacing them with a more general `ResponseException` instead.

Besides an error message, the new `ResponseException` instances also include:
 - A numeric `status` field containing the server response status, similar to the old `UnexpectedResponseException`.

 - A boolean `missing` field, to allow easily detecting the situations where `MissingPDFException` was previously thrown.
2025-01-16 22:51:05 +01:00
calixteman
7a57af12e1
Merge pull request #19329 from calixteman/bug1935076_1
[api-major] Add openjpeg.wasm to pdf.js (bug 1935076)
2025-01-16 22:32:46 +01:00
Calixte Denizet
94b4b54ef6 [api-major] Add openjpeg.wasm to pdf.js (bug 1935076)
In order to fix bug 1935076, we'll have to add a pure js fallback in case wasm is disabled
or simd isn't supported. Unfortunately, this fallback will take some space.

So, the main goal of this patch is to reduce the overall size (by ~93k).
As a side effect, it should make easier to use an other wasm file (which must export
_jp2_decode, _malloc and _free).
2025-01-16 21:09:50 +01:00
Jonas Jenwald
711bf2bd12
Merge pull request #19324 from nicolo-ribaudo/search-dash-date
Allow searching for number-number on two lines
2025-01-15 15:04:09 +01:00
Nicolò Ribaudo
8358ab63b3
Allow searching for number-number on two lines
When a dash separates two digits, it's very likely to not be a hyphen
inserted to split a word into two lines (e.g. "par\n-ser"), but rather
either a minus sign, a range, or a date. For example, in the tracemonkey
PDF there is `2008-02` (a date) split across two lines.

Preserving the dash, similarly to how we do for compound words, allows
searches for "2008-02" to find a match.
2025-01-15 14:23:04 +01:00
Jonas Jenwald
2533a08779
Merge pull request #19327 from Snuffleupagus/issue-19326
Access the number of components correctly in JPEG 2000 images with color space entries (issue 19326)
2025-01-15 11:17:24 +01:00
Jonas Jenwald
e5bc760316 Access the number of components correctly in JPEG 2000 images with color space entries (issue 19326)
This small typo appears to be a regression from PR 18204.
2025-01-15 10:16:06 +01:00
Jonas Jenwald
016de74229
Merge pull request #19320 from nicolo-ribaudo/stamp-double-click
Enable editor when double-clicking on stamp annotation
2025-01-14 12:02:30 +01:00
Nicolò Ribaudo
60dd8147c6
Enable editor when double-clicking on stamp annotation
In Firefox, double-clicking on a stamp annotation triggers text
selection (selecting the last text element in the dom before the
annotation): this triggers the logic to make annotations not interfere
with text selection, which in turns prevents the double click from
triggering the annotation editor.

This commit fixes the problem by making annotations non-selectable, so
that clicking on them does not trigger text selection. Freetext
annotations were already non-selectable, so this commit doesn't change
that. However, we need to explicitly mark text in popups as selectable.
2025-01-14 11:16:59 +01:00
Tim van der Meij
61995e9e37
Merge pull request #19321 from Snuffleupagus/issue-19319
Improve performance when reading very large TrueType "cmap" tables (issue 19319)
2025-01-13 20:21:14 +01:00
Tim van der Meij
0b1a840fa2
Merge pull request #19318 from timvandermeij/puppeteer-24
Upgrade Puppeteer to version 24.0.0
2025-01-13 20:18:56 +01:00
Jonas Jenwald
5e569cade5 Improve performance when reading very large TrueType "cmap" tables (issue 19319)
In the affected font the total number of mapping-entries is `1142348`, and no less than `997473` of them are duplicates.
Given that every duplicate causes a lot of Array elements to be moved this becomes extremely inefficient, which we can avoid by keeping track of seen `charCode`s and directly build the final mappings-Array instead.
2025-01-13 13:09:47 +01:00
Tim van der Meij
d7e6d95304
Upgrade Puppeteer to version 24.0.0
This is a major version bump, but the changelog at
https://github.com/puppeteer/puppeteer/releases/tag/puppeteer-core-v24.0.0
doesn't indicate any breaking changes that should impact us.
2025-01-12 19:48:05 +01:00
Tim van der Meij
e1b972aac3
Merge pull request #19317 from Snuffleupagus/FontRendererFactory-reuse-helpers
Re-use existing helper functions in `FontRendererFactory`
2025-01-12 15:20:43 +01:00
Tim van der Meij
db40155d33
Merge pull request #19313 from timvandermeij/updates
Update dependencies to the most recent versions
2025-01-12 15:14:56 +01:00
Jonas Jenwald
e0be2a02dc Re-use existing helper functions in FontRendererFactory
Currently we re-implement a number of helper functions specifically for this code, which seems completely unnecessary since there's already general purpose ones available in the `src/core/core_utils.js` file.
2025-01-12 13:01:54 +01:00
calixteman
b5218853b4
Merge pull request #19312 from calixteman/improve_touch
[Editor] Improve zooming with a pinch gesture while drawing
2025-01-10 18:30:55 +01:00
calixteman
3cd5521270
Merge pull request #19311 from calixteman/issue19239
[Editor] Don't try to use an non-existing canvas when rendering an in visible existing stamp editor
2025-01-10 16:32:22 +01:00
Calixte Denizet
8483ae0f88 [Editor] Improve zooming with a pinch gesture while drawing
It lets the user make a pinch gesture with a finger on page with a drawing
and the second finger on an other page.
On mobile, it's pretty easy to be in such a situation.
2025-01-10 16:24:58 +01:00
Calixte Denizet
06f72d5662 [Editor] Don't try to use an non-existing canvas when rendering an invisible existing stamp editor
It fixes #19239.

When the canvas isn't existing the editor has no image: it's fine because the editor is invisible.
Once it's made visible, the canvas is set when the annotation layer has been rendered.
2025-01-10 16:05:59 +01:00
Tim van der Meij
45d2e808fd
Update dependencies to the most recent versions 2025-01-09 22:48:00 +01:00
calixteman
f1166f480f
Merge pull request #19309 from calixteman/make_unique_id_draw_layer
[Editor] Set a unique id for each element in the draw layer
2025-01-08 21:56:52 +01:00
Calixte Denizet
586f45b7b8 [Editor] Set a unique id for each element in the draw layer
It avoids any conflict with existing elements when an elment is moved from a page
to an other.
2025-01-08 20:44:15 +01:00
Jonas Jenwald
573e5f54f1
Merge pull request #19305 from Snuffleupagus/issue-18816
Access the bbox/background data correctly in the `MeshShadingPattern` class (issue 18816)
2025-01-08 16:57:14 +01:00
Jonas Jenwald
916fff0e42 Access the bbox/background data correctly in the MeshShadingPattern class (issue 18816)
This appears to have regressed in PR 13808, since it removed the `matrix`-entry from array returned by the `MeshShading.prototype.getIR` method *without* also updating the indexes in the `MeshShadingPattern` constructor.
2025-01-08 15:57:56 +01:00
Jonas Jenwald
115af68f10
Merge pull request #19307 from Snuffleupagus/rm-fuzz-test
Remove the fuzz tests (issue 19297)
2025-01-08 15:57:31 +01:00
Jonas Jenwald
c32d49117c Remove the fuzz tests (issue 19297)
Reasons for removal:

 - These tests never generated any warnings from OSS-Fuzz, in over a year.

 - An error thrown during image decoding will lead to a broken/missing image, not a security problem.

 - These tests rely on the Jazzer.js library, which has a number of problems: It now causes failures in Node.js v23 in the CI tests, it's no longer being maintained upstream, and it lacks support for some (fairly common) CPU architectures.
2025-01-08 15:54:11 +01:00
calixteman
dfbd1d5db6
Merge pull request #19300 from calixteman/remove_useless_css
Remove unused CSS variables
2025-01-07 14:16:03 +01:00
Calixte Denizet
1608e36de6 Remove unused CSS variables 2025-01-07 10:29:23 +01:00
calixteman
e5ad7ef863
Merge pull request #19295 from calixteman/update_moz_toggle.css
Update the toggle-button css after the changes in m-c (bug 1940085)
2025-01-06 19:00:55 +01:00
Calixte Denizet
6db49bedbe Update the toggle-button css after the changes in m-c (bug 1940085) 2025-01-06 18:34:08 +01:00
calixteman
af5beeb861
Merge pull request #19280 from calixteman/issue19274
Let be more tolerant with predefined phone number format
2025-01-06 17:24:05 +01:00
Calixte Denizet
3dd8752283 Let be more tolerant with predefined phone number format
The long US phone number format should be '(999) 999-9999' but the parenthesis
can be omitted or the space replaced with a dash, ...
2025-01-06 15:24:19 +01:00
Tim van der Meij
3001264801
Merge pull request #19291 from timvandermeij/integration-tests-extract-freetext-commit
Implement a commit helper function for the freetext integration tests
2025-01-05 13:20:12 +01:00
Tim van der Meij
26b0d4f749
Merge pull request #19290 from timvandermeij/integration-tests-use-waitforunselectededitor
Use the `waitForUnselectedEditor` integration test helper function more
2025-01-05 13:19:11 +01:00
Tim van der Meij
e57f2c53a4
Implement a commit helper function for the freetext integration tests
The ink editor integration tests already use a helper function for
committing the editor, so this commit mirrors the approach to the
freetext editor integration tests. This has multiple advantages:

- it improves consistency between the various editor integration tests;
- it makes the code easier to read/understand;
- it reduces code duplication (220 lines of code removed);
- it reduces the number of `getEditorSelector` calls (32 calls removed)
  that contained hardcoded IDs, which helps to isolate the tests and to
  simplify follow-up patches.
2025-01-04 20:22:19 +01:00
Tim van der Meij
5126210fff
Use the waitForUnselectedEditor integration test helper function more
This commit applies the `waitForUnselectedEditor` helper function to the
remaining places, that most likely predate the introduction of the
helper function, to deduplicate the code and to have a unified way of
checking if a given editor is unselected.
2025-01-04 20:15:45 +01:00
Tim van der Meij
4d4e1befeb
Merge pull request #19289 from Snuffleupagus/issue-19281
Skip LinkAnnotations when collecting field objects (issue 19281)
2025-01-04 13:32:18 +01:00
Tim van der Meij
3e822399d8
Merge pull request #19278 from Snuffleupagus/more-Dict-iteration
Use `Dict` iteration more (PR 19051 follow-up)
2025-01-04 13:22:51 +01:00
Tim van der Meij
7f5f4d0e66
Merge pull request #19277 from timvandermeij/integration-tests-remove-getselectededitors
Remove the `getSelectedEditors` integration test helper function
2025-01-04 13:21:45 +01:00
Jonas Jenwald
6f062abb76 Skip LinkAnnotations when collecting field objects (issue 19281)
The `/Root/AcroForm/Fields` array contains a "ridiculous" number of LinkAnnotations, which obviously makes no sense since those are not form fields.
To improve performance we'll thus ignore those when collecting the field objects.
2025-01-04 11:54:45 +01:00
Jonas Jenwald
74c1795c9f Use Dict iteration more (PR 19051 follow-up)
There's a few cases where we're looping through the result of `Dict.prototype.getKeys` and then manually look-up the values, which after PR 19051 can be replaced with direct iteration instead.
2025-01-02 15:09:19 +01:00
Tim van der Meij
9d09c56014
Remove the getSelectedEditors integration test helper function
The `getSelectedEditors` function is largely a copy of the `getEditors`
function, with three small differences:

1. `getEditors` allows getting any kind of editor whereas
   `getSelectedEditors` is harcoded to only getting selected editors.
2. `getEditors` returns editor selectors (strings) whereas
   `getSelectedEditors` returns editor IDs (integers).
3. `getSelectedEditors` returns a sorted array of editor IDs whereas
   `getEditors` does not ensure that the array is sorted.

This commit makes the `getEditors` function a drop-in replacement for
the `getSelectedEditors` function to deduplicate the code and to have a
unified way of getting editors.

Note that we don't actually use the contents of the returned array
(only its length), so we can safely change `getEditors` to return a
sorted array of integer editor IDs instead. Sorting the array makes the
return value deterministic, which is a nice property for test stability,
and integer IDs are also easier to handle in test assertions. Note that
the corresponding selector strings can also easily be obtained from the
integer IDs using the `getEditorSelector` function if needed.
2025-01-01 15:58:09 +01:00
Tim van der Meij
5905eb1253
Merge pull request #19276 from timvandermeij/bump
Bump the stable version in `pdfjs.config`
2025-01-01 14:45:30 +01:00
Tim van der Meij
9bd03e81dc
Bump the stable version in pdfjs.config 2025-01-01 14:42:42 +01:00
Jonas Jenwald
f9bea397f8
Merge pull request #19273 from Snuffleupagus/NetworkManager-request-methods
Remove the `requestRange`/`requestFull` methods from the `NetworkManager` class
2024-12-31 16:26:13 +01:00
Jonas Jenwald
01240fda89 Remove the requestRange/requestFull methods from the NetworkManager class
Originally the code in this file was used in both the GENERIC and MOZCENTRAL builds, however that's no longer the case.
Hence we can now directly call `NetworkManager.prototype.request` and remove these old "helper" methods that only had a single call-site each.
2024-12-31 15:57:26 +01:00
Jonas Jenwald
f19b0a1804
Merge pull request #19271 from Snuffleupagus/l10n-update
Update l10n files
2024-12-31 15:42:36 +01:00
Jonas Jenwald
93ce29f136 Update l10n files
Let's ensure that the l10n files are up-to-date before the next release.
2024-12-31 13:51:43 +01:00
Jonas Jenwald
61c3ed47c1
Merge pull request #19269 from Snuffleupagus/image-hasMask
For images that include SMask/Mask entries, ignore an SMask defined in the current graphics state (bug 986450)
2024-12-31 09:07:46 +01:00
Jonas Jenwald
20d5332009 For images that include SMask/Mask entries, ignore an SMask defined in the current graphics state
From section [11.6.4.3 Mask Shape and Opacity](https://opensource.adobe.com/dc-acrobat-sdk-docs/pdfstandards/PDF32000_2008.pdf#G10.4848628) in the PDF specification:
 - An image XObject may contain its own *soft-mask image* in the form of a subsidiary image XObject in the `SMask` entry of the image dictionary (see "Image Dictionaries"). This mask, if present, shall override any explicit or colour key mask specified by the image dictionary's `Mask` entry. Either form of mask in the image dictionary shall override the current soft mask in the graphics state.
2024-12-30 14:25:07 +01:00
Tim van der Meij
8a50d2d302
Merge pull request #19259 from Snuffleupagus/more-wrapReason
Reduce duplication when handling "DocException" and "PasswordRequest" messages
2024-12-29 15:47:11 +01:00
Tim van der Meij
91d801728d
Merge pull request #19262 from Snuffleupagus/CompiledFont-assert-fontMatrix
Assert that the `fontMatrix` is always valid in `compileGlyph`
2024-12-29 15:41:04 +01:00
Tim van der Meij
5b94c865e7
Merge pull request #19263 from Snuffleupagus/Type2Compiled-fix-glyphNameMap
Remove the unused `glyphNameMap` parameter from `Type2Compiled`
2024-12-29 15:39:58 +01:00
Tim van der Meij
b4abfec3ac
Merge pull request #19260 from Snuffleupagus/src-core-simplify-ifs
Shorten some `if`-statements in the `src/core/` folder
2024-12-29 15:38:47 +01:00
Tim van der Meij
0c87fce16e
Merge pull request #19258 from Snuffleupagus/pr-15390-followup
Remove mention of Bower from the README (PR 15390 follow-up)
2024-12-29 15:34:13 +01:00
Jonas Jenwald
aba6369638 Remove the unused glyphNameMap parameter from Type2Compiled
As part of the changes in PR 4259, which landed over ten years ago, the `glyphNameMap` property on `Font`-instances was removed.
The reason that this didn't cause any bugs is that we always fallback on `getGlyphsUnicode`, and when using that data we also rely on `StandardEncoding`, hence we should just remove the unused parameter from the `Type2Compiled` constructor.
2024-12-27 14:31:39 +01:00
Jonas Jenwald
2ae5aa08cc Assert that the fontMatrix is always valid in compileGlyph
While [bug 1893645](https://bugzilla.mozilla.org/show_bug.cgi?id=1893645) was fixed some time ago now, it still shouldn't hurt to also assert that the `fontMatrix` is always valid when invoking the `compileGlyph` method.
2024-12-27 11:41:49 +01:00
Jonas Jenwald
3a797317c8 Shorten some if-statements in the src/core/ folder
Thanks to modern JavaScript there's some existing code that can be shortened slightly.
2024-12-26 18:37:25 +01:00
Jonas Jenwald
6bde49a606 Reduce duplication when handling "DocException" and "PasswordRequest" messages
Rather than having to manually implement the exception-handling for the "DocException" message, we can instead re-use (and slightly extend) the existing `wrapReason` function since that one already does what we need.

Furthermore, we can also simplify handling of the "PasswordRequest" message a little bit and again re-use the `wrapReason` function.

Finally, the patch makes the following smaller changes:
 - Avoid needlessly re-creating exceptions in the `wrapReason` function.
 - Use a slightly shorter parameter name in the `wrapReason` function.
 - Remove the unused entries in the `CallbackKind`/`StreamKind` enumerations.
2024-12-26 12:55:49 +01:00
Jonas Jenwald
c58f69dda4 Remove mention of Bower from the README (PR 15390 follow-up) 2024-12-26 11:34:36 +01:00
Tim van der Meij
4547f230ba
Merge pull request #19254 from timvandermeij/refactor-tests
Improve the test folder structure
2024-12-22 20:22:20 +01:00
Tim van der Meij
cdce9c2bee
Update the page title/favicon of the test runner HTML files
This commit makes sure that the font tests are no longer reported as
being unit tests and that the PDF.js logo is shown in the browser tab to
make PDF.js-specific resources/tabs more easily identifyable during e.g.
development.
2024-12-22 14:08:56 +01:00
Tim van der Meij
22ad864cc7
Move the reporter file to the test root folder
The reporter is used in both the unit and the font tests, so this commit
moves it to the test root folder to more clearly indicate that this is a
shared resource and so the font tests don't have to reach into the unit
tests folder to import it (which improves separation).
2024-12-22 14:08:56 +01:00
Tim van der Meij
a43fc32bf3
Move the integration tests boot file to the integration tests folder
This file is specific to the integration tests, so this commit moves it
to bundle the integration test logic a bit better and to match the
unit/font tests in terms of folder structure for consistency.
2024-12-22 14:08:55 +01:00
Tim van der Meij
94f425d2cc
Merge pull request #19246 from Snuffleupagus/add-missing-startWorkerTask
Add missing `startWorkerTask` calls in the "SaveDocument" handler
2024-12-21 18:20:33 +01:00
Jonas Jenwald
ec1a05c104 Add missing startWorkerTask calls in the "SaveDocument" handler
Without these calls we'll not actually wait for saving to complete when document destruction runs; compare with other `WorkerTask`-usage in this file.
While I cannot imagine that this has caused any problems for library users, the code is however not technically correct as-is.
2024-12-21 14:22:18 +01:00
Jonas Jenwald
dd5618ebed
Merge pull request #19243 from timvandermeij/updates
Update dependencies and translations to the most recent versions
2024-12-20 14:22:51 +01:00
Tim van der Meij
d34ac535f0
Update translations to the most recent versions 2024-12-19 21:17:35 +01:00
Tim van der Meij
af0ffd29fa
Fix vulnerability in the nanoid dependency
This patch is generated with `npm audit fix` and fixes GHSA-mwcw-c2x4-8c55.
2024-12-19 21:14:29 +01:00
Tim van der Meij
d70ede4751
Update dependencies to the most recent versions 2024-12-19 21:13:00 +01:00
Tim van der Meij
7d0fe45443
Merge pull request #19232 from nicolo-ribaudo/scroll-to-search-result
Fix left offset when scrolling to search result
2024-12-19 20:52:46 +01:00
Tim van der Meij
7bd168811c
Merge pull request #19237 from Snuffleupagus/pr-19114-followup-2
Disable the `handle reading ranges with missing/invalid "Content-Range" header` unit-test in Google Chrome (PR 19114 follow-up)
2024-12-19 19:19:20 +01:00
calixteman
2df5d8f3ef
Merge pull request #19238 from calixteman/bug1938087
Take the absolute value of the font size when the annotation contents is in xhtml (bug 1938087)
2024-12-18 17:34:06 +01:00
Jonas Jenwald
0b487774d5
Merge pull request #19236 from Snuffleupagus/issue-19234
Add basic support for non-embedded HelveticaLTStd-Bold fonts (issue 19234)
2024-12-18 17:28:41 +01:00
Calixte Denizet
723ee9bc8c Take the absolute value of the font size when the annotation contents is in xhtml (bug 1938087) 2024-12-18 17:00:45 +01:00
Jonas Jenwald
760c4a0297 Disable the handle reading ranges with missing/invalid "Content-Range" header unit-test in Google Chrome (PR 19114 follow-up)
Note that PR 19212 tried to change the test-server to fix the intermittent failure in Google Chrome, however that unfortunately caused *other* unit-tests to start failing.
As long as this unit-test still runs successfully in Mozilla Firefox that should be enough, and it doesn't seem like a good use of our time to hunt down a bug that only happens in Google Chrome.
2024-12-18 10:15:33 +01:00
Jonas Jenwald
189183aa1a Add basic support for non-embedded HelveticaLTStd-Bold fonts (issue 19234) 2024-12-18 09:39:22 +01:00
Nicolò Ribaudo
4e2aabc5cd
Fix left offset when scrolling to search result
When computing the left offset of the highlighted text, we cannot use
.offsetLeft because the text might have been scaled through CSS, and it
needs to be taken into account.

Use `.getClientRects()`/`.getBoundingClientRect()` instead, which will
return measurements scaled appropriately.
2024-12-16 16:04:13 +01:00
Tim van der Meij
8985d80aef
Merge pull request #19226 from Snuffleupagus/pr-19216-followup
Disable touch-zooming, in the viewer, if `AbortSignal.any` is unsupported (PR 19216 follow-up)
2024-12-15 19:15:32 +01:00
Jonas Jenwald
29c3b7bec5 Disable touch-zooming, in the viewer, if AbortSignal.any is unsupported (PR 19216 follow-up)
This way loading of the *entire* viewer won't break in older browsers that lack `AbortSignal.any` support; see https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal/any_static#browser_compatibility
2024-12-15 18:13:38 +01:00
Jonas Jenwald
b781b55ea0
Merge pull request #19225 from Snuffleupagus/version-4.10
Bump library version to `4.10`
2024-12-15 16:34:52 +01:00
Jonas Jenwald
780692b226 Bump library version to 4.10 2024-12-15 16:30:31 +01:00
Tim van der Meij
ac81de6ab4
Merge pull request #19224 from Snuffleupagus/pr-18776-followup
[api-minor] Remove deprecated `getDocument` options (PR 18776 follow-up)
2024-12-15 15:52:34 +01:00
Tim van der Meij
322616988e
Merge pull request #19214 from Snuffleupagus/issue-19205
Don't remove trailing regular spaces from the "raw" response headers (issue 19205)
2024-12-15 15:51:20 +01:00
Jonas Jenwald
490e740365 [api-minor] Remove deprecated getDocument options (PR 18776 follow-up) 2024-12-15 14:13:44 +01:00
calixteman
a8c35a9e0c
Merge pull request #19219 from calixteman/pinch_editor
[Editor] Add the ability to resize an editor in using a pinch gesture
2024-12-14 21:50:51 +01:00
Calixte Denizet
4ed7f7f1ee [Editor] Add the ability to resize an editor in using a pinch gesture 2024-12-14 19:39:51 +01:00
calixteman
8fa4398266
Merge pull request #19216 from calixteman/extract_pinch
Move the pinch stuff in its own file in order to use for editors
2024-12-12 10:15:05 +01:00
Calixte Denizet
e0b63ecd03 Move the pinch stuff in its own file in order to use for editors 2024-12-11 23:20:01 +01:00
calixteman
a9c5bb25b8
Merge pull request #19215 from calixteman/issue18911
[Editor] Avoid to focus an existing editor when enabling the layer
2024-12-11 22:18:17 +01:00
Calixte Denizet
d61b882888 [Editor] Avoid to focus an existing editor when enabling the layer
It fixes #18911.
2024-12-11 15:06:56 +01:00
Jonas Jenwald
08e54053ff Don't remove trailing regular spaces from the "raw" response headers (issue 19205)
This bug only seems to reproduce in Google Chrome, since browsers apparently sort response headers differently.
When the issue occurs the "raw" response headers string looks like this:
```
content-length: 525404\r\ncontent-type: \r\n
```
and since we trim *any* leading/trailing white-space characters the "content-type" header isn't detected correctly, which thus leads to `new Headers(...)` throwing.

Hence we'll keep regular spaces at the end of the "raw" response headers string, while still removing all other kinds of trailing white-space characters.

*Note:* The response headers parsing was based on https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/getAllResponseHeaders#examples
2024-12-11 12:16:31 +01:00
calixteman
fbac4ab5f3
Merge pull request #19209 from calixteman/draw_touch_screen
[Editor] Improve drawing on a touch screen.
2024-12-10 22:40:13 +01:00
Calixte Denizet
89f61b4262 [Editor] Improve drawing on a touch screen.
- it's now possible to start a drawing with a pen and use fingers to zoom
  or scroll without interacting with the current drawing;
- it's now possible to draw with a finger and them zoom with two fingers.
2024-12-10 21:54:29 +01:00
calixteman
4d228818a9
Merge pull request #19210 from calixteman/puppeteer_23.10.3
Update Puppeteer to version 23.10.3
2024-12-10 21:10:21 +01:00
Calixte Denizet
b7ab5ee018 Update Puppeteer to version 23.10.3 2024-12-10 19:59:54 +01:00
calixteman
6e33f23757
Merge pull request #19208 from calixteman/puppeteer_23.10.2
Update Puppeteer to version 23.10.2
2024-12-10 19:56:16 +01:00
Calixte Denizet
73701ad873 Update Puppeteer to version 23.10.2 2024-12-10 19:55:55 +01:00
calixteman
b35999d837
Merge pull request #19198 from calixteman/fix_intermittent_itest_chrome
Fix intermittent failures when moving a freetext annotation in integration tests
2024-12-10 16:56:58 +01:00
Calixte Denizet
74a377f72f Fix intermittent failures when moving a freetext annotation in integration tests
When an editor is moved with the keyboard or in dragging it, it is moved in the DOM in order
to make screen readers happy. But this move is slightly postponed thanks to a setTimeout(..., 0).
The failures were very likely due to the fact that intermittently the DOM move was done in
the middle of the next key sequence which was making the move on screen failing.
2024-12-10 16:14:26 +01:00
calixteman
aa589b9068
Merge pull request #19206 from nicolo-ribaudo/canvas-prepend
Simplify logic to insert canvas as first element
2024-12-10 14:59:18 +01:00
Nicolò Ribaudo
62db66dd46
Simplify logic to insert canvas as first element
Instead of conditionally checking if the `.cavnasWrapper` already
has a child element and then inserting the `canvas` before it, we can
use `.prepend` which always injects the new element as the first
child.
2024-12-10 12:00:09 +01:00
calixteman
44421d36f6
Merge pull request #19201 from calixteman/fix_resize_stamp
[Editor] When resizing a stamp annotation, the opposite corner must stay fixed
2024-12-10 11:00:01 +01:00
calixteman
f9ae9b06e8
Merge pull request #19204 from calixteman/set_canvas_as_first_child
Make sure the canvas is always the first child of its wrapper
2024-12-09 21:28:21 +01:00
Calixte Denizet
3402b727ee Make sure the canvas is always the first child of its wrapper
While drawing, in zooming fast enough, it's possible, intermittently, to have the canvas
after the svg which makes the svg invisible.
So this patch makes sure to have the canvas at the right position.
2024-12-09 19:55:37 +01:00
calixteman
898be9ef5e
Merge pull request #19202 from calixteman/avoid_to_lose_focus
[Editor] Don't commit the current drawing while zooming
2024-12-09 19:00:26 +01:00
calixteman
438c641da2
Merge pull request #19203 from calixteman/update_openjpeg_2.5.3
Update OpenJPEG to 2.5.3
2024-12-09 18:59:26 +01:00
Jonas Jenwald
39bfc92b8e
Merge pull request #19200 from Snuffleupagus/delete-raw-path
Remove the raw path-strings after creating the actual `Path2D` glyph-objects
2024-12-09 18:46:34 +01:00
Calixte Denizet
19ea64c6d7 Update OpenJPEG to 2.5.3 2024-12-09 18:02:18 +01:00
Calixte Denizet
166a529ddd [Editor] Don't commit the current drawing while zooming 2024-12-09 17:25:36 +01:00
Calixte Denizet
99f3e6b4ec [Editor] When resizing a stamp annotation, the opposite corner must stay fixed
It was due the resize observer which is removed thanks to this patch.
In order to reuse the dragAndDrop function in test, this patch slighty refactors it
in order to make it easier to use.
2024-12-09 16:07:43 +01:00
Jonas Jenwald
6153b15231 Remove the raw path-strings after creating the actual Path2D glyph-objects
The `Path2D` glyph-objects are cached on the `FontFaceObject`-instance, so we can save a little bit of memory by removing the raw path-strings once they're no longer needed.
2024-12-09 15:09:18 +01:00
calixteman
99eefb7b71
Merge pull request #19189 from calixteman/improve_font_drawer
Improve perfs of the font renderer
2024-12-09 14:15:15 +01:00
Jonas Jenwald
5dc2d257ad
Merge pull request #19196 from Snuffleupagus/issue-19176
Take the `userUnit` into account in the `PageViewport` class (issue 19176)
2024-12-09 13:38:31 +01:00
Calixte Denizet
2b05924504 Improve perfs of the font renderer
Some SVG paths are generated from the font and used in the main thread
to render the glyphs.
2024-12-08 17:12:10 +01:00
calixteman
6177bb5aa8
Merge pull request #19197 from calixteman/test_disableFontFace
Add a ref test for setting disableFontFace to true
2024-12-08 16:17:42 +01:00
Calixte Denizet
f6662d3f7c Add a ref test for setting disableFontFace to true 2024-12-08 16:06:25 +01:00
Jonas Jenwald
c6e3fc4fe6 Take the userUnit into account in the PageViewport class (issue 19176) 2024-12-08 15:51:04 +01:00
Tim van der Meij
35573cb8e8
Merge pull request #19192 from timvandermeij/scripting-intermittent
Fix intermittent issues in the `issue14307.pdf` integration tests
2024-12-08 14:59:24 +01:00
Tim van der Meij
e74080915d
Fix intermittent issues in the issue14307.pdf integration tests
The `must check input for US zip format` integration test fails pretty
consistently in Puppeteer 23.4.0+ with `Expected '12341' to equal
'12345'`. This is reproducible with the `pdf.sandbox.external.js` hack
from https://github.com/mozilla/pdf.js/issues/18396#issuecomment-2211273743.
Investigation uncovered two issues at play here:

1. We do two `clearInput` calls, but don't await processing of the two
   sandbox events that are triggered by that action. The three tests that
   use `issue14307.pdf` are in different `describe` blocks and therefore
   reload the PDF file, so we can simply remove those calls because the
   inputs are already empty by default.

2. We don't await processing of the sandbox events that occur after
   switching to another text field. This causes the expectation failure
   because the typing actions will happen too soon and interfere with
   the sandbox event processing. We solve the issue by explicitly
   awaiting the sandbox roundtrip.

Moreover, similar to PR #19001 and #18399 we remove any remaining room
for intermittent issues by directly checking for the expected value,
which also results in shorter code.
2024-12-07 19:28:26 +01:00
Tim van der Meij
3f1d07a35e
Merge pull request #19191 from Snuffleupagus/Node-legacy-warn
Print more warnings about potential problems in Node.js environments
2024-12-07 14:54:57 +01:00
Tim van der Meij
67076b6220
Merge pull request #19190 from timvandermeij/updates
Update dependencies and translations to the most recent versions
2024-12-07 14:52:40 +01:00
Jonas Jenwald
c60a6d1ebd Print more warnings about potential problems in Node.js environments
- Warn if the "regular" PDF.js build is used in Node.js environments, since that won't load any of the relevant polyfills.

 - Warn if the `require` function cannot be accessed, since currently we're just "swallowing" any errors.
2024-12-07 14:08:09 +01:00
Tim van der Meij
2738d1e4f6
Update translations to the most recent versions 2024-12-07 13:44:57 +01:00
Tim van der Meij
129fc66f65
Upgrade eslint-plugin-perfectionist to version 4.2.0
This requires two changes on our side:

- The order of exports in `web/viewer{-geckoview}.js` changes slightly
  because `eslint-plugin-perfectionist` aligned the sorting order with
  the `eslint-plugin-sort-exports` plugin we used before. This restores
  the change from commit 347f155.
- The `eslint-plugin-import` plugin contains a bug that causes the new
  version of `eslint-plugin-perfectionist` to be reported as unresolved.
  This issue is tracked upstream, and since the plugin works fine we
  can simply extend the ignore list we already have to avoid this error
  until the upstream bug is fixed.
2024-12-07 13:44:48 +01:00
Tim van der Meij
7d1ca73acc
Update dependencies to the most recent versions 2024-12-07 13:22:44 +01:00
Jonas Jenwald
b870c5d2ad
Merge pull request #19185 from Snuffleupagus/issue-19175
Support toggling the `PDFFindBar` options with the `Enter` key (issue 19175)
2024-12-06 23:32:58 +01:00
calixteman
23c42f891b
Merge pull request #19184 from calixteman/issue19182
Get the first codepoint instead of the first char when using the toUnicode map
2024-12-06 18:31:30 +01:00
Calixte Denizet
6fe6b6d6b7 Get the first codepoint instead of the first char when using the toUnicode map
It fixes #19182.
2024-12-06 18:25:13 +01:00
Jonas Jenwald
49326f71c2 Support toggling the PDFFindBar options with the Enter key (issue 19175)
These DOM elements are `input type="checkbox"` and (natively) only support being toggled with the `Space` key, however we can extend an existing event-listener to "manually" support the `Enter` key as well.
2024-12-06 17:53:28 +01:00
Jonas Jenwald
c198e0b446
Merge pull request #19148 from nicolo-ribaudo/error-preserve-trace
Do not stringify errors when logging them
2024-12-06 17:11:33 +01:00
Nicolò Ribaudo
202b26487f
Do not stringify errors when logging them
Converting errors to string drops their stack trace, making it more
difficult to debug their actual reason. We can instead pass the error
objects as-is to console.warn/error, so that Firefox/Chrome devtools
will show both the stack trace of the console.warn/error call, and the
original stack trace of the error.

This commit also enables the `unicorn/no-console-spaces` ESLint rule,
which avoids accidental extra spaces when passing multiple parameters to
`console.*` methods.
2024-12-06 14:47:22 +01:00
Jonas Jenwald
60eba287d4
Merge pull request #19114 from Snuffleupagus/issue-19075
Ensure that a missing/invalid "Content-Range" header is handled in `PDFNetworkStream` (issue 19075)
2024-12-06 12:31:18 +01:00
Jonas Jenwald
eff8ede33e Make the onError callback required in NetworkManager
This helps ensure that loading errors are always handled correctly, and note that both `PDFNetworkStreamFullRequestReader` and `PDFNetworkStreamRangeRequestReader` already provided such a callback.
2024-12-06 12:09:36 +01:00
Jonas Jenwald
2661d0623b Ensure that a missing/invalid "Content-Range" header is handled in PDFNetworkStream (issue 19075)
In the event that the "Content-Range" header is missing/invalid, loading will now be aborted rather than hanging indefinitely.
2024-12-06 12:09:34 +01:00
calixteman
e04b62ba2d
Merge pull request #19164 from calixteman/issue18622
When zooming replace the css-zoomed canvas by the new one only when rendering is finished
2024-12-06 11:44:32 +01:00
Calixte Denizet
f3038406b1 When zooming replace the css-zoomed canvas by the new one only when rendering is finished
It fixes #18622.

It avoids to recreate a canvasWrapper element in order minimize the DOM operations.
2024-12-05 23:15:04 +01:00
Tim van der Meij
ef6ecee34c
Merge pull request #19178 from timvandermeij/bump
Bump the stable version in `pdfjs.config`
2024-12-05 22:30:35 +01:00
Tim van der Meij
34390ca53a
Bump the stable version in pdfjs.config 2024-12-05 22:25:31 +01:00
Tim van der Meij
a4eb8407c1
Merge pull request #19149 from Snuffleupagus/issue-19145
Prevent Webpack from resolving `import.meta.url` statements during building (issue 19145)
2024-12-05 21:38:26 +01:00
Tim van der Meij
f0a8a799a7
Merge pull request #19177 from calixteman/issue19171
Avoid to display an alert or a confirm dialog if the message is empty
2024-12-05 21:36:54 +01:00
Calixte Denizet
d1db8d6294 Avoid to display an alert or a confirm dialog if the message is empty
It fixes #19171.
2024-12-05 21:04:07 +01:00
calixteman
f180de41f3
Merge pull request #19174 from calixteman/ink_update_width
[Editor] Correctly update the current drawing when zooming
2024-12-05 16:06:34 +01:00
Jonas Jenwald
28d801e081
Merge pull request #19172 from Snuffleupagus/toggleButton-hover
Ensure that the `.toggleButton`, as used in the findbar, always have visible hover/focus state (issue 19165)
2024-12-05 15:24:46 +01:00
Calixte Denizet
dfa0e79553 [Editor] Correctly update the current drawing when zooming
We were trying to update the drawing on the current page but if the drawing is an another
page then it wasn't updated.
2024-12-05 14:22:02 +01:00
calixteman
9cbc5baafd
Merge pull request #19163 from calixteman/fix_new_ink_itest
Correctly wait for the editor mode when double clicking on an annotation in integration tests
2024-12-05 13:38:12 +01:00
Jonas Jenwald
61e2eceff6 Ensure that the .toggleButton, as used in the findbar, always have visible hover/focus state (issue 19165)
Similar to the regular toolbarButtons that can be toggled, this ensure that it's always possible to tell when the findbar "buttons" are hovered/focused.
2024-12-05 13:07:57 +01:00
Jonas Jenwald
2ad8f6155c
Merge pull request #19161 from Snuffleupagus/Promise-try
Introduce `Promise.try()` usage in the code-base
2024-12-05 10:48:29 +01:00
Calixte Denizet
3ac55501e9 Correctly wait for the editor mode when double clicking on an annotation in integration tests 2024-12-04 18:42:49 +01:00
Jonas Jenwald
ef0331877d Introduce Promise.try() usage in the code-base
This simplifies the creation of Promises in some cases; see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/try
2024-12-04 10:31:42 +01:00
calixteman
11ce57ac22
Merge pull request #19160 from calixteman/fix_css_message_bar
Fix unused css variables (follow-up of #18900)
2024-12-04 09:45:17 +01:00
Calixte Denizet
1cd3eb75d5 Fix unused css variables (follow-up of #18900) 2024-12-04 09:15:01 +01:00
calixteman
9a4b7c2612
Merge pull request #19155 from calixteman/bug1929311
[Editor] Corrrectly get the words from the alt-text when reporting the telemetry (bug 1929311)
2024-12-03 19:27:15 +01:00
Calixte Denizet
e161826a44 [Editor] Corrrectly get the words from the alt-text when reporting the telemetry (bug 1929311) 2024-12-03 19:02:58 +01:00
calixteman
a5ce71247b
Merge pull request #18900 from ryzokuken/popup-undo-annotation
Annotation deletion popup (bug 1899731)
2024-12-03 16:53:48 +01:00
Aditi
41bf874461 Add tests for annotation delete popup 2024-12-03 11:03:15 +01:00
Ujjwal Sharma
dd82d78a2d Pop open a message when user deletes an annotation
When a user deletes any number of annotations, they are notified of the action
by a popup message with an undo button. Besides that, this change reuses the
existing messageBar CSS class from the new alt-text dialog as much as possible.
2024-12-03 11:03:15 +01:00
Ujjwal Sharma
962eb6206a Break messageBar class out
Move .messageBar out of .dialog into its own standalone class in order
to reuse as much of it for the upcoming feature for an undo message for
annotations.
2024-12-02 23:01:22 +01:00
Jonas Jenwald
f8d11a3a3a
Merge pull request #19074 from Rob--W/issue-12744-test
Add test cases for redirected responses
2024-12-02 19:06:55 +01:00
calixteman
8a2bdb1a05
Merge pull request #19151 from calixteman/edit_inks
[Editor] Make ink annotation editable
2024-12-02 18:30:40 +01:00
Rob Wu
f97b4b9a66 Add test cases for redirected responses
Regression tests for issue #12744 and PR #19028
2024-12-02 17:57:49 +01:00
Rob Wu
28b0220bc2 Replace createTemporaryNodeServer with TestPdfsServer
Some tests rely on the presence of a server that serves PDF files.
When tests are run from a web browser, the test files and PDF files are
served by the same server (WebServer), but in Node.js that server is not
around.

Currently, the tests that depend on it start a minimal Node.js server
that re-implements part of the functionality from WebServer.

To avoid code duplication when tests depend on more complex behaviors,
this patch replaces createTemporaryNodeServer with the existing
WebServer, wrapped in a new test utility that has the same interface in
Node.js and non-Node.js environments (=TestPdfsServer).

This patch has been tested by running the refactored tests in the
following three configurations:

1. From the browser:
   - http://localhost:8888/test/unit/unit_test.html?spec=api
   - http://localhost:8888/test/unit/unit_test.html?spec=fetch_stream

2. Run specific tests directly with jasmine without legacy bundling:
   `JASMINE_CONFIG_PATH=test/unit/clitests.json ./node_modules/.bin/jasmine --filter='^api|^fetch_stream'`

3. `gulp unittestcli`
2024-12-02 17:57:49 +01:00
Calixte Denizet
7e02c77250 [Editor] Make ink annotation editable 2024-12-02 17:15:33 +01:00
calixteman
97c7a8eb7a
Merge pull request #19144 from calixteman/no_focus_if_invisible
[Editor] Don't focus a newly added drawing if it isn't visible on screen
2024-12-02 14:02:01 +01:00
calixteman
36b1ba8eca
Merge pull request #19142 from calixteman/rotated_ink
Fix the clickable area for rotated ink annotations
2024-12-02 14:01:26 +01:00
Jonas Jenwald
a2b889bb9a Prevent Webpack from resolving import.meta.url statements during building (issue 19145)
This fixes a Node.js-specific regression from PR 18959.
2024-12-02 13:38:22 +01:00
Calixte Denizet
673c93e832 [Editor] Don't focus a newly added drawing if it isn't visible on screen 2024-12-02 11:06:13 +01:00
Calixte Denizet
1460a8128a Fix the clickable area for rotated ink annotations 2024-12-02 09:48:22 +01:00
Tim van der Meij
d448953166
Merge pull request #19139 from timvandermeij/bump
Bump the stable version in `pdfjs.config`
2024-12-01 20:07:54 +01:00
Tim van der Meij
33da75fb36
Bump the stable version in pdfjs.config 2024-12-01 20:04:54 +01:00
569 changed files with 63272 additions and 22482 deletions

View File

@ -1,4 +1,4 @@
blank_issues_enabled: true blank_issues_enabled: false
contact_links: contact_links:
- name: Need help? - name: Need help?
url: https://github.com/mozilla/pdf.js/discussions url: https://github.com/mozilla/pdf.js/discussions

View File

@ -25,3 +25,5 @@ CO01:
exclusions: exclusions:
files: [] files: []
messages: [] messages: []
VC:
disabled: false

View File

@ -11,16 +11,16 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
node-version: [20, 22, 23] node-version: [20, 22, 24]
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v6
with: with:
fetch-depth: 0 fetch-depth: 0
- name: Use Node.js ${{ matrix.node-version }} - name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4 uses: actions/setup-node@v6
with: with:
node-version: ${{ matrix.node-version }} node-version: ${{ matrix.node-version }}

View File

@ -18,18 +18,18 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v6
with: with:
fetch-depth: 0 fetch-depth: 0
- name: Initialize CodeQL - name: Initialize CodeQL
uses: github/codeql-action/init@v3 uses: github/codeql-action/init@v4
with: with:
languages: ${{ matrix.language }} languages: ${{ matrix.language }}
queries: security-and-quality queries: security-and-quality
- name: Autobuild CodeQL - name: Autobuild CodeQL
uses: github/codeql-action/autobuild@v3 uses: github/codeql-action/autobuild@v4
- name: Perform CodeQL analysis - name: Perform CodeQL analysis
uses: github/codeql-action/analyze@v3 uses: github/codeql-action/analyze@v4

View File

@ -25,12 +25,12 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v6
- name: Use Python 3.13 - name: Use Python 3.14
uses: actions/setup-python@v5 uses: actions/setup-python@v6
with: with:
python-version: '3.13' python-version: '3.14'
cache: 'pip' cache: 'pip'
- name: Install Fluent dependencies - name: Install Fluent dependencies

View File

@ -36,22 +36,22 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v6
with: with:
fetch-depth: 0 fetch-depth: 0
- name: Use Node.js ${{ matrix.node-version }} - name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4 uses: actions/setup-node@v6
with: with:
node-version: ${{ matrix.node-version }} node-version: ${{ matrix.node-version }}
- name: Install dependencies - name: Install dependencies
run: npm ci run: npm ci
- name: Use Python 3.13 - name: Use Python 3.14
uses: actions/setup-python@v5 uses: actions/setup-python@v6
with: with:
python-version: '3.13' python-version: '3.14'
cache: 'pip' cache: 'pip'
- name: Install Fonttools - name: Install Fonttools

View File

@ -15,12 +15,12 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v6
with: with:
fetch-depth: 0 fetch-depth: 0
- name: Use Node.js ${{ matrix.node-version }} - name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4 uses: actions/setup-node@v6
with: with:
node-version: ${{ matrix.node-version }} node-version: ${{ matrix.node-version }}

View File

@ -17,12 +17,12 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v6
with: with:
fetch-depth: 0 fetch-depth: 0
- name: Use Node.js ${{ matrix.node-version }} - name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4 uses: actions/setup-node@v6
with: with:
node-version: ${{ matrix.node-version }} node-version: ${{ matrix.node-version }}
registry-url: 'https://registry.npmjs.org' registry-url: 'https://registry.npmjs.org'
@ -34,6 +34,4 @@ jobs:
run: npx gulp dist run: npx gulp dist
- name: Publish the `pdfjs-dist` library to NPM - name: Publish the `pdfjs-dist` library to NPM
run: npm publish ./build/dist --provenance run: npm publish ./build/dist
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

View File

@ -17,12 +17,12 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v6
with: with:
fetch-depth: 0 fetch-depth: 0
- name: Use Node.js ${{ matrix.node-version }} - name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4 uses: actions/setup-node@v6
with: with:
node-version: ${{ matrix.node-version }} node-version: ${{ matrix.node-version }}
@ -49,7 +49,7 @@ jobs:
INPUT_PATH: build/gh-pages INPUT_PATH: build/gh-pages
- name: Upload the website - name: Upload the website
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v5
with: with:
name: github-pages name: github-pages
path: ${{ runner.temp }}/website.tar path: ${{ runner.temp }}/website.tar

View File

@ -15,12 +15,12 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v6
with: with:
fetch-depth: 0 fetch-depth: 0
- name: Use Node.js ${{ matrix.node-version }} - name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4 uses: actions/setup-node@v6
with: with:
node-version: ${{ matrix.node-version }} node-version: ${{ matrix.node-version }}

View File

@ -5,6 +5,8 @@ node_modules/
external/bcmaps/ external/bcmaps/
external/builder/fixtures/ external/builder/fixtures/
external/builder/fixtures_babel/ external/builder/fixtures_babel/
external/openjpeg/
external/qcms/
external/quickjs/ external/quickjs/
test/stats/results/ test/stats/results/
test/tmp/ test/tmp/

View File

@ -9,10 +9,17 @@
"overrides": [ "overrides": [
{ {
files: ["tsconfig.json"], "files": ["tsconfig.json", ".prettierrc"],
options: { "options": {
parser: "json", "parser": "json"
}, }
}, },
{
"files": ["**/*.html"],
"options": {
"parser": "html",
"printWidth": 160
}
}
] ]
} }

View File

@ -1,4 +1,4 @@
# PDF.js [![Build Status](https://github.com/mozilla/pdf.js/workflows/CI/badge.svg?branch=master)](https://github.com/mozilla/pdf.js/actions?query=workflow%3ACI+branch%3Amaster) # PDF.js [![CI](https://github.com/mozilla/pdf.js/actions/workflows/ci.yml/badge.svg?query=branch%3Amaster)](https://github.com/mozilla/pdf.js/actions/workflows/ci.yml?query=branch%3Amaster)
[PDF.js](https://mozilla.github.io/pdf.js/) is a Portable Document Format (PDF) viewer that is built with HTML5. [PDF.js](https://mozilla.github.io/pdf.js/) is a Portable Document Format (PDF) viewer that is built with HTML5.
@ -14,7 +14,7 @@ get involved, visit:
+ [Issue Reporting Guide](https://github.com/mozilla/pdf.js/blob/master/.github/CONTRIBUTING.md) + [Issue Reporting Guide](https://github.com/mozilla/pdf.js/blob/master/.github/CONTRIBUTING.md)
+ [Code Contribution Guide](https://github.com/mozilla/pdf.js/wiki/Contributing) + [Code Contribution Guide](https://github.com/mozilla/pdf.js/wiki/Contributing)
+ [Frequently Asked Questions](https://github.com/mozilla/pdf.js/wiki/Frequently-Asked-Questions) + [Frequently Asked Questions](https://github.com/mozilla/pdf.js/wiki/Frequently-Asked-Questions)
+ [Good Beginner Bugs](https://github.com/mozilla/pdf.js/issues?direction=desc&labels=good-beginner-bug&page=1&sort=created&state=open) + [Good Beginner Bugs](https://github.com/mozilla/pdf.js/issues?q=is%3Aissue%20state%3Aopen%20label%3Agood-beginner-bug)
+ [Projects](https://github.com/mozilla/pdf.js/projects) + [Projects](https://github.com/mozilla/pdf.js/projects)
Feel free to stop by our [Matrix room](https://chat.mozilla.org/#/room/#pdfjs:mozilla.org) for questions or guidance. Feel free to stop by our [Matrix room](https://chat.mozilla.org/#/room/#pdfjs:mozilla.org) for questions or guidance.
@ -90,7 +90,7 @@ be loaded by `pdf.js`. The PDF.js files are large and should be minified for pro
## Using PDF.js in a web application ## Using PDF.js in a web application
To use PDF.js in a web application you can choose to use a pre-built version of the library To use PDF.js in a web application you can choose to use a pre-built version of the library
or to build it from source. We supply pre-built versions for usage with NPM and Bower under or to build it from source. We supply pre-built versions for usage with NPM under
the `pdfjs-dist` name. For more information and examples please refer to the the `pdfjs-dist` name. For more information and examples please refer to the
[wiki page](https://github.com/mozilla/pdf.js/wiki/Setup-pdf.js-in-a-website) on this subject. [wiki page](https://github.com/mozilla/pdf.js/wiki/Setup-pdf.js-in-a-website) on this subject.

View File

@ -33,12 +33,14 @@ export default [
"external/bcmaps/", "external/bcmaps/",
"external/builder/fixtures/", "external/builder/fixtures/",
"external/builder/fixtures_babel/", "external/builder/fixtures_babel/",
"external/quickjs/",
"external/openjpeg/", "external/openjpeg/",
"external/qcms/",
"external/quickjs/",
"test/stats/results/", "test/stats/results/",
"test/tmp/", "test/tmp/",
"test/pdfs/", "test/pdfs/",
"web/locale/", "web/locale/",
"web/wasm/",
"**/*~/", "**/*~/",
], ],
}, },
@ -74,7 +76,7 @@ export default [
globals: { globals: {
...globals.worker, ...globals.worker,
PDFJSDev: "readonly", PDFJSDev: "readonly",
__non_webpack_import__: "readonly", __raw_import__: "readonly",
}, },
ecmaVersion: 2025, ecmaVersion: 2025,
@ -91,6 +93,17 @@ export default [
"import/no-empty-named-blocks": "error", "import/no-empty-named-blocks": "error",
"import/no-commonjs": "error", "import/no-commonjs": "error",
"import/no-mutable-exports": "error", "import/no-mutable-exports": "error",
"import/no-restricted-paths": [
"error",
{
zones: [
{
target: "./web",
from: "./src",
},
],
},
],
"import/no-self-import": "error", "import/no-self-import": "error",
"import/no-unresolved": [ "import/no-unresolved": [
"error", "error",
@ -103,6 +116,8 @@ export default [
"web", "web",
"fluent-bundle", "fluent-bundle",
"fluent-dom", "fluent-dom",
// See https://github.com/firebase/firebase-admin-node/discussions/1359.
"eslint-plugin-perfectionist",
], ],
}, },
], ],
@ -111,12 +126,16 @@ export default [
"perfectionist/sort-exports": "error", "perfectionist/sort-exports": "error",
"perfectionist/sort-named-exports": "error", "perfectionist/sort-named-exports": "error",
"unicorn/no-abusive-eslint-disable": "error", "unicorn/no-abusive-eslint-disable": "error",
"unicorn/no-array-push-push": "error", "unicorn/no-array-reduce": ["error", { allowSimpleOperations: true }],
"unicorn/no-instanceof-array": "error", "unicorn/no-console-spaces": "error",
"unicorn/no-instanceof-builtins": "error",
"unicorn/no-invalid-remove-event-listener": "error", "unicorn/no-invalid-remove-event-listener": "error",
"unicorn/no-new-buffer": "error", "unicorn/no-new-buffer": "error",
"unicorn/no-single-promise-in-promise-methods": "error", "unicorn/no-single-promise-in-promise-methods": "error",
"unicorn/no-typeof-undefined": ["error", { checkGlobalVariables: false }], "unicorn/no-typeof-undefined": ["error", { checkGlobalVariables: false }],
"unicorn/no-unnecessary-array-flat-depth": "error",
"unicorn/no-unnecessary-array-splice-count": "error",
"unicorn/no-unnecessary-slice-end": "error",
"unicorn/no-useless-promise-resolve-reject": "error", "unicorn/no-useless-promise-resolve-reject": "error",
"unicorn/no-useless-spread": "error", "unicorn/no-useless-spread": "error",
"unicorn/prefer-array-find": "error", "unicorn/prefer-array-find": "error",
@ -128,6 +147,7 @@ export default [
"unicorn/prefer-date-now": "error", "unicorn/prefer-date-now": "error",
"unicorn/prefer-dom-node-append": "error", "unicorn/prefer-dom-node-append": "error",
"unicorn/prefer-dom-node-remove": "error", "unicorn/prefer-dom-node-remove": "error",
"unicorn/prefer-import-meta-properties": "error",
"unicorn/prefer-includes": "error", "unicorn/prefer-includes": "error",
"unicorn/prefer-logical-operator-over-ternary": "error", "unicorn/prefer-logical-operator-over-ternary": "error",
"unicorn/prefer-modern-dom-apis": "error", "unicorn/prefer-modern-dom-apis": "error",
@ -135,6 +155,7 @@ export default [
"unicorn/prefer-negative-index": "error", "unicorn/prefer-negative-index": "error",
"unicorn/prefer-optional-catch-binding": "error", "unicorn/prefer-optional-catch-binding": "error",
"unicorn/prefer-regexp-test": "error", "unicorn/prefer-regexp-test": "error",
"unicorn/prefer-single-call": "error",
"unicorn/prefer-string-replace-all": "error", "unicorn/prefer-string-replace-all": "error",
"unicorn/prefer-string-starts-ends-with": "error", "unicorn/prefer-string-starts-ends-with": "error",
"unicorn/prefer-ternary": ["error", "only-single-line"], "unicorn/prefer-ternary": ["error", "only-single-line"],
@ -286,10 +307,25 @@ export default [
selector: "NewExpression[callee.name='Name']", selector: "NewExpression[callee.name='Name']",
message: "Use `Name.get()` rather than `new Name()`.", message: "Use `Name.get()` rather than `new Name()`.",
}, },
{
selector: "NewExpression[callee.name='ObjectLoader']",
message:
"Use `ObjectLoader.load()` rather than `new ObjectLoader()`.",
},
{ {
selector: "NewExpression[callee.name='Ref']", selector: "NewExpression[callee.name='Ref']",
message: "Use `Ref.get()` rather than `new Ref()`.", message: "Use `Ref.get()` rather than `new Ref()`.",
}, },
{
selector: "ExportNamedDeclaration[declaration]",
message:
"Separate the declaration and the export statement, using `export { ... }`.",
},
{
selector: "ExportDefaultDeclaration:has(> :declaration)",
message:
"Separate the declaration and the export statement, using `export default <variable name>`.",
},
], ],
"no-unneeded-ternary": "error", "no-unneeded-ternary": "error",
"operator-assignment": "error", "operator-assignment": "error",
@ -349,15 +385,6 @@ export default [
"jasmine/prefer-toHaveBeenCalledWith": "off", "jasmine/prefer-toHaveBeenCalledWith": "off",
}, },
}, },
{
files: jsFiles("test/fuzz"),
rules: {
"import/no-unresolved": [
"error",
{ ignore: [".*/build/image_decoders/.*"] },
],
},
},
{ {
files: jsFiles("test/unit"), files: jsFiles("test/unit"),
rules: { rules: {

View File

@ -1,4 +1,4 @@
<!DOCTYPE html> <!doctype html>
<!-- <!--
Copyright 2014 Mozilla Foundation Copyright 2014 Mozilla Foundation
@ -15,10 +15,10 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
--> -->
<html dir="ltr" mozdisallowselectionprint> <html dir="ltr" mozdisallowselectionprint>
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
<meta name="google" content="notranslate"> <meta name="google" content="notranslate" />
<title>PDF.js page viewer using built components</title> <title>PDF.js page viewer using built components</title>
<style> <style>
@ -29,15 +29,15 @@ limitations under the License.
} }
</style> </style>
<link rel="stylesheet" href="../../node_modules/pdfjs-dist/web/pdf_viewer.css"> <link rel="stylesheet" href="../../node_modules/pdfjs-dist/web/pdf_viewer.css" />
<script src="../../node_modules/pdfjs-dist/build/pdf.mjs" type="module"></script> <script src="../../node_modules/pdfjs-dist/build/pdf.mjs" type="module"></script>
<script src="../../node_modules/pdfjs-dist/web/pdf_viewer.mjs" type="module"></script> <script src="../../node_modules/pdfjs-dist/web/pdf_viewer.mjs" type="module"></script>
</head> </head>
<body tabindex="1"> <body tabindex="1">
<div id="pageContainer" class="pdfViewer singlePageView"></div> <div id="pageContainer" class="pdfViewer singlePageView"></div>
<script src="pageviewer.mjs" type="module"></script> <script src="pageviewer.mjs" type="module"></script>
</body> </body>
</html> </html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html> <!doctype html>
<!-- <!--
Copyright 2014 Mozilla Foundation Copyright 2014 Mozilla Foundation
@ -15,10 +15,10 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
--> -->
<html dir="ltr" mozdisallowselectionprint> <html dir="ltr" mozdisallowselectionprint>
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
<meta name="google" content="notranslate"> <meta name="google" content="notranslate" />
<title>PDF.js viewer using built components</title> <title>PDF.js viewer using built components</title>
<style> <style>
@ -35,17 +35,17 @@ limitations under the License.
} }
</style> </style>
<link rel="stylesheet" href="../../node_modules/pdfjs-dist/web/pdf_viewer.css"> <link rel="stylesheet" href="../../node_modules/pdfjs-dist/web/pdf_viewer.css" />
<script src="../../node_modules/pdfjs-dist/build/pdf.mjs" type="module"></script> <script src="../../node_modules/pdfjs-dist/build/pdf.mjs" type="module"></script>
<script src="../../node_modules/pdfjs-dist/web/pdf_viewer.mjs" type="module"></script> <script src="../../node_modules/pdfjs-dist/web/pdf_viewer.mjs" type="module"></script>
</head> </head>
<body tabindex="1"> <body tabindex="1">
<div id="viewerContainer"> <div id="viewerContainer">
<div id="viewer" class="pdfViewer"></div> <div id="viewer" class="pdfViewer"></div>
</div> </div>
<script src="simpleviewer.mjs" type="module"></script> <script src="simpleviewer.mjs" type="module"></script>
</body> </body>
</html> </html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html> <!doctype html>
<!-- <!--
Copyright 2014 Mozilla Foundation Copyright 2014 Mozilla Foundation
@ -15,10 +15,10 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
--> -->
<html dir="ltr" mozdisallowselectionprint> <html dir="ltr" mozdisallowselectionprint>
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
<meta name="google" content="notranslate"> <meta name="google" content="notranslate" />
<title>PDF.js Single Page Viewer using built components</title> <title>PDF.js Single Page Viewer using built components</title>
<style> <style>
@ -35,17 +35,17 @@ limitations under the License.
} }
</style> </style>
<link rel="stylesheet" href="../../node_modules/pdfjs-dist/web/pdf_viewer.css"> <link rel="stylesheet" href="../../node_modules/pdfjs-dist/web/pdf_viewer.css" />
<script src="../../node_modules/pdfjs-dist/build/pdf.mjs" type="module"></script> <script src="../../node_modules/pdfjs-dist/build/pdf.mjs" type="module"></script>
<script src="../../node_modules/pdfjs-dist/web/pdf_viewer.mjs" type="module"></script> <script src="../../node_modules/pdfjs-dist/web/pdf_viewer.mjs" type="module"></script>
</head> </head>
<body tabindex="1"> <body tabindex="1">
<div id="viewerContainer"> <div id="viewerContainer">
<div id="viewer" class="pdfViewer"></div> <div id="viewer" class="pdfViewer"></div>
</div> </div>
<script src="singlepageviewer.mjs" type="module"></script> <script src="singlepageviewer.mjs" type="module"></script>
</body> </body>
</html> </html>

View File

@ -1,4 +1,4 @@
<!DOCTYPE html> <!doctype html>
<!-- <!--
Copyright 2018 Mozilla Foundation Copyright 2018 Mozilla Foundation
@ -15,10 +15,10 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
--> -->
<html dir="ltr" mozdisallowselectionprint> <html dir="ltr" mozdisallowselectionprint>
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
<meta name="google" content="notranslate"> <meta name="google" content="notranslate" />
<title>PDF.js standalone JpegImage parser</title> <title>PDF.js standalone JpegImage parser</title>
<style> <style>
@ -30,11 +30,11 @@ limitations under the License.
</style> </style>
<script src="../../node_modules/pdfjs-dist/image_decoders/pdf.image_decoders.mjs" type="module"></script> <script src="../../node_modules/pdfjs-dist/image_decoders/pdf.image_decoders.mjs" type="module"></script>
</head> </head>
<body tabindex="1"> <body tabindex="1">
<canvas id="jpegCanvas" width="0" height="0"></canvas> <canvas id="jpegCanvas" width="0" height="0"></canvas>
<script src="jpeg_viewer.mjs" type="module"></script> <script src="jpeg_viewer.mjs" type="module"></script>
</body> </body>
</html> </html>

View File

@ -1,29 +1,27 @@
<!DOCTYPE html> <!doctype html>
<html> <html>
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8" />
<title>'Hello, world!' example</title> <title>'Hello, world!' example</title>
</head> </head>
<body> <body>
<h1>'Hello, world!' example</h1>
<h1>'Hello, world!' example</h1> <canvas id="the-canvas" style="border: 1px solid black; direction: ltr"></canvas>
<canvas id="the-canvas" style="border: 1px solid black; direction: ltr;"></canvas> <script src="../../node_modules/pdfjs-dist/build/pdf.mjs" type="module"></script>
<script src="../../node_modules/pdfjs-dist/build/pdf.mjs" type="module"></script> <script id="script" type="module">
<script id="script" type="module">
// //
// If absolute URL from the remote server is provided, configure the CORS // If absolute URL from the remote server is provided, configure the CORS
// header on that server. // header on that server.
// //
const url = './helloworld.pdf'; const url = "./helloworld.pdf";
// //
// The workerSrc property shall be specified. // The workerSrc property shall be specified.
// //
pdfjsLib.GlobalWorkerOptions.workerSrc = pdfjsLib.GlobalWorkerOptions.workerSrc = "../../node_modules/pdfjs-dist/build/pdf.worker.mjs";
'../../node_modules/pdfjs-dist/build/pdf.worker.mjs';
// //
// Asynchronous download PDF // Asynchronous download PDF
@ -50,9 +48,7 @@
canvas.style.width = Math.floor(viewport.width) + "px"; canvas.style.width = Math.floor(viewport.width) + "px";
canvas.style.height = Math.floor(viewport.height) + "px"; canvas.style.height = Math.floor(viewport.height) + "px";
const transform = outputScale !== 1 const transform = outputScale !== 1 ? [outputScale, 0, 0, outputScale, 0, 0] : null;
? [outputScale, 0, 0, outputScale, 0, 0]
: null;
// //
// Render PDF page into canvas context // Render PDF page into canvas context
@ -63,14 +59,13 @@
viewport, viewport,
}; };
page.render(renderContext); page.render(renderContext);
</script> </script>
<hr> <hr />
<h2>JavaScript code:</h2> <h2>JavaScript code:</h2>
<pre id="code"></pre> <pre id="code"></pre>
<script> <script>
document.getElementById('code').textContent = document.getElementById("code").textContent = document.getElementById("script").text;
document.getElementById('script').text; </script>
</script> </body>
</body>
</html> </html>

View File

@ -1,65 +1,62 @@
<!DOCTYPE html> <!doctype html>
<html> <html>
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8" />
<title>'Hello, world!' base64 example</title> <title>'Hello, world!' base64 example</title>
</head> </head>
<body> <body>
<h1>'Hello, world!' example</h1>
<h1>'Hello, world!' example</h1> <canvas id="the-canvas" style="border: 1px solid black; direction: ltr"></canvas>
<canvas id="the-canvas" style="border: 1px solid black; direction: ltr;"></canvas> <script src="../../node_modules/pdfjs-dist/build/pdf.mjs" type="module"></script>
<script src="../../node_modules/pdfjs-dist/build/pdf.mjs" type="module"></script> <script id="script" type="module">
<script id="script" type="module">
// atob() is used to convert base64 encoded PDF to binary-like data. // atob() is used to convert base64 encoded PDF to binary-like data.
// (See also https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/ // (See also https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/
// Base64_encoding_and_decoding.) // Base64_encoding_and_decoding.)
var pdfData = atob( var pdfData = atob(
'JVBERi0xLjcKCjEgMCBvYmogICUgZW50cnkgcG9pbnQKPDwKICAvVHlwZSAvQ2F0YWxvZwog' + "JVBERi0xLjcKCjEgMCBvYmogICUgZW50cnkgcG9pbnQKPDwKICAvVHlwZSAvQ2F0YWxvZwog" +
'IC9QYWdlcyAyIDAgUgo+PgplbmRvYmoKCjIgMCBvYmoKPDwKICAvVHlwZSAvUGFnZXMKICAv' + "IC9QYWdlcyAyIDAgUgo+PgplbmRvYmoKCjIgMCBvYmoKPDwKICAvVHlwZSAvUGFnZXMKICAv" +
'TWVkaWFCb3ggWyAwIDAgMjAwIDIwMCBdCiAgL0NvdW50IDEKICAvS2lkcyBbIDMgMCBSIF0K' + "TWVkaWFCb3ggWyAwIDAgMjAwIDIwMCBdCiAgL0NvdW50IDEKICAvS2lkcyBbIDMgMCBSIF0K" +
'Pj4KZW5kb2JqCgozIDAgb2JqCjw8CiAgL1R5cGUgL1BhZ2UKICAvUGFyZW50IDIgMCBSCiAg' + "Pj4KZW5kb2JqCgozIDAgb2JqCjw8CiAgL1R5cGUgL1BhZ2UKICAvUGFyZW50IDIgMCBSCiAg" +
'L1Jlc291cmNlcyA8PAogICAgL0ZvbnQgPDwKICAgICAgL0YxIDQgMCBSIAogICAgPj4KICA+' + "L1Jlc291cmNlcyA8PAogICAgL0ZvbnQgPDwKICAgICAgL0YxIDQgMCBSIAogICAgPj4KICA+" +
'PgogIC9Db250ZW50cyA1IDAgUgo+PgplbmRvYmoKCjQgMCBvYmoKPDwKICAvVHlwZSAvRm9u' + "PgogIC9Db250ZW50cyA1IDAgUgo+PgplbmRvYmoKCjQgMCBvYmoKPDwKICAvVHlwZSAvRm9u" +
'dAogIC9TdWJ0eXBlIC9UeXBlMQogIC9CYXNlRm9udCAvVGltZXMtUm9tYW4KPj4KZW5kb2Jq' + "dAogIC9TdWJ0eXBlIC9UeXBlMQogIC9CYXNlRm9udCAvVGltZXMtUm9tYW4KPj4KZW5kb2Jq" +
'Cgo1IDAgb2JqICAlIHBhZ2UgY29udGVudAo8PAogIC9MZW5ndGggNDQKPj4Kc3RyZWFtCkJU' + "Cgo1IDAgb2JqICAlIHBhZ2UgY29udGVudAo8PAogIC9MZW5ndGggNDQKPj4Kc3RyZWFtCkJU" +
'CjcwIDUwIFRECi9GMSAxMiBUZgooSGVsbG8sIHdvcmxkISkgVGoKRVQKZW5kc3RyZWFtCmVu' + "CjcwIDUwIFRECi9GMSAxMiBUZgooSGVsbG8sIHdvcmxkISkgVGoKRVQKZW5kc3RyZWFtCmVu" +
'ZG9iagoKeHJlZgowIDYKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDEwIDAwMDAwIG4g' + "ZG9iagoKeHJlZgowIDYKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDEwIDAwMDAwIG4g" +
'CjAwMDAwMDAwNzkgMDAwMDAgbiAKMDAwMDAwMDE3MyAwMDAwMCBuIAowMDAwMDAwMzAxIDAw' + "CjAwMDAwMDAwNzkgMDAwMDAgbiAKMDAwMDAwMDE3MyAwMDAwMCBuIAowMDAwMDAwMzAxIDAw" +
'MDAwIG4gCjAwMDAwMDAzODAgMDAwMDAgbiAKdHJhaWxlcgo8PAogIC9TaXplIDYKICAvUm9v' + "MDAwIG4gCjAwMDAwMDAzODAgMDAwMDAgbiAKdHJhaWxlcgo8PAogIC9TaXplIDYKICAvUm9v" +
'dCAxIDAgUgo+PgpzdGFydHhyZWYKNDkyCiUlRU9G'); "dCAxIDAgUgo+PgpzdGFydHhyZWYKNDkyCiUlRU9G"
);
// //
// The workerSrc property shall be specified. // The workerSrc property shall be specified.
// //
pdfjsLib.GlobalWorkerOptions.workerSrc = pdfjsLib.GlobalWorkerOptions.workerSrc = "../../node_modules/pdfjs-dist/build/pdf.worker.mjs";
'../../node_modules/pdfjs-dist/build/pdf.worker.mjs';
// Opening PDF by passing its binary data as a string. It is still preferable // Opening PDF by passing its binary data as a string. It is still preferable
// to use Uint8Array, but string or array-like structure will work too. // to use Uint8Array, but string or array-like structure will work too.
var loadingTask = pdfjsLib.getDocument({ data: pdfData, }); var loadingTask = pdfjsLib.getDocument({ data: pdfData });
var pdf = await loadingTask.promise; var pdf = await loadingTask.promise;
// Fetch the first page. // Fetch the first page.
var page = await pdf.getPage(1); var page = await pdf.getPage(1);
var scale = 1.5; var scale = 1.5;
var viewport = page.getViewport({ scale: scale, }); var viewport = page.getViewport({ scale: scale });
// Support HiDPI-screens. // Support HiDPI-screens.
var outputScale = window.devicePixelRatio || 1; var outputScale = window.devicePixelRatio || 1;
// Prepare canvas using PDF page dimensions. // Prepare canvas using PDF page dimensions.
var canvas = document.getElementById('the-canvas'); var canvas = document.getElementById("the-canvas");
var context = canvas.getContext('2d'); var context = canvas.getContext("2d");
canvas.width = Math.floor(viewport.width * outputScale); canvas.width = Math.floor(viewport.width * outputScale);
canvas.height = Math.floor(viewport.height * outputScale); canvas.height = Math.floor(viewport.height * outputScale);
canvas.style.width = Math.floor(viewport.width) + "px"; canvas.style.width = Math.floor(viewport.width) + "px";
canvas.style.height = Math.floor(viewport.height) + "px"; canvas.style.height = Math.floor(viewport.height) + "px";
var transform = outputScale !== 1 var transform = outputScale !== 1 ? [outputScale, 0, 0, outputScale, 0, 0] : null;
? [outputScale, 0, 0, outputScale, 0, 0]
: null;
// Render PDF page into canvas context. // Render PDF page into canvas context.
var renderContext = { var renderContext = {
@ -68,14 +65,13 @@
viewport, viewport,
}; };
page.render(renderContext); page.render(renderContext);
</script> </script>
<hr> <hr />
<h2>JavaScript code:</h2> <h2>JavaScript code:</h2>
<pre id="code"></pre> <pre id="code"></pre>
<script> <script>
document.getElementById('code').textContent = document.getElementById("code").textContent = document.getElementById("script").text;
document.getElementById('script').text; </script>
</script> </body>
</body>
</html> </html>

View File

@ -1,48 +1,46 @@
<!DOCTYPE html> <!doctype html>
<html> <html>
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8" />
<title>Previous/Next example</title> <title>Previous/Next example</title>
</head> </head>
<body> <body>
<h1>'Previous/Next' example</h1>
<h1>'Previous/Next' example</h1> <div>
<div>
<button id="prev" type="button">Previous</button> <button id="prev" type="button">Previous</button>
<button id="next" type="button">Next</button> <button id="next" type="button">Next</button>
&nbsp; &nbsp; &nbsp; &nbsp;
<span>Page: <span id="page_num"></span> / <span id="page_count"></span></span> <span>Page: <span id="page_num"></span> / <span id="page_count"></span></span>
</div> </div>
<div> <div>
<canvas id="the-canvas" style="border: 1px solid black; direction: ltr;"></canvas> <canvas id="the-canvas" style="border: 1px solid black; direction: ltr"></canvas>
</div> </div>
<script src="../../node_modules/pdfjs-dist/build/pdf.mjs" type="module"></script> <script src="../../node_modules/pdfjs-dist/build/pdf.mjs" type="module"></script>
<script id="script" type="module"> <script id="script" type="module">
// //
// If absolute URL from the remote server is provided, configure the CORS // If absolute URL from the remote server is provided, configure the CORS
// header on that server. // header on that server.
// //
var url = '../../web/compressed.tracemonkey-pldi-09.pdf'; var url = "../../web/compressed.tracemonkey-pldi-09.pdf";
// //
// In cases when the pdf.worker.js is located at the different folder than the // In cases when the pdf.worker.js is located at the different folder than the
// PDF.js's one, or the PDF.js is executed via eval(), the workerSrc property // PDF.js's one, or the PDF.js is executed via eval(), the workerSrc property
// shall be specified. // shall be specified.
// //
pdfjsLib.GlobalWorkerOptions.workerSrc = pdfjsLib.GlobalWorkerOptions.workerSrc = "../../node_modules/pdfjs-dist/build/pdf.worker.mjs";
'../../node_modules/pdfjs-dist/build/pdf.worker.mjs';
var pdfDoc = null, var pdfDoc = null,
pageNum = 1, pageNum = 1,
pageRendering = false, pageRendering = false,
pageNumPending = null, pageNumPending = null,
scale = 0.8, scale = 0.8,
canvas = document.getElementById('the-canvas'), canvas = document.getElementById("the-canvas"),
ctx = canvas.getContext('2d'); ctx = canvas.getContext("2d");
/** /**
* Get page info from document, resize canvas accordingly, and render page. * Get page info from document, resize canvas accordingly, and render page.
@ -51,8 +49,8 @@
function renderPage(num) { function renderPage(num) {
pageRendering = true; pageRendering = true;
// Using promise to fetch the page // Using promise to fetch the page
pdfDoc.getPage(num).then(function(page) { pdfDoc.getPage(num).then(function (page) {
var viewport = page.getViewport({ scale: scale, }); var viewport = page.getViewport({ scale: scale });
// Support HiDPI-screens. // Support HiDPI-screens.
var outputScale = window.devicePixelRatio || 1; var outputScale = window.devicePixelRatio || 1;
@ -61,9 +59,7 @@
canvas.style.width = Math.floor(viewport.width) + "px"; canvas.style.width = Math.floor(viewport.width) + "px";
canvas.style.height = Math.floor(viewport.height) + "px"; canvas.style.height = Math.floor(viewport.height) + "px";
var transform = outputScale !== 1 var transform = outputScale !== 1 ? [outputScale, 0, 0, outputScale, 0, 0] : null;
? [outputScale, 0, 0, outputScale, 0, 0]
: null;
// Render PDF page into canvas context // Render PDF page into canvas context
var renderContext = { var renderContext = {
@ -85,7 +81,7 @@
}); });
// Update page counters // Update page counters
document.getElementById('page_num').textContent = num; document.getElementById("page_num").textContent = num;
} }
/** /**
@ -110,7 +106,7 @@
pageNum--; pageNum--;
queueRenderPage(pageNum); queueRenderPage(pageNum);
} }
document.getElementById('prev').addEventListener('click', onPrevPage); document.getElementById("prev").addEventListener("click", onPrevPage);
/** /**
* Displays next page. * Displays next page.
@ -122,18 +118,17 @@
pageNum++; pageNum++;
queueRenderPage(pageNum); queueRenderPage(pageNum);
} }
document.getElementById('next').addEventListener('click', onNextPage); document.getElementById("next").addEventListener("click", onNextPage);
/** /**
* Asynchronously downloads PDF. * Asynchronously downloads PDF.
*/ */
var loadingTask = pdfjsLib.getDocument(url); var loadingTask = pdfjsLib.getDocument(url);
pdfDoc = await loadingTask.promise; pdfDoc = await loadingTask.promise;
document.getElementById('page_count').textContent = pdfDoc.numPages; document.getElementById("page_count").textContent = pdfDoc.numPages;
// Initial/first page rendering // Initial/first page rendering
renderPage(pageNum); renderPage(pageNum);
</script> </script>
</body>
</body>
</html> </html>

View File

@ -113,8 +113,8 @@ footer {
background-color: rgb(0 0 0 / 0); background-color: rgb(0 0 0 / 0);
font-size: 1.2rem; font-size: 1.2rem;
color: rgb(255 255 255 / 1); color: rgb(255 255 255 / 1);
background-image: url(images/div_line_left.png), background-image:
url(images/div_line_right.png); url(images/div_line_left.png), url(images/div_line_right.png);
background-repeat: no-repeat; background-repeat: no-repeat;
background-position: left, right; background-position: left, right;
background-size: 0.2rem, 0.2rem; background-size: 0.2rem, 0.2rem;

View File

@ -1,4 +1,4 @@
<!DOCTYPE html> <!doctype html>
<!-- <!--
Copyright 2016 Mozilla Foundation Copyright 2016 Mozilla Foundation
@ -16,13 +16,13 @@ limitations under the License.
--> -->
<html dir="ltr"> <html dir="ltr">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
<title>PDF.js viewer</title> <title>PDF.js viewer</title>
<link rel="stylesheet" href="../../node_modules/pdfjs-dist/web/pdf_viewer.css"> <link rel="stylesheet" href="../../node_modules/pdfjs-dist/web/pdf_viewer.css" />
<link rel="stylesheet" type="text/css" href="viewer.css"> <link rel="stylesheet" type="text/css" href="viewer.css" />
<script src="../../node_modules/pdfjs-dist/build/pdf.mjs" type="module"></script> <script src="../../node_modules/pdfjs-dist/build/pdf.mjs" type="module"></script>
<script src="../../node_modules/pdfjs-dist/web/pdf_viewer.mjs" type="module"></script> <script src="../../node_modules/pdfjs-dist/web/pdf_viewer.mjs" type="module"></script>
@ -46,7 +46,7 @@ limitations under the License.
<button class="toolbarButton pageUp" title="Previous Page" id="previous" type="button"></button> <button class="toolbarButton pageUp" title="Previous Page" id="previous" type="button"></button>
<button class="toolbarButton pageDown" title="Next Page" id="next" type="button"></button> <button class="toolbarButton pageDown" title="Next Page" id="next" type="button"></button>
<input type="number" id="pageNumber" class="toolbarField pageNumber" value="1" size="4" min="1"> <input type="number" id="pageNumber" class="toolbarField pageNumber" value="1" size="4" min="1" />
<button class="toolbarButton zoomOut" title="Zoom Out" id="zoomOut" type="button"></button> <button class="toolbarButton zoomOut" title="Zoom Out" id="zoomOut" type="button"></button>
<button class="toolbarButton zoomIn" title="Zoom In" id="zoomIn" type="button"></button> <button class="toolbarButton zoomIn" title="Zoom In" id="zoomIn" type="button"></button>

View File

@ -91,10 +91,10 @@ const PDFViewerApplication = {
let key = "pdfjs-loading-error"; let key = "pdfjs-loading-error";
if (reason instanceof pdfjsLib.InvalidPDFException) { if (reason instanceof pdfjsLib.InvalidPDFException) {
key = "pdfjs-invalid-file-error"; key = "pdfjs-invalid-file-error";
} else if (reason instanceof pdfjsLib.MissingPDFException) { } else if (reason instanceof pdfjsLib.ResponseException) {
key = "pdfjs-missing-file-error"; key = reason.missing
} else if (reason instanceof pdfjsLib.UnexpectedResponseException) { ? "pdfjs-missing-file-error"
key = "pdfjs-unexpected-response-error"; : "pdfjs-unexpected-response-error";
} }
self.l10n.get(key).then(msg => { self.l10n.get(key).then(msg => {
self.error(msg, { message: reason?.message }); self.error(msg, { message: reason?.message });

View File

@ -1,14 +1,13 @@
<!DOCTYPE html> <!doctype html>
<html> <html>
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8" />
<title>Text-only PDF.js example</title> <title>Text-only PDF.js example</title>
<script src="../../node_modules/pdfjs-dist/build/pdf.mjs" type="module"></script> <script src="../../node_modules/pdfjs-dist/build/pdf.mjs" type="module"></script>
<script src="pdf2svg.mjs" type="module"></script> <script src="pdf2svg.mjs" type="module"></script>
</head> </head>
<body> <body>
<p>Text-only PDF.js example</p> <p>Text-only PDF.js example</p>
<div id="pageContainer" style="display: inline-block; border: solid 1px black;"> <div id="pageContainer" style="display: inline-block; border: solid 1px black"></div>
</div> </body>
</body>
</html> </html>

View File

@ -1,11 +1,11 @@
<!DOCTYPE html> <!doctype html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8" />
<title>webpack example</title> <title>webpack example</title>
<script src="../../build/webpack/main.bundle.js"></script> <script src="../../build/webpack/main.bundle.js"></script>
</head> </head>
<body> <body>
<canvas id="theCanvas"></canvas> <canvas id="theCanvas"></canvas>
</body> </body>
</html> </html>

View File

@ -46,6 +46,7 @@ limitations under the License.
} }
var scheme = url.slice(0, schemeIndex).toLowerCase(); var scheme = url.slice(0, schemeIndex).toLowerCase();
if (schemes.includes(scheme)) { if (schemes.includes(scheme)) {
// NOTE: We cannot use the `updateUrlHash` function in this context.
url = url.split("#", 1)[0]; url = url.split("#", 1)[0];
if (url.charAt(schemeIndex) === ":") { if (url.charAt(schemeIndex) === ":") {
url = encodeURIComponent(url); url = encodeURIComponent(url);

View File

@ -15,41 +15,41 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
--> -->
<html> <html>
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8" />
<title>PDF.js viewer options</title> <title>PDF.js viewer options</title>
<style> <style>
body { body {
min-width: 400px; /* a page at the settings page is at least 400px wide */ min-width: 400px; /* a page at the settings page is at least 400px wide */
margin: 14px 17px; /* already added by default in Chrome 40.0.2212.0 */ margin: 14px 17px; /* already added by default in Chrome 40.0.2212.0 */
} }
.settings-row { .settings-row {
margin: 1em 0; margin: 1em 0;
} }
.checkbox label { .checkbox label {
display: inline-flex; display: inline-flex;
align-items: center; align-items: center;
} }
.checkbox label input { .checkbox label input {
flex-shrink: 0; flex-shrink: 0;
} }
</style> </style>
</head> </head>
<body> <body>
<div id="settings-boxes"></div> <div id="settings-boxes"></div>
<button id="reset-button" type="button">Restore default settings</button> <button id="reset-button" type="button">Restore default settings</button>
<template id="checkbox-template"> <template id="checkbox-template">
<div class="settings-row checkbox"> <div class="settings-row checkbox">
<label> <label>
<input type="checkbox"> <input type="checkbox" />
<span></span> <span></span>
</label> </label>
</div> </div>
</template> </template>
<template id="viewerCssTheme-template"> <template id="viewerCssTheme-template">
<div class="settings-row"> <div class="settings-row">
<label> <label>
<span></span> <span></span>
<select> <select>
@ -58,11 +58,11 @@ body {
<option value="2">Dark theme</option> <option value="2">Dark theme</option>
</select> </select>
</label> </label>
</div> </div>
</template> </template>
<template id="viewOnLoad-template"> <template id="viewOnLoad-template">
<div class="settings-row"> <div class="settings-row">
<label> <label>
<span></span> <span></span>
<select> <select>
@ -71,11 +71,11 @@ body {
<option value="1">Show initial position</option> <option value="1">Show initial position</option>
</select> </select>
</label> </label>
</div> </div>
</template> </template>
<template id="defaultZoomValue-template"> <template id="defaultZoomValue-template">
<div class="settings-row"> <div class="settings-row">
<label> <label>
<span></span> <span></span>
<select> <select>
@ -94,11 +94,11 @@ body {
<option value="400">400%</option> <option value="400">400%</option>
</select> </select>
</label> </label>
</div> </div>
</template> </template>
<template id="sidebarViewOnLoad-template"> <template id="sidebarViewOnLoad-template">
<div class="settings-row"> <div class="settings-row">
<label> <label>
<span></span> <span></span>
<select> <select>
@ -109,11 +109,11 @@ body {
<option value="3">Show attachments in sidebar</option> <option value="3">Show attachments in sidebar</option>
</select> </select>
</label> </label>
</div> </div>
</template> </template>
<template id="cursorToolOnLoad-template"> <template id="cursorToolOnLoad-template">
<div class="settings-row"> <div class="settings-row">
<label> <label>
<span></span> <span></span>
<select> <select>
@ -121,11 +121,11 @@ body {
<option value="1">Hand tool</option> <option value="1">Hand tool</option>
</select> </select>
</label> </label>
</div> </div>
</template> </template>
<template id="textLayerMode-template"> <template id="textLayerMode-template">
<div class="settings-row"> <div class="settings-row">
<label> <label>
<span></span> <span></span>
<select> <select>
@ -133,11 +133,11 @@ body {
<option value="1">Enable text selection</option> <option value="1">Enable text selection</option>
</select> </select>
</label> </label>
</div> </div>
</template> </template>
<template id="externalLinkTarget-template"> <template id="externalLinkTarget-template">
<div class="settings-row"> <div class="settings-row">
<label> <label>
<span></span> <span></span>
<select> <select>
@ -148,11 +148,11 @@ body {
<option value="4">Top window/tab</option> <option value="4">Top window/tab</option>
</select> </select>
</label> </label>
</div> </div>
</template> </template>
<template id="scrollModeOnLoad-template"> <template id="scrollModeOnLoad-template">
<div class="settings-row"> <div class="settings-row">
<label> <label>
<span></span> <span></span>
<select> <select>
@ -163,11 +163,11 @@ body {
<option value="2">Wrapped scrolling</option> <option value="2">Wrapped scrolling</option>
</select> </select>
</label> </label>
</div> </div>
</template> </template>
<template id="spreadModeOnLoad-template"> <template id="spreadModeOnLoad-template">
<div class="settings-row"> <div class="settings-row">
<label> <label>
<span></span> <span></span>
<select> <select>
@ -177,9 +177,9 @@ body {
<option value="2">Even spreads</option> <option value="2">Even spreads</option>
</select> </select>
</label> </label>
</div> </div>
</template> </template>
<script src="options.js"></script> <script src="options.js"></script>
</body> </body>
</html> </html>

View File

@ -69,7 +69,7 @@ async function registerPdfRedirectRule() {
}, },
}; };
// Rules in order of prority (highest priority rule first). // Rules in order of priority (highest priority rule first).
// The required "id" fields will be auto-generated later. // The required "id" fields will be auto-generated later.
const addRules = [ const addRules = [
{ {

View File

@ -71,6 +71,14 @@
"type": "string", "type": "string",
"default": "" "default": ""
}, },
"commentLearnMoreUrl": {
"type": "string",
"default": ""
},
"enableSignatureEditor": {
"type": "boolean",
"default": false
},
"enableUpdatedAddImage": { "enableUpdatedAddImage": {
"type": "boolean", "type": "boolean",
"default": false "default": false
@ -100,7 +108,7 @@
}, },
"highlightEditorColors": { "highlightEditorColors": {
"type": "string", "type": "string",
"default": "yellow=#FFFF98,green=#53FFBC,blue=#80EBFF,pink=#FFCBE6,red=#FF4F5F" "default": "yellow=#FFFF98,green=#53FFBC,blue=#80EBFF,pink=#FFCBE6,red=#FF4F5F,yellow_HCM=#FFFFCC,green_HCM=#53FFBC,blue_HCM=#80EBFF,pink_HCM=#F6B8FF,red_HCM=#C50043"
}, },
"disableRange": { "disableRange": {
"title": "Disable range requests", "title": "Disable range requests",
@ -168,6 +176,10 @@
"enum": [-1, 0, 3, 15], "enum": [-1, 0, 3, 15],
"default": 0 "default": 0
}, },
"capCanvasAreaFactor": {
"type": "integer",
"default": 200
},
"enablePermissions": { "enablePermissions": {
"type": "boolean", "type": "boolean",
"default": false "default": false
@ -220,6 +232,21 @@
"description": "The color is a string as defined in CSS. Its goal is to help improve readability in high contrast mode", "description": "The color is a string as defined in CSS. Its goal is to help improve readability in high contrast mode",
"type": "string", "type": "string",
"default": "CanvasText" "default": "CanvasText"
},
"enableAutoLinking": {
"description": "Enable creation of hyperlinks from text that look like URLs.",
"type": "boolean",
"default": true
},
"enableComment": {
"description": "Enable creation of comment annotations.",
"type": "boolean",
"default": false
},
"enableOptimizedPartialRendering": {
"description": "Enable tracking of PDF operations to optimize partial rendering.",
"type": "boolean",
"default": false
} }
} }
} }

View File

@ -47,6 +47,25 @@ function handlePreprocessorAction(ctx, actionName, args, path) {
} }
function babelPluginPDFJSPreprocessor(babel, ctx) { function babelPluginPDFJSPreprocessor(babel, ctx) {
function removeUnusedFunctions(path) {
let removed;
do {
removed = false;
path.scope.crawl();
for (const name in path.scope.bindings) {
const binding = path.scope.bindings[name];
if (!binding.referenced) {
const { path: bindingPath } = binding;
if (bindingPath.isFunctionDeclaration()) {
bindingPath.remove();
removed = true;
}
}
}
// If we removed some functions, there might be new unused ones
} while (removed);
}
return { return {
name: "babel-plugin-pdfjs-preprocessor", name: "babel-plugin-pdfjs-preprocessor",
manipulateOptions({ parserOpts }) { manipulateOptions({ parserOpts }) {
@ -153,18 +172,22 @@ function babelPluginPDFJSPreprocessor(babel, ctx) {
path.replaceWith(t.inherits(t.valueToNode(result), path.node)); path.replaceWith(t.inherits(t.valueToNode(result), path.node));
} }
if (t.isIdentifier(node.callee, { name: "__non_webpack_import__" })) { if (t.isIdentifier(node.callee, { name: "__raw_import__" })) {
if (node.arguments.length !== 1) { if (node.arguments.length !== 1) {
throw new Error("Invalid `__non_webpack_import__` usage."); throw new Error("Invalid `__raw_import__` usage.");
} }
// Replace it with a standard `import`-call and // Replace it with a standard `import`-call and attempt to ensure that
// ensure that Webpack will leave it alone. // various bundlers will leave it alone; this *must* include Webpack.
const source = node.arguments[0]; const source = node.arguments[0];
source.leadingComments = [ source.leadingComments = [
{ {
type: "CommentBlock", type: "CommentBlock",
value: "webpackIgnore: true", value: "webpackIgnore: true",
}, },
{
type: "CommentBlock",
value: "@vite-ignore",
},
]; ];
path.replaceWith(t.importExpression(source)); path.replaceWith(t.importExpression(source));
} }
@ -221,6 +244,8 @@ function babelPluginPDFJSPreprocessor(babel, ctx) {
// Function body ends with return without arg -- removing it. // Function body ends with return without arg -- removing it.
body.pop(); body.pop();
} }
removeUnusedFunctions(path);
}, },
}, },
ClassMethod: { ClassMethod: {
@ -243,6 +268,26 @@ function babelPluginPDFJSPreprocessor(babel, ctx) {
} }
}, },
}, },
Program: {
exit(path) {
if (path.node.sourceType === "module") {
removeUnusedFunctions(path);
}
},
},
MemberExpression(path) {
// The Emscripten Compiler (emcc) generates code that allows the caller
// to provide the Wasm module (thorugh Module.instantiateWasm), with
// a fallback in case .instantiateWasm is not provided.
// We always define instantiateWasm, so we can hard-code the check
// and let our dead code elimination logic remove the unused fallback.
if (
path.parentPath.isIfStatement({ test: path.node }) &&
path.matchesPattern("Module.instantiateWasm")
) {
path.replaceWith(t.booleanLiteral(true));
}
},
}, },
}; };
} }

View File

@ -151,7 +151,7 @@ function preprocess(inFilename, outFilename, defines) {
let state = STATE_NONE; let state = STATE_NONE;
const stack = []; const stack = [];
const control = const control =
/^(?:\/\/|\s*\/\*|<!--)\s*#(if|elif|else|endif|expand|include|error)\b(?:\s+(.*?)(?:\*\/|-->)?$)?/; /^(?:\/\/|\s*\/\*|\s*<!--)\s*#(if|elif|else|endif|expand|include|error)\b(?:\s+(.*?)(?:\*\/|-->)?$)?/;
while ((line = readLine()) !== null) { while ((line = readLine()) !== null) {
++lineNumber; ++lineNumber;
@ -213,7 +213,7 @@ function preprocess(inFilename, outFilename, defines) {
) { ) {
writeLine( writeLine(
line line
.replaceAll(/^\/\/|^<!--/g, " ") .replaceAll(/^\/\/|^\s*<!--/g, " ")
.replaceAll(/(^\s*)\/\*/g, "$1 ") .replaceAll(/(^\s*)\/\*/g, "$1 ")
.replaceAll(/\*\/$|-->$/g, "") .replaceAll(/\*\/$|-->$/g, "")
); );

View File

@ -8,3 +8,4 @@ function test() {
} }
"4"; "4";
} }
test();

View File

@ -17,3 +17,4 @@ function test() {
"4"; "4";
} }
} }
test();

View File

@ -2,10 +2,12 @@ function f1() {
"1"; "1";
"2"; "2";
} }
f1();
function f2() { function f2() {
"1"; "1";
"2"; "2";
} }
f2();
function f3() { function f3() {
if ("1") { if ("1") {
"1"; "1";
@ -15,3 +17,4 @@ function f3() {
"4"; "4";
} }
} }
f3();

View File

@ -6,6 +6,7 @@ function f1() {
"2"; "2";
/* tail */ /* tail */
} }
f1();
function f2() { function f2() {
// head // head
@ -14,6 +15,7 @@ function f2() {
"2"; "2";
// tail // tail
} }
f2();
function f3() { function f3() {
if ("1") { // begin block if ("1") { // begin block
@ -24,3 +26,4 @@ function f3() {
"4"; "4";
} }
} }
f3();

View File

@ -1,14 +1,18 @@
function f1() {} function f1() {}
f1();
function f2() { function f2() {
return 1; return 1;
} }
f2();
function f3() { function f3() {
var i = 0; var i = 0;
throw "test"; throw "test";
} }
f3();
function f4() { function f4() {
var i = 0; var i = 0;
} }
f4();
var obj = { var obj = {
method1() {}, method1() {},
method2() {} method2() {}

View File

@ -2,17 +2,20 @@ function f1() {
return; return;
var i = 0; var i = 0;
} }
f1();
function f2() { function f2() {
return 1; return 1;
var i = 0; var i = 0;
} }
f2();
function f3() { function f3() {
var i = 0; var i = 0;
throw "test"; throw "test";
var j = 0; var j = 0;
} }
f3();
function f4() { function f4() {
var i = 0; var i = 0;
@ -22,6 +25,7 @@ function f4() {
throw "test"; throw "test";
var j = 0; var j = 0;
} }
f4();
var obj = { var obj = {
method1() { return; var i = 0; }, method1() { return; var i = 0; },

View File

@ -16,3 +16,4 @@ if ('1') {
function f1() { function f1() {
"1"; "1";
} }
f1();

View File

@ -32,3 +32,4 @@ function f1() {
"2"; "2";
} }
} }
f1();

View File

@ -1,4 +1,7 @@
import { Test } from "import-name"; import { Test } from "import-name";
import { Test2 } from './non-alias'; import { Test2 } from './non-alias';
export { Test3 } from "import-name"; export { Test3 } from "import-name";
await import(/*webpackIgnore: true*/"./non-alias"); await import(
/*webpackIgnore: true*/
/*@vite-ignore*/
"./non-alias");

View File

@ -1,4 +1,4 @@
import { Test } from 'import-alias'; import { Test } from 'import-alias';
import { Test2 } from './non-alias'; import { Test2 } from './non-alias';
export { Test3 } from 'import-alias'; export { Test3 } from 'import-alias';
await __non_webpack_import__("./non-alias"); await __raw_import__("./non-alias");

View File

@ -0,0 +1,5 @@
function usedByUsed() {}
function used() {
usedByUsed();
}
used();

View File

@ -0,0 +1,14 @@
function usedByUsed() {}
function usedByUnused() {}
function usedByRemovedCode() {}
function used() {
usedByUsed();
return;
usedByRemovedCode();
}
function unused() {
usedByUnused();
}
used();

View File

@ -1,9 +1,8 @@
import * as builder from "./builder.mjs"; import * as builder from "./builder.mjs";
import { fileURLToPath } from "url";
import fs from "fs"; import fs from "fs";
import path from "path"; import path from "path";
const __dirname = path.dirname(fileURLToPath(import.meta.url)); const __dirname = import.meta.dirname;
let errors = 0; let errors = 0;

View File

@ -1,9 +1,8 @@
import { fileURLToPath } from "url";
import fs from "fs"; import fs from "fs";
import path from "path"; import path from "path";
import { preprocessPDFJSCode } from "./babel-plugin-pdfjs-preprocessor.mjs"; import { preprocessPDFJSCode } from "./babel-plugin-pdfjs-preprocessor.mjs";
const __dirname = path.dirname(fileURLToPath(import.meta.url)); const __dirname = import.meta.dirname;
let errors = 0; let errors = 0;

BIN
external/iccs/CGATS001Compat-v2-micro.icc vendored Executable file

Binary file not shown.

116
external/iccs/LICENSE vendored Normal file
View File

@ -0,0 +1,116 @@
CC0 1.0 Universal
Statement of Purpose
The laws of most jurisdictions throughout the world automatically confer
exclusive Copyright and Related Rights (defined below) upon the creator and
subsequent owner(s) (each and all, an "owner") of an original work of
authorship and/or a database (each, a "Work").
Certain owners wish to permanently relinquish those rights to a Work for the
purpose of contributing to a commons of creative, cultural and scientific
works ("Commons") that the public can reliably and without fear of later
claims of infringement build upon, modify, incorporate in other works, reuse
and redistribute as freely as possible in any form whatsoever and for any
purposes, including without limitation commercial purposes. These owners may
contribute to the Commons to promote the ideal of a free culture and the
further production of creative, cultural and scientific works, or to gain
reputation or greater distribution for their Work in part through the use and
efforts of others.
For these and/or other purposes and motivations, and without any expectation
of additional consideration or compensation, the person associating CC0 with a
Work (the "Affirmer"), to the extent that he or she is an owner of Copyright
and Related Rights in the Work, voluntarily elects to apply CC0 to the Work
and publicly distribute the Work under its terms, with knowledge of his or her
Copyright and Related Rights in the Work and the meaning and intended legal
effect of CC0 on those rights.
1. Copyright and Related Rights. A Work made available under CC0 may be
protected by copyright and related or neighboring rights ("Copyright and
Related Rights"). Copyright and Related Rights include, but are not limited
to, the following:
i. the right to reproduce, adapt, distribute, perform, display, communicate,
and translate a Work;
ii. moral rights retained by the original author(s) and/or performer(s);
iii. publicity and privacy rights pertaining to a person's image or likeness
depicted in a Work;
iv. rights protecting against unfair competition in regards to a Work,
subject to the limitations in paragraph 4(a), below;
v. rights protecting the extraction, dissemination, use and reuse of data in
a Work;
vi. database rights (such as those arising under Directive 96/9/EC of the
European Parliament and of the Council of 11 March 1996 on the legal
protection of databases, and under any national implementation thereof,
including any amended or successor version of such directive); and
vii. other similar, equivalent or corresponding rights throughout the world
based on applicable law or treaty, and any national implementations thereof.
2. Waiver. To the greatest extent permitted by, but not in contravention of,
applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and
unconditionally waives, abandons, and surrenders all of Affirmer's Copyright
and Related Rights and associated claims and causes of action, whether now
known or unknown (including existing as well as future claims and causes of
action), in the Work (i) in all territories worldwide, (ii) for the maximum
duration provided by applicable law or treaty (including future time
extensions), (iii) in any current or future medium and for any number of
copies, and (iv) for any purpose whatsoever, including without limitation
commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes
the Waiver for the benefit of each member of the public at large and to the
detriment of Affirmer's heirs and successors, fully intending that such Waiver
shall not be subject to revocation, rescission, cancellation, termination, or
any other legal or equitable action to disrupt the quiet enjoyment of the Work
by the public as contemplated by Affirmer's express Statement of Purpose.
3. Public License Fallback. Should any part of the Waiver for any reason be
judged legally invalid or ineffective under applicable law, then the Waiver
shall be preserved to the maximum extent permitted taking into account
Affirmer's express Statement of Purpose. In addition, to the extent the Waiver
is so judged Affirmer hereby grants to each affected person a royalty-free,
non transferable, non sublicensable, non exclusive, irrevocable and
unconditional license to exercise Affirmer's Copyright and Related Rights in
the Work (i) in all territories worldwide, (ii) for the maximum duration
provided by applicable law or treaty (including future time extensions), (iii)
in any current or future medium and for any number of copies, and (iv) for any
purpose whatsoever, including without limitation commercial, advertising or
promotional purposes (the "License"). The License shall be deemed effective as
of the date CC0 was applied by Affirmer to the Work. Should any part of the
License for any reason be judged legally invalid or ineffective under
applicable law, such partial invalidity or ineffectiveness shall not
invalidate the remainder of the License, and in such case Affirmer hereby
affirms that he or she will not (i) exercise any of his or her remaining
Copyright and Related Rights in the Work or (ii) assert any associated claims
and causes of action with respect to the Work, in either case contrary to
Affirmer's express Statement of Purpose.
4. Limitations and Disclaimers.
a. No trademark or patent rights held by Affirmer are waived, abandoned,
surrendered, licensed or otherwise affected by this document.
b. Affirmer offers the Work as-is and makes no representations or warranties
of any kind concerning the Work, express, implied, statutory or otherwise,
including without limitation warranties of title, merchantability, fitness
for a particular purpose, non infringement, or the absence of latent or
other defects, accuracy, or the present or absence of errors, whether or not
discoverable, all to the greatest extent permissible under applicable law.
c. Affirmer disclaims responsibility for clearing rights of other persons
that may apply to the Work or any use thereof, including without limitation
any person's Copyright and Related Rights in the Work. Further, Affirmer
disclaims responsibility for obtaining any necessary consents, permissions
or other rights required for any use of the Work.
d. Affirmer understands and acknowledges that Creative Commons is not a
party to this document and has no duty or obligation with respect to this
CC0 or use of the Work.
For more information, please see
http://creativecommons.org/publicdomain/zero/1.0/

10
external/iccs/README.md vendored Normal file
View File

@ -0,0 +1,10 @@
## ICC
The file CGATS001Compat-v2-micro.icc used to convert colors from CMYK to RGB comes from:
https://github.com/saucecontrol/Compact-ICC-Profiles
at revision bdd84663061bc4ae95ca70decff54f581e27f702.
## Licensing
[CGATS001Compat-v2-micro.icc](https://github.com/saucecontrol/Compact-ICC-Profiles/blob/master/profiles/CGATS001Compat-v2-micro.icc) is under [CC0-1.0](https://creativecommons.org/publicdomain/zero/1.0/).

View File

@ -31,7 +31,7 @@ async function downloadLanguageCodes() {
console.log("Downloading language codes...\n"); console.log("Downloading language codes...\n");
const ALL_LOCALES = const ALL_LOCALES =
"https://raw.githubusercontent.com/mozilla/gecko-dev/master/browser/locales/all-locales"; "https://raw.githubusercontent.com/mozilla-firefox/firefox/main/browser/locales/all-locales";
const response = await fetch(ALL_LOCALES); const response = await fetch(ALL_LOCALES);
if (!response.ok) { if (!response.ok) {

39
external/openjpeg/LICENSE_OPENJPEG vendored Normal file
View File

@ -0,0 +1,39 @@
/*
* The copyright in this software is being made available under the 2-clauses
* BSD License, included below. This software may be subject to other third
* party and contributor rights, including patent rights, and no such rights
* are granted under this license.
*
* Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
* Copyright (c) 2002-2014, Professor Benoit Macq
* Copyright (c) 2003-2014, Antonin Descampe
* Copyright (c) 2003-2009, Francois-Olivier Devaux
* Copyright (c) 2005, Herve Drolon, FreeImage Team
* Copyright (c) 2002-2003, Yannick Verschueren
* Copyright (c) 2001-2003, David Janssens
* Copyright (c) 2011-2012, Centre National d'Etudes Spatiales (CNES), France
* Copyright (c) 2012, CS Systemes d'Information, France
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/

View File

@ -0,0 +1,22 @@
Copyright (c) 2024, Mozilla Foundation
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

File diff suppressed because one or more lines are too long

BIN
external/openjpeg/openjpeg.wasm vendored Normal file

Binary file not shown.

File diff suppressed because one or more lines are too long

22
external/qcms/LICENSE_PDFJS_QCMS vendored Normal file
View File

@ -0,0 +1,22 @@
Copyright (c) 2025, Mozilla Foundation
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

21
external/qcms/LICENSE_QCMS vendored Normal file
View File

@ -0,0 +1,21 @@
qcms
Copyright (C) 2009-2024 Mozilla Corporation
Copyright (C) 1998-2007 Marti Maria
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the Software
is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

12
external/qcms/README.md vendored Normal file
View File

@ -0,0 +1,12 @@
## Build
In order to generate the files `qcms.js` and `qcms_bg.wasm`:
* git clone https://github.com/mozilla/pdf.js.qcms/
* the build requires to have a [Docker](https://www.docker.com/) setup and then:
* `node build.js -C` to build the Docker image
* `node build.js -co /pdf.js/external/qcms/` to compile the decoder
## Licensing
[qcms](https://github.com/FirefoxGraphics/qcms) is under [MIT](https://github.com/FirefoxGraphics/qcms/blob/main/COPYING)
and [pdf.js.qcms](https://github.com/mozilla/pdf.js.qcms/) is released under [MIT](https://github.com/mozilla/pdf.js.qcms/blob/main/LICENSE) license so `qcms.js` and `qcms_bg.wasm` are released under [MIT](https://github.com/mozilla/pdf.js.qcms/blob/main/LICENSE) license too.

259
external/qcms/qcms.js vendored Normal file
View File

@ -0,0 +1,259 @@
/* THIS FILE IS GENERATED - DO NOT EDIT */
import { copy_result, copy_rgb, make_cssRGB } from './qcms_utils.js';
let wasm;
const cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } );
if (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); };
let cachedUint8ArrayMemory0 = null;
function getUint8ArrayMemory0() {
if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {
cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);
}
return cachedUint8ArrayMemory0;
}
function getStringFromWasm0(ptr, len) {
ptr = ptr >>> 0;
return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));
}
let WASM_VECTOR_LEN = 0;
function passArray8ToWasm0(arg, malloc) {
const ptr = malloc(arg.length * 1, 1) >>> 0;
getUint8ArrayMemory0().set(arg, ptr / 1);
WASM_VECTOR_LEN = arg.length;
return ptr;
}
/**
* # Safety
*
* This function is called directly from JavaScript.
* @param {number} transformer
* @param {Uint8Array} src
*/
export function qcms_convert_array(transformer, src) {
const ptr0 = passArray8ToWasm0(src, wasm.__wbindgen_malloc);
const len0 = WASM_VECTOR_LEN;
wasm.qcms_convert_array(transformer, ptr0, len0);
}
/**
* # Safety
*
* This function is called directly from JavaScript.
* @param {number} transformer
* @param {number} src
* @param {boolean} css
*/
export function qcms_convert_one(transformer, src, css) {
wasm.qcms_convert_one(transformer, src, css);
}
/**
* # Safety
*
* This function is called directly from JavaScript.
* @param {number} transformer
* @param {number} src1
* @param {number} src2
* @param {number} src3
* @param {boolean} css
*/
export function qcms_convert_three(transformer, src1, src2, src3, css) {
wasm.qcms_convert_three(transformer, src1, src2, src3, css);
}
/**
* # Safety
*
* This function is called directly from JavaScript.
* @param {number} transformer
* @param {number} src1
* @param {number} src2
* @param {number} src3
* @param {number} src4
* @param {boolean} css
*/
export function qcms_convert_four(transformer, src1, src2, src3, src4, css) {
wasm.qcms_convert_four(transformer, src1, src2, src3, src4, css);
}
/**
* # Safety
*
* This function is called directly from JavaScript.
* @param {Uint8Array} mem
* @param {DataType} in_type
* @param {Intent} intent
* @returns {number}
*/
export function qcms_transformer_from_memory(mem, in_type, intent) {
const ptr0 = passArray8ToWasm0(mem, wasm.__wbindgen_malloc);
const len0 = WASM_VECTOR_LEN;
const ret = wasm.qcms_transformer_from_memory(ptr0, len0, in_type, intent);
return ret >>> 0;
}
/**
* # Safety
*
* This function is called directly from JavaScript.
* @param {number} transformer
*/
export function qcms_drop_transformer(transformer) {
wasm.qcms_drop_transformer(transformer);
}
/**
* @enum {0 | 1 | 2 | 3 | 4 | 5}
*/
export const DataType = Object.freeze({
RGB8: 0, "0": "RGB8",
RGBA8: 1, "1": "RGBA8",
BGRA8: 2, "2": "BGRA8",
Gray8: 3, "3": "Gray8",
GrayA8: 4, "4": "GrayA8",
CMYK: 5, "5": "CMYK",
});
/**
* @enum {0 | 1 | 2 | 3}
*/
export const Intent = Object.freeze({
Perceptual: 0, "0": "Perceptual",
RelativeColorimetric: 1, "1": "RelativeColorimetric",
Saturation: 2, "2": "Saturation",
AbsoluteColorimetric: 3, "3": "AbsoluteColorimetric",
});
async function __wbg_load(module, imports) {
if (typeof Response === 'function' && module instanceof Response) {
if (typeof WebAssembly.instantiateStreaming === 'function') {
try {
return await WebAssembly.instantiateStreaming(module, imports);
} catch (e) {
if (module.headers.get('Content-Type') != 'application/wasm') {
console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e);
} else {
throw e;
}
}
}
const bytes = await module.arrayBuffer();
return await WebAssembly.instantiate(bytes, imports);
} else {
const instance = await WebAssembly.instantiate(module, imports);
if (instance instanceof WebAssembly.Instance) {
return { instance, module };
} else {
return instance;
}
}
}
function __wbg_get_imports() {
const imports = {};
imports.wbg = {};
imports.wbg.__wbg_copyresult_b08ee7d273f295dd = function(arg0, arg1) {
copy_result(arg0 >>> 0, arg1 >>> 0);
};
imports.wbg.__wbg_copyrgb_d60ce17bb05d9b67 = function(arg0) {
copy_rgb(arg0 >>> 0);
};
imports.wbg.__wbg_makecssRGB_893bf0cd9fdb302d = function(arg0) {
make_cssRGB(arg0 >>> 0);
};
imports.wbg.__wbindgen_init_externref_table = function() {
const table = wasm.__wbindgen_export_0;
const offset = table.grow(4);
table.set(0, undefined);
table.set(offset + 0, undefined);
table.set(offset + 1, null);
table.set(offset + 2, true);
table.set(offset + 3, false);
;
};
imports.wbg.__wbindgen_throw = function(arg0, arg1) {
throw new Error(getStringFromWasm0(arg0, arg1));
};
return imports;
}
function __wbg_init_memory(imports, memory) {
}
function __wbg_finalize_init(instance, module) {
wasm = instance.exports;
__wbg_init.__wbindgen_wasm_module = module;
cachedUint8ArrayMemory0 = null;
wasm.__wbindgen_start();
return wasm;
}
function initSync(module) {
if (wasm !== undefined) return wasm;
if (typeof module !== 'undefined') {
if (Object.getPrototypeOf(module) === Object.prototype) {
({module} = module)
} else {
console.warn('using deprecated parameters for `initSync()`; pass a single object instead')
}
}
const imports = __wbg_get_imports();
__wbg_init_memory(imports);
if (!(module instanceof WebAssembly.Module)) {
module = new WebAssembly.Module(module);
}
const instance = new WebAssembly.Instance(module, imports);
return __wbg_finalize_init(instance, module);
}
async function __wbg_init(module_or_path) {
if (wasm !== undefined) return wasm;
if (typeof module_or_path !== 'undefined') {
if (Object.getPrototypeOf(module_or_path) === Object.prototype) {
({module_or_path} = module_or_path)
} else {
console.warn('using deprecated parameters for the initialization function; pass a single object instead')
}
}
const imports = __wbg_get_imports();
if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {
module_or_path = fetch(module_or_path);
}
__wbg_init_memory(imports);
const { instance, module } = await __wbg_load(await module_or_path, imports);
return __wbg_finalize_init(instance, module);
}
export { initSync };
export default __wbg_init;

BIN
external/qcms/qcms_bg.wasm vendored Normal file

Binary file not shown.

84
external/qcms/qcms_utils.js vendored Normal file
View File

@ -0,0 +1,84 @@
/* Copyright 2025 Mozilla Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
class QCMS {
static #memoryArray = null;
static _memory = null;
static _mustAddAlpha = false;
static _destBuffer = null;
static _destOffset = 0;
static _destLength = 0;
static _cssColor = "";
static _makeHexColor = null;
static get _memoryArray() {
const array = this.#memoryArray;
if (array?.byteLength) {
return array;
}
return (this.#memoryArray = new Uint8Array(this._memory.buffer));
}
}
function copy_result(ptr, len) {
// This function is called from the wasm module (it's an external
// "C" function). Its goal is to copy the result from the wasm memory
// to the destination buffer without any intermediate copies.
const { _mustAddAlpha, _destBuffer, _destOffset, _destLength, _memoryArray } =
QCMS;
if (len === _destLength) {
_destBuffer.set(_memoryArray.subarray(ptr, ptr + len), _destOffset);
return;
}
if (_mustAddAlpha) {
for (let i = ptr, ii = ptr + len, j = _destOffset; i < ii; i += 3, j += 4) {
_destBuffer[j] = _memoryArray[i];
_destBuffer[j + 1] = _memoryArray[i + 1];
_destBuffer[j + 2] = _memoryArray[i + 2];
_destBuffer[j + 3] = 255;
}
} else {
for (let i = ptr, ii = ptr + len, j = _destOffset; i < ii; i += 3, j += 4) {
_destBuffer[j] = _memoryArray[i];
_destBuffer[j + 1] = _memoryArray[i + 1];
_destBuffer[j + 2] = _memoryArray[i + 2];
}
}
}
function copy_rgb(ptr) {
const { _destBuffer, _destOffset, _memoryArray } = QCMS;
_destBuffer[_destOffset] = _memoryArray[ptr];
_destBuffer[_destOffset + 1] = _memoryArray[ptr + 1];
_destBuffer[_destOffset + 2] = _memoryArray[ptr + 2];
}
function make_cssRGB(ptr) {
const { _memoryArray } = QCMS;
QCMS._cssColor = QCMS._makeHexColor(
_memoryArray[ptr],
_memoryArray[ptr + 1],
_memoryArray[ptr + 2]
);
}
export { copy_result, copy_rgb, make_cssRGB, QCMS };

View File

@ -21,7 +21,6 @@ import { exec, execSync, spawn, spawnSync } from "child_process";
import autoprefixer from "autoprefixer"; import autoprefixer from "autoprefixer";
import babel from "@babel/core"; import babel from "@babel/core";
import crypto from "crypto"; import crypto from "crypto";
import { fileURLToPath } from "url";
import fs from "fs"; import fs from "fs";
import gulp from "gulp"; import gulp from "gulp";
import hljs from "highlight.js"; import hljs from "highlight.js";
@ -31,9 +30,9 @@ import Metalsmith from "metalsmith";
import ordered from "ordered-read-streams"; import ordered from "ordered-read-streams";
import path from "path"; import path from "path";
import postcss from "gulp-postcss"; import postcss from "gulp-postcss";
import postcssDarkThemeClass from "postcss-dark-theme-class";
import postcssDirPseudoClass from "postcss-dir-pseudo-class"; import postcssDirPseudoClass from "postcss-dir-pseudo-class";
import postcssDiscardComments from "postcss-discard-comments"; import postcssDiscardComments from "postcss-discard-comments";
import postcssLightDarkFunction from "@csstools/postcss-light-dark-function";
import postcssNesting from "postcss-nesting"; import postcssNesting from "postcss-nesting";
import { preprocess } from "./external/builder/builder.mjs"; import { preprocess } from "./external/builder/builder.mjs";
import relative from "metalsmith-html-relative"; import relative from "metalsmith-html-relative";
@ -46,7 +45,7 @@ import webpack2 from "webpack";
import webpackStream from "webpack-stream"; import webpackStream from "webpack-stream";
import zip from "gulp-zip"; import zip from "gulp-zip";
const __dirname = path.dirname(fileURLToPath(import.meta.url)); const __dirname = import.meta.dirname;
const BUILD_DIR = "build/"; const BUILD_DIR = "build/";
const L10N_DIR = "l10n/"; const L10N_DIR = "l10n/";
@ -80,7 +79,7 @@ const config = JSON.parse(fs.readFileSync(CONFIG_FILE).toString());
const ENV_TARGETS = [ const ENV_TARGETS = [
"last 2 versions", "last 2 versions",
"Chrome >= 103", "Chrome >= 110",
"Firefox ESR", "Firefox ESR",
"Safari >= 16.4", "Safari >= 16.4",
"Node >= 20", "Node >= 20",
@ -97,7 +96,7 @@ const AUTOPREFIXER_CONFIG = {
const BABEL_TARGETS = ENV_TARGETS.join(", "); const BABEL_TARGETS = ENV_TARGETS.join(", ");
const BABEL_PRESET_ENV_OPTS = Object.freeze({ const BABEL_PRESET_ENV_OPTS = Object.freeze({
corejs: "3.39.0", corejs: "3.46.0",
exclude: ["web.structured-clone"], exclude: ["web.structured-clone"],
shippedProposals: true, shippedProposals: true,
useBuiltIns: "usage", useBuiltIns: "usage",
@ -192,6 +191,7 @@ function createWebpackAlias(defines) {
const libraryAlias = { const libraryAlias = {
"display-cmap_reader_factory": "src/display/stubs.js", "display-cmap_reader_factory": "src/display/stubs.js",
"display-standard_fontdata_factory": "src/display/stubs.js", "display-standard_fontdata_factory": "src/display/stubs.js",
"display-wasm_factory": "src/display/stubs.js",
"display-fetch_stream": "src/display/stubs.js", "display-fetch_stream": "src/display/stubs.js",
"display-network": "src/display/stubs.js", "display-network": "src/display/stubs.js",
"display-node_stream": "src/display/stubs.js", "display-node_stream": "src/display/stubs.js",
@ -216,6 +216,7 @@ function createWebpackAlias(defines) {
"web-preferences": "", "web-preferences": "",
"web-print_service": "", "web-print_service": "",
"web-secondary_toolbar": "web/secondary_toolbar.js", "web-secondary_toolbar": "web/secondary_toolbar.js",
"web-signature_manager": "web/signature_manager.js",
"web-toolbar": "web/toolbar.js", "web-toolbar": "web/toolbar.js",
}; };
@ -224,6 +225,7 @@ function createWebpackAlias(defines) {
"src/display/cmap_reader_factory.js"; "src/display/cmap_reader_factory.js";
libraryAlias["display-standard_fontdata_factory"] = libraryAlias["display-standard_fontdata_factory"] =
"src/display/standard_fontdata_factory.js"; "src/display/standard_fontdata_factory.js";
libraryAlias["display-wasm_factory"] = "src/display/wasm_factory.js";
libraryAlias["display-fetch_stream"] = "src/display/fetch_stream.js"; libraryAlias["display-fetch_stream"] = "src/display/fetch_stream.js";
libraryAlias["display-network"] = "src/display/network.js"; libraryAlias["display-network"] = "src/display/network.js";
@ -240,6 +242,7 @@ function createWebpackAlias(defines) {
"src/display/cmap_reader_factory.js"; "src/display/cmap_reader_factory.js";
libraryAlias["display-standard_fontdata_factory"] = libraryAlias["display-standard_fontdata_factory"] =
"src/display/standard_fontdata_factory.js"; "src/display/standard_fontdata_factory.js";
libraryAlias["display-wasm_factory"] = "src/display/wasm_factory.js";
libraryAlias["display-fetch_stream"] = "src/display/fetch_stream.js"; libraryAlias["display-fetch_stream"] = "src/display/fetch_stream.js";
libraryAlias["display-network"] = "src/display/network.js"; libraryAlias["display-network"] = "src/display/network.js";
libraryAlias["display-node_stream"] = "src/display/node_stream.js"; libraryAlias["display-node_stream"] = "src/display/node_stream.js";
@ -299,6 +302,12 @@ function createWebpackConfig(
const licenseHeaderLibre = fs const licenseHeaderLibre = fs
.readFileSync("./src/license_header_libre.js") .readFileSync("./src/license_header_libre.js")
.toString(); .toString();
const versionInfoHeader = [
"/**",
` * pdfjsVersion = ${versionInfo.version}`,
` * pdfjsBuild = ${versionInfo.commit}`,
" */",
].join("\n");
const enableSourceMaps = const enableSourceMaps =
!bundleDefines.MOZCENTRAL && !bundleDefines.MOZCENTRAL &&
!bundleDefines.CHROME && !bundleDefines.CHROME &&
@ -332,9 +341,39 @@ function createWebpackConfig(
const plugins = []; const plugins = [];
if (!disableLicenseHeader) { if (!disableLicenseHeader) {
plugins.push( plugins.push(
new webpack2.BannerPlugin({ banner: licenseHeaderLibre, raw: true }) new webpack2.BannerPlugin({
banner: licenseHeaderLibre + "\n" + versionInfoHeader,
raw: true,
})
); );
} }
plugins.push({
/** @param {import('webpack').Compiler} compiler */
apply(compiler) {
const errors = [];
compiler.hooks.afterCompile.tap("VerifyImportMeta", compilation => {
for (const asset of compilation.getAssets()) {
if (asset.name.endsWith(".mjs")) {
const source = asset.source.source();
if (
typeof source === "string" &&
/new URL\([^,)]*,\s*import\.meta\.url/.test(source)
) {
errors.push(
`Output module ${asset.name} uses new URL(..., import.meta.url)`
);
}
}
}
});
compiler.hooks.afterEmit.tap("VerifyImportMeta", compilation => {
// Emit the errors after emitting the files, so that it's possible to
// look at the contents of the invalid bundle.
compilation.errors.push(...errors);
});
},
});
const alias = createWebpackAlias(bundleDefines); const alias = createWebpackAlias(bundleDefines);
const experiments = isModule ? { outputModule: true } : undefined; const experiments = isModule ? { outputModule: true } : undefined;
@ -358,9 +397,8 @@ function createWebpackConfig(
// V8 chokes on very long sequences, work around that. // V8 chokes on very long sequences, work around that.
sequences: false, sequences: false,
}, },
mangle: { format: {
// Ensure that the `tweakWebpackOutput` function works. comments: /@lic|webpackIgnore|@vite-ignore|pdfjsVersion/i,
reserved: ["__webpack_exports__"],
}, },
keep_classnames: true, keep_classnames: true,
keep_fnames: true, keep_fnames: true,
@ -380,6 +418,12 @@ function createWebpackConfig(
}, },
devtool: enableSourceMaps ? "source-map" : undefined, devtool: enableSourceMaps ? "source-map" : undefined,
module: { module: {
parser: {
javascript: {
importMeta: false,
url: false,
},
},
rules: [ rules: [
{ {
test: /\.[mc]?js$/, test: /\.[mc]?js$/,
@ -453,13 +497,6 @@ function checkChromePreferencesFile(chromePrefsPath, webPrefs) {
return ret; return ret;
} }
function tweakWebpackOutput(jsName) {
return replace(
/((?:\s|,)__webpack_exports__)(?:\s?)=(?:\s?)({};)/gm,
(match, p1, p2) => `${p1} = globalThis.${jsName} = ${p2}`
);
}
function createMainBundle(defines) { function createMainBundle(defines) {
const mainFileConfig = createWebpackConfig(defines, { const mainFileConfig = createWebpackConfig(defines, {
filename: defines.MINIFIED ? "pdf.min.mjs" : "pdf.mjs", filename: defines.MINIFIED ? "pdf.min.mjs" : "pdf.mjs",
@ -469,8 +506,7 @@ function createMainBundle(defines) {
}); });
return gulp return gulp
.src("./src/pdf.js", { encoding: false }) .src("./src/pdf.js", { encoding: false })
.pipe(webpack2Stream(mainFileConfig)) .pipe(webpack2Stream(mainFileConfig));
.pipe(tweakWebpackOutput("pdfjsLib"));
} }
function createScriptingBundle(defines, extraOptions = undefined) { function createScriptingBundle(defines, extraOptions = undefined) {
@ -538,8 +574,7 @@ function createSandboxBundle(defines, extraOptions = undefined) {
return gulp return gulp
.src("./src/pdf.sandbox.js", { encoding: false }) .src("./src/pdf.sandbox.js", { encoding: false })
.pipe(webpack2Stream(sandboxFileConfig)) .pipe(webpack2Stream(sandboxFileConfig));
.pipe(tweakWebpackOutput("pdfjsSandbox"));
} }
function createWorkerBundle(defines) { function createWorkerBundle(defines) {
@ -551,8 +586,7 @@ function createWorkerBundle(defines) {
}); });
return gulp return gulp
.src("./src/pdf.worker.js", { encoding: false }) .src("./src/pdf.worker.js", { encoding: false })
.pipe(webpack2Stream(workerFileConfig)) .pipe(webpack2Stream(workerFileConfig));
.pipe(tweakWebpackOutput("pdfjsWorker"));
} }
function createWebBundle(defines, options) { function createWebBundle(defines, options) {
@ -600,8 +634,7 @@ function createComponentsBundle(defines) {
}); });
return gulp return gulp
.src("./web/pdf_viewer.component.js", { encoding: false }) .src("./web/pdf_viewer.component.js", { encoding: false })
.pipe(webpack2Stream(componentsFileConfig)) .pipe(webpack2Stream(componentsFileConfig));
.pipe(tweakWebpackOutput("pdfjsViewer"));
} }
function createImageDecodersBundle(defines) { function createImageDecodersBundle(defines) {
@ -615,8 +648,7 @@ function createImageDecodersBundle(defines) {
}); });
return gulp return gulp
.src("./src/pdf.image_decoders.js", { encoding: false }) .src("./src/pdf.image_decoders.js", { encoding: false })
.pipe(webpack2Stream(componentsFileConfig)) .pipe(webpack2Stream(componentsFileConfig));
.pipe(tweakWebpackOutput("pdfjsImageDecoders"));
} }
function createCMapBundle() { function createCMapBundle() {
@ -626,13 +658,19 @@ function createCMapBundle() {
}); });
} }
function createICCBundle() {
return gulp.src(["external/iccs/*.icc", "external/iccs/LICENSE"], {
base: "external/iccs",
encoding: false,
});
}
function createStandardFontBundle() { function createStandardFontBundle() {
return gulp.src( return gulp.src(
[ [
"external/standard_fonts/*.pfb", "external/standard_fonts/*.pfb",
"external/standard_fonts/*.ttf", "external/standard_fonts/*.ttf",
"external/standard_fonts/LICENSE_FOXIT", "external/standard_fonts/LICENSE_*",
"external/standard_fonts/LICENSE_LIBERATION",
], ],
{ {
base: "external/standard_fonts", base: "external/standard_fonts",
@ -641,6 +679,26 @@ function createStandardFontBundle() {
); );
} }
function createWasmBundle() {
return ordered([
gulp.src(
[
"external/openjpeg/*.wasm",
"external/openjpeg/openjpeg_nowasm_fallback.js",
"external/openjpeg/LICENSE_*",
],
{
base: "external/openjpeg",
encoding: false,
}
),
gulp.src(["external/qcms/*.wasm", "external/qcms/LICENSE_*"], {
base: "external/qcms",
encoding: false,
}),
]);
}
function checkFile(filePath) { function checkFile(filePath) {
try { try {
const stat = fs.lstatSync(filePath); const stat = fs.lstatSync(filePath);
@ -1062,7 +1120,9 @@ function buildGeneric(defines, dir) {
}) })
.pipe(gulp.dest(dir + "web")), .pipe(gulp.dest(dir + "web")),
createCMapBundle().pipe(gulp.dest(dir + "web/cmaps")), createCMapBundle().pipe(gulp.dest(dir + "web/cmaps")),
createICCBundle().pipe(gulp.dest(dir + "web/iccs")),
createStandardFontBundle().pipe(gulp.dest(dir + "web/standard_fonts")), createStandardFontBundle().pipe(gulp.dest(dir + "web/standard_fonts")),
createWasmBundle().pipe(gulp.dest(dir + "web/wasm")),
preprocessHTML("web/viewer.html", defines).pipe(gulp.dest(dir + "web")), preprocessHTML("web/viewer.html", defines).pipe(gulp.dest(dir + "web")),
preprocessCSS("web/viewer.css", defines) preprocessCSS("web/viewer.css", defines)
@ -1071,7 +1131,7 @@ function buildGeneric(defines, dir) {
postcssDirPseudoClass(), postcssDirPseudoClass(),
discardCommentsCSS(), discardCommentsCSS(),
postcssNesting(), postcssNesting(),
postcssDarkThemeClass(), postcssLightDarkFunction({ preserve: true }),
autoprefixer(AUTOPREFIXER_CONFIG), autoprefixer(AUTOPREFIXER_CONFIG),
]) ])
) )
@ -1148,6 +1208,7 @@ function buildComponents(defines, dir) {
"web/images/messageBar_*.svg", "web/images/messageBar_*.svg",
"web/images/toolbarButton-{editorHighlight,menuArrow}.svg", "web/images/toolbarButton-{editorHighlight,menuArrow}.svg",
"web/images/cursor-*.svg", "web/images/cursor-*.svg",
"web/images/comment-*.svg",
]; ];
return ordered([ return ordered([
@ -1161,6 +1222,7 @@ function buildComponents(defines, dir) {
postcssDirPseudoClass(), postcssDirPseudoClass(),
discardCommentsCSS(), discardCommentsCSS(),
postcssNesting(), postcssNesting(),
postcssLightDarkFunction({ preserve: true }),
autoprefixer(AUTOPREFIXER_CONFIG), autoprefixer(AUTOPREFIXER_CONFIG),
]) ])
) )
@ -1389,9 +1451,11 @@ gulp.task(
createCMapBundle().pipe( createCMapBundle().pipe(
gulp.dest(MOZCENTRAL_CONTENT_DIR + "web/cmaps") gulp.dest(MOZCENTRAL_CONTENT_DIR + "web/cmaps")
), ),
createICCBundle().pipe(gulp.dest(MOZCENTRAL_CONTENT_DIR + "web/iccs")),
createStandardFontBundle().pipe( createStandardFontBundle().pipe(
gulp.dest(MOZCENTRAL_CONTENT_DIR + "web/standard_fonts") gulp.dest(MOZCENTRAL_CONTENT_DIR + "web/standard_fonts")
), ),
createWasmBundle().pipe(gulp.dest(MOZCENTRAL_CONTENT_DIR + "web/wasm")),
preprocessHTML("web/viewer.html", defines).pipe( preprocessHTML("web/viewer.html", defines).pipe(
gulp.dest(MOZCENTRAL_CONTENT_DIR + "web") gulp.dest(MOZCENTRAL_CONTENT_DIR + "web")
@ -1491,9 +1555,15 @@ gulp.task(
createCMapBundle().pipe( createCMapBundle().pipe(
gulp.dest(CHROME_BUILD_CONTENT_DIR + "web/cmaps") gulp.dest(CHROME_BUILD_CONTENT_DIR + "web/cmaps")
), ),
createICCBundle().pipe(
gulp.dest(CHROME_BUILD_CONTENT_DIR + "web/iccs")
),
createStandardFontBundle().pipe( createStandardFontBundle().pipe(
gulp.dest(CHROME_BUILD_CONTENT_DIR + "web/standard_fonts") gulp.dest(CHROME_BUILD_CONTENT_DIR + "web/standard_fonts")
), ),
createWasmBundle().pipe(
gulp.dest(CHROME_BUILD_CONTENT_DIR + "web/wasm")
),
preprocessHTML("web/viewer.html", defines).pipe( preprocessHTML("web/viewer.html", defines).pipe(
gulp.dest(CHROME_BUILD_CONTENT_DIR + "web") gulp.dest(CHROME_BUILD_CONTENT_DIR + "web")
@ -1504,7 +1574,7 @@ gulp.task(
postcssDirPseudoClass(), postcssDirPseudoClass(),
discardCommentsCSS(), discardCommentsCSS(),
postcssNesting(), postcssNesting(),
postcssDarkThemeClass(), postcssLightDarkFunction({ preserve: true }),
autoprefixer(AUTOPREFIXER_CONFIG), autoprefixer(AUTOPREFIXER_CONFIG),
]) ])
) )
@ -1580,6 +1650,7 @@ function buildLibHelper(bundleDefines, inputStream, outputDir) {
"pdfjs-lib": "../pdf.js", "pdfjs-lib": "../pdf.js",
"display-cmap_reader_factory": "./cmap_reader_factory.js", "display-cmap_reader_factory": "./cmap_reader_factory.js",
"display-standard_fontdata_factory": "./standard_fontdata_factory.js", "display-standard_fontdata_factory": "./standard_fontdata_factory.js",
"display-wasm_factory": "./wasm_factory.js",
"display-fetch_stream": "./fetch_stream.js", "display-fetch_stream": "./fetch_stream.js",
"display-network": "./network.js", "display-network": "./network.js",
"display-node_stream": "./node_stream.js", "display-node_stream": "./node_stream.js",
@ -1625,6 +1696,7 @@ function buildLib(defines, dir) {
}), }),
gulp.src("test/unit/*.js", { base: ".", encoding: false }), gulp.src("test/unit/*.js", { base: ".", encoding: false }),
gulp.src("external/openjpeg/*.js", { base: "openjpeg/", encoding: false }), gulp.src("external/openjpeg/*.js", { base: "openjpeg/", encoding: false }),
gulp.src("external/qcms/*.js", { base: "qcms/", encoding: false }),
]); ]);
return buildLibHelper(bundleDefines, inputStream, dir); return buildLibHelper(bundleDefines, inputStream, dir);
@ -1928,7 +2000,11 @@ function createBaseline(done) {
gulp.task( gulp.task(
"unittestcli", "unittestcli",
gulp.series(setTestEnv, "lib-legacy", function runUnitTestCli(done) { gulp.series(
setTestEnv,
"generic-legacy",
"lib-legacy",
function runUnitTestCli(done) {
const options = [ const options = [
"node_modules/jasmine/bin/jasmine", "node_modules/jasmine/bin/jasmine",
"JASMINE_CONFIG_PATH=test/unit/clitests.json", "JASMINE_CONFIG_PATH=test/unit/clitests.json",
@ -1941,12 +2017,13 @@ gulp.task(
} }
done(); done();
}); });
}) }
)
); );
gulp.task("lint", function (done) { gulp.task("lint", function (done) {
console.log(); console.log();
console.log("### Linting JS/CSS/JSON/SVG files"); console.log("### Linting JS/CSS/JSON/SVG/HTML files");
// Ensure that we lint the Firefox specific *.jsm files too. // Ensure that we lint the Firefox specific *.jsm files too.
const esLintOptions = [ const esLintOptions = [
@ -1970,9 +2047,10 @@ gulp.task("lint", function (done) {
const prettierOptions = [ const prettierOptions = [
"node_modules/prettier/bin/prettier.cjs", "node_modules/prettier/bin/prettier.cjs",
"**/*.json", "**/*.json",
"**/*.html",
]; ];
if (process.argv.includes("--fix")) { if (process.argv.includes("--fix")) {
prettierOptions.push("--log-level", "silent", "--write"); prettierOptions.push("--log-level", "error", "--write");
} else { } else {
prettierOptions.push("--log-level", "warn", "--check"); prettierOptions.push("--log-level", "warn", "--check");
} }
@ -2055,6 +2133,15 @@ gulp.task(
) )
); );
gulp.task("dev-wasm", function () {
const VIEWER_WASM_OUTPUT = "web/wasm/";
fs.rmSync(VIEWER_WASM_OUTPUT, { recursive: true, force: true });
fs.mkdirSync(VIEWER_WASM_OUTPUT, { recursive: true });
return createWasmBundle().pipe(gulp.dest(VIEWER_WASM_OUTPUT));
});
gulp.task( gulp.task(
"dev-sandbox", "dev-sandbox",
gulp.series( gulp.series(
@ -2090,6 +2177,13 @@ gulp.task(
gulp.series("locale") gulp.series("locale")
); );
}, },
function watchWasm() {
gulp.watch(
["external/openjpeg/*", "external/qcms/*"],
{ ignoreInitial: false },
gulp.series("dev-wasm")
);
},
function watchDevSandbox() { function watchDevSandbox() {
gulp.watch( gulp.watch(
[ [
@ -2194,6 +2288,8 @@ gulp.task("metalsmith", async function () {
.use( .use(
layouts({ layouts({
directory: "docs/templates", directory: "docs/templates",
pattern: "**",
transform: "nunjucks",
}) })
) )
.use(relative()) .use(relative())
@ -2245,7 +2341,7 @@ function packageJson() {
bugs: DIST_BUGS_URL, bugs: DIST_BUGS_URL,
license: DIST_LICENSE, license: DIST_LICENSE,
optionalDependencies: { optionalDependencies: {
"@napi-rs/canvas": "^0.1.64", "@napi-rs/canvas": "^0.1.81",
}, },
browser: { browser: {
canvas: false, canvas: false,
@ -2259,7 +2355,7 @@ function packageJson() {
url: `git+${DIST_GIT_URL}`, url: `git+${DIST_GIT_URL}`,
}, },
engines: { engines: {
node: ">=20", node: ">=20.16.0 || >=22.3.0",
}, },
scripts: {}, scripts: {},
}; };
@ -2304,12 +2400,24 @@ gulp.task(
encoding: false, encoding: false,
}) })
.pipe(gulp.dest(DIST_DIR)), .pipe(gulp.dest(DIST_DIR)),
gulp
.src(GENERIC_DIR + "web/iccs/**/*", {
base: GENERIC_DIR + "web",
encoding: false,
})
.pipe(gulp.dest(DIST_DIR)),
gulp gulp
.src(GENERIC_DIR + "web/standard_fonts/**/*", { .src(GENERIC_DIR + "web/standard_fonts/**/*", {
base: GENERIC_DIR + "web", base: GENERIC_DIR + "web",
encoding: false, encoding: false,
}) })
.pipe(gulp.dest(DIST_DIR)), .pipe(gulp.dest(DIST_DIR)),
gulp
.src(GENERIC_DIR + "web/wasm/**/*", {
base: GENERIC_DIR + "web",
encoding: false,
})
.pipe(gulp.dest(DIST_DIR)),
gulp gulp
.src( .src(
[ [

View File

@ -71,24 +71,12 @@ pdfjs-document-properties-button =
pdfjs-document-properties-button-label = Jami me gin acoya… pdfjs-document-properties-button-label = Jami me gin acoya…
pdfjs-document-properties-file-name = Nying pwail: pdfjs-document-properties-file-name = Nying pwail:
pdfjs-document-properties-file-size = Dit pa pwail: pdfjs-document-properties-file-size = Dit pa pwail:
# Variables:
# $size_kb (Number) - the PDF file size in kilobytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bytes)
# Variables:
# $size_mb (Number) - the PDF file size in megabytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-mb = { $size_mb } MB ({ $size_b } bytes)
pdfjs-document-properties-title = Wiye: pdfjs-document-properties-title = Wiye:
pdfjs-document-properties-author = Ngat mucoyo: pdfjs-document-properties-author = Ngat mucoyo:
pdfjs-document-properties-subject = Subjek: pdfjs-document-properties-subject = Subjek:
pdfjs-document-properties-keywords = Lok mapire tek: pdfjs-document-properties-keywords = Lok mapire tek:
pdfjs-document-properties-creation-date = Nino dwe me cwec: pdfjs-document-properties-creation-date = Nino dwe me cwec:
pdfjs-document-properties-modification-date = Nino dwe me yub: pdfjs-document-properties-modification-date = Nino dwe me yub:
# Variables:
# $date (Date) - the creation/modification date of the PDF file
# $time (Time) - the creation/modification time of the PDF file
pdfjs-document-properties-date-string = { $date }, { $time }
pdfjs-document-properties-creator = Lacwec: pdfjs-document-properties-creator = Lacwec:
pdfjs-document-properties-producer = Layub PDF: pdfjs-document-properties-producer = Layub PDF:
pdfjs-document-properties-version = Kit PDF: pdfjs-document-properties-version = Kit PDF:
@ -185,9 +173,6 @@ pdfjs-page-scale-actual = Dite kikome
# $scale (Number) - percent value for page scale # $scale (Number) - percent value for page scale
pdfjs-page-scale-percent = { $scale }% pdfjs-page-scale-percent = { $scale }%
## PDF page
## Loading indicator messages ## Loading indicator messages
pdfjs-loading-error = Bal otime kun cano PDF. pdfjs-loading-error = Bal otime kun cano PDF.
@ -213,13 +198,3 @@ pdfjs-password-invalid = Mung me donyo pe atir. Tim ber i tem doki.
pdfjs-password-ok-button = OK pdfjs-password-ok-button = OK
pdfjs-password-cancel-button = Juki pdfjs-password-cancel-button = Juki
pdfjs-web-fonts-disabled = Kijuko dit pa coc me kakube woko: pe romo tic ki dit pa coc me PDF ma kiketo i kine. pdfjs-web-fonts-disabled = Kijuko dit pa coc me kakube woko: pe romo tic ki dit pa coc me PDF ma kiketo i kine.
## Editing
## Alt-text dialog
## Editor resizers
## This is used in an aria label to help to understand the role of the resizer.

View File

@ -71,37 +71,17 @@ pdfjs-document-properties-button =
pdfjs-document-properties-button-label = Dokumenteienskappe… pdfjs-document-properties-button-label = Dokumenteienskappe…
pdfjs-document-properties-file-name = Lêernaam: pdfjs-document-properties-file-name = Lêernaam:
pdfjs-document-properties-file-size = Lêergrootte: pdfjs-document-properties-file-size = Lêergrootte:
# Variables:
# $size_kb (Number) - the PDF file size in kilobytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-kb = { $size_kb } kG ({ $size_b } grepe)
# Variables:
# $size_mb (Number) - the PDF file size in megabytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-mb = { $size_mb } MG ({ $size_b } grepe)
pdfjs-document-properties-title = Titel: pdfjs-document-properties-title = Titel:
pdfjs-document-properties-author = Outeur: pdfjs-document-properties-author = Outeur:
pdfjs-document-properties-subject = Onderwerp: pdfjs-document-properties-subject = Onderwerp:
pdfjs-document-properties-keywords = Sleutelwoorde: pdfjs-document-properties-keywords = Sleutelwoorde:
pdfjs-document-properties-creation-date = Skeppingsdatum: pdfjs-document-properties-creation-date = Skeppingsdatum:
pdfjs-document-properties-modification-date = Wysigingsdatum: pdfjs-document-properties-modification-date = Wysigingsdatum:
# Variables:
# $date (Date) - the creation/modification date of the PDF file
# $time (Time) - the creation/modification time of the PDF file
pdfjs-document-properties-date-string = { $date }, { $time }
pdfjs-document-properties-creator = Skepper: pdfjs-document-properties-creator = Skepper:
pdfjs-document-properties-producer = PDF-vervaardiger: pdfjs-document-properties-producer = PDF-vervaardiger:
pdfjs-document-properties-version = PDF-weergawe: pdfjs-document-properties-version = PDF-weergawe:
pdfjs-document-properties-page-count = Aantal bladsye: pdfjs-document-properties-page-count = Aantal bladsye:
## Variables:
## $width (Number) - the width of the (current) page
## $height (Number) - the height of the (current) page
## $unit (String) - the unit of measurement of the (current) page
## $name (String) - the name of the (current) page
## $orientation (String) - the orientation of the (current) page
## ##
pdfjs-document-properties-close-button = Sluit pdfjs-document-properties-close-button = Sluit
@ -172,9 +152,6 @@ pdfjs-page-scale-actual = Werklike grootte
# $scale (Number) - percent value for page scale # $scale (Number) - percent value for page scale
pdfjs-page-scale-percent = { $scale }% pdfjs-page-scale-percent = { $scale }%
## PDF page
## Loading indicator messages ## Loading indicator messages
pdfjs-loading-error = 'n Fout het voorgekom met die laai van die PDF. pdfjs-loading-error = 'n Fout het voorgekom met die laai van die PDF.
@ -200,13 +177,3 @@ pdfjs-password-invalid = Ongeldige wagwoord. Probeer gerus weer.
pdfjs-password-ok-button = OK pdfjs-password-ok-button = OK
pdfjs-password-cancel-button = Kanselleer pdfjs-password-cancel-button = Kanselleer
pdfjs-web-fonts-disabled = Webfonte is gedeaktiveer: kan nie PDF-fonte wat ingebed is, gebruik nie. pdfjs-web-fonts-disabled = Webfonte is gedeaktiveer: kan nie PDF-fonte wat ingebed is, gebruik nie.
## Editing
## Alt-text dialog
## Editor resizers
## This is used in an aria label to help to understand the role of the resizer.

View File

@ -89,24 +89,12 @@ pdfjs-document-properties-button =
pdfjs-document-properties-button-label = Propiedatz d'o documento... pdfjs-document-properties-button-label = Propiedatz d'o documento...
pdfjs-document-properties-file-name = Nombre de fichero: pdfjs-document-properties-file-name = Nombre de fichero:
pdfjs-document-properties-file-size = Grandaria d'o fichero: pdfjs-document-properties-file-size = Grandaria d'o fichero:
# Variables:
# $size_kb (Number) - the PDF file size in kilobytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bytes)
# Variables:
# $size_mb (Number) - the PDF file size in megabytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-mb = { $size_mb } MB ({ $size_b } bytes)
pdfjs-document-properties-title = Titol: pdfjs-document-properties-title = Titol:
pdfjs-document-properties-author = Autor: pdfjs-document-properties-author = Autor:
pdfjs-document-properties-subject = Afer: pdfjs-document-properties-subject = Afer:
pdfjs-document-properties-keywords = Parolas clau: pdfjs-document-properties-keywords = Parolas clau:
pdfjs-document-properties-creation-date = Calendata de creyación: pdfjs-document-properties-creation-date = Calendata de creyación:
pdfjs-document-properties-modification-date = Calendata de modificación: pdfjs-document-properties-modification-date = Calendata de modificación:
# Variables:
# $date (Date) - the creation/modification date of the PDF file
# $time (Time) - the creation/modification time of the PDF file
pdfjs-document-properties-date-string = { $date }, { $time }
pdfjs-document-properties-creator = Creyador: pdfjs-document-properties-creator = Creyador:
pdfjs-document-properties-producer = Creyador de PDF: pdfjs-document-properties-producer = Creyador de PDF:
pdfjs-document-properties-version = Versión de PDF: pdfjs-document-properties-version = Versión de PDF:
@ -213,9 +201,6 @@ pdfjs-page-scale-actual = Grandaria actual
# $scale (Number) - percent value for page scale # $scale (Number) - percent value for page scale
pdfjs-page-scale-percent = { $scale }% pdfjs-page-scale-percent = { $scale }%
## PDF page
## Loading indicator messages ## Loading indicator messages
pdfjs-loading-error = S'ha produciu una error en cargar o PDF. pdfjs-loading-error = S'ha produciu una error en cargar o PDF.
@ -226,10 +211,6 @@ pdfjs-rendering-error = Ha ocurriu una error en renderizar a pachina.
## Annotations ## Annotations
# Variables:
# $date (Date) - the modification date of the annotation
# $time (Time) - the modification time of the annotation
pdfjs-annotation-date-string = { $date }, { $time }
# .alt: This is used as a tooltip. # .alt: This is used as a tooltip.
# Variables: # Variables:
# $type (String) - an annotation type from a list defined in the PDF spec # $type (String) - an annotation type from a list defined in the PDF spec
@ -245,13 +226,3 @@ pdfjs-password-invalid = Clau invalida. Torna a intentar-lo.
pdfjs-password-ok-button = Acceptar pdfjs-password-ok-button = Acceptar
pdfjs-password-cancel-button = Cancelar pdfjs-password-cancel-button = Cancelar
pdfjs-web-fonts-disabled = As fuents web son desactivadas: no se puet incrustar fichers PDF. pdfjs-web-fonts-disabled = As fuents web son desactivadas: no se puet incrustar fichers PDF.
## Editing
## Alt-text dialog
## Editor resizers
## This is used in an aria label to help to understand the role of the resizer.

View File

@ -105,13 +105,13 @@ pdfjs-document-properties-button-label = خصائص المستند…
pdfjs-document-properties-file-name = اسم الملف: pdfjs-document-properties-file-name = اسم الملف:
pdfjs-document-properties-file-size = حجم الملف: pdfjs-document-properties-file-size = حجم الملف:
# Variables: # Variables:
# $size_kb (Number) - the PDF file size in kilobytes # $kb (Number) - the PDF file size in kilobytes
# $size_b (Number) - the PDF file size in bytes # $b (Number) - the PDF file size in bytes
pdfjs-document-properties-kb = { $size_kb } ك.بايت ({ $size_b } بايت) pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } ك.بايت ({ $b } بايتات)
# Variables: # Variables:
# $size_mb (Number) - the PDF file size in megabytes # $mb (Number) - the PDF file size in megabytes
# $size_b (Number) - the PDF file size in bytes # $b (Number) - the PDF file size in bytes
pdfjs-document-properties-mb = { $size_mb } م.بايت ({ $size_b } بايت) pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } م.بايت ({ $b } بايتات)
pdfjs-document-properties-title = العنوان: pdfjs-document-properties-title = العنوان:
pdfjs-document-properties-author = المؤلف: pdfjs-document-properties-author = المؤلف:
pdfjs-document-properties-subject = الموضوع: pdfjs-document-properties-subject = الموضوع:
@ -119,9 +119,8 @@ pdfjs-document-properties-keywords = الكلمات الأساسية:
pdfjs-document-properties-creation-date = تاريخ الإنشاء: pdfjs-document-properties-creation-date = تاريخ الإنشاء:
pdfjs-document-properties-modification-date = تاريخ التعديل: pdfjs-document-properties-modification-date = تاريخ التعديل:
# Variables: # Variables:
# $date (Date) - the creation/modification date of the PDF file # $dateObj (Date) - the creation/modification date and time of the PDF file
# $time (Time) - the creation/modification time of the PDF file pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
pdfjs-document-properties-date-string = { $date }، { $time }
pdfjs-document-properties-creator = المنشئ: pdfjs-document-properties-creator = المنشئ:
pdfjs-document-properties-producer = منتج PDF: pdfjs-document-properties-producer = منتج PDF:
pdfjs-document-properties-version = إصدارة PDF: pdfjs-document-properties-version = إصدارة PDF:
@ -216,7 +215,7 @@ pdfjs-find-next-button =
pdfjs-find-next-button-label = التالي pdfjs-find-next-button-label = التالي
pdfjs-find-highlight-checkbox = أبرِز الكل pdfjs-find-highlight-checkbox = أبرِز الكل
pdfjs-find-match-case-checkbox-label = طابق حالة الأحرف pdfjs-find-match-case-checkbox-label = طابق حالة الأحرف
pdfjs-find-match-diacritics-checkbox-label = طابِق الحركات pdfjs-find-match-diacritics-checkbox-label = طابِق التشكيل
pdfjs-find-entire-word-checkbox-label = كلمات كاملة pdfjs-find-entire-word-checkbox-label = كلمات كاملة
pdfjs-find-reached-top = تابعت من الأسفل بعدما وصلت إلى بداية المستند pdfjs-find-reached-top = تابعت من الأسفل بعدما وصلت إلى بداية المستند
pdfjs-find-reached-bottom = تابعت من الأعلى بعدما وصلت إلى نهاية المستند pdfjs-find-reached-bottom = تابعت من الأعلى بعدما وصلت إلى نهاية المستند
@ -272,10 +271,6 @@ pdfjs-rendering-error = حدث خطأ أثناء عرض الصفحة.
## Annotations ## Annotations
# Variables:
# $date (Date) - the modification date of the annotation
# $time (Time) - the modification time of the annotation
pdfjs-annotation-date-string = { $date }، { $time }
# .alt: This is used as a tooltip. # .alt: This is used as a tooltip.
# Variables: # Variables:
# $type (String) - an annotation type from a list defined in the PDF spec # $type (String) - an annotation type from a list defined in the PDF spec
@ -283,6 +278,9 @@ pdfjs-annotation-date-string = { $date }، { $time }
# Some common types are e.g.: "Check", "Text", "Comment", "Note" # Some common types are e.g.: "Check", "Text", "Comment", "Note"
pdfjs-text-annotation-type = pdfjs-text-annotation-type =
.alt = [تعليق { $type }] .alt = [تعليق { $type }]
# Variables:
# $dateObj (Date) - the modification date and time of the annotation
pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
## Password ## Password
@ -310,6 +308,25 @@ pdfjs-highlight-floating-button1 =
.title = أبرِز .title = أبرِز
.aria-label = أبرِز .aria-label = أبرِز
pdfjs-highlight-floating-button-label = أبرِز pdfjs-highlight-floating-button-label = أبرِز
pdfjs-editor-signature-button =
.title = أضِف توقيع
pdfjs-editor-signature-button-label = أضِف توقيع
## Default editor aria labels
# “Highlight” is a noun, the string is used on the editor for highlights.
pdfjs-editor-highlight-editor =
.aria-label = محرِّر الإبراز
# “Drawing” is a noun, the string is used on the editor for drawings.
pdfjs-editor-ink-editor =
.aria-label = محرِّر الرسم
# Used when a signature editor is selected/hovered.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-signature-editor1 =
.aria-description = محرِّر التوقيع: { $description }
pdfjs-editor-stamp-editor =
.aria-label = محرِّر الصور
## Remove button for the various kind of editor. ## Remove button for the various kind of editor.
@ -321,6 +338,8 @@ pdfjs-editor-remove-stamp-button =
.title = أزِل الصورة .title = أزِل الصورة
pdfjs-editor-remove-highlight-button = pdfjs-editor-remove-highlight-button =
.title = أزِل الإبراز .title = أزِل الإبراز
pdfjs-editor-remove-signature-button =
.title = أزِل التوقيع
## ##
@ -337,19 +356,26 @@ pdfjs-editor-stamp-add-image-button-label = أضِف صورة
pdfjs-editor-free-highlight-thickness-input = السماكة pdfjs-editor-free-highlight-thickness-input = السماكة
pdfjs-editor-free-highlight-thickness-title = pdfjs-editor-free-highlight-thickness-title =
.title = غيّر السُمك عند إبراز عناصر أُخرى غير النص .title = غيّر السُمك عند إبراز عناصر أُخرى غير النص
pdfjs-free-text = pdfjs-editor-add-signature-container =
.aria-label = عناصر التحكم في التوقيع والتوقيعات المحفوظة
pdfjs-editor-signature-add-signature-button =
.title = أضِف توقيع جديد
pdfjs-editor-signature-add-signature-button-label = أضِف توقيع جديد
# Used on the button to use an already saved signature.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-add-saved-signature-button =
.title = التوقيع المحفوظ: { $description }
# .default-content is used as a placeholder in an empty text editor.
pdfjs-free-text2 =
.aria-label = محرِّر النص .aria-label = محرِّر النص
pdfjs-free-text-default-content = ابدأ الكتابة… .default-content = ابدأ في كتابة…
pdfjs-ink =
.aria-label = محرِّر الرسم
pdfjs-ink-canvas =
.aria-label = صورة أنشأها المستخدم
## Alt-text dialog ## Alt-text dialog
# Alternative text (alt text) helps when people can't see the image.
pdfjs-editor-alt-text-button-label = نص بديل pdfjs-editor-alt-text-button-label = نص بديل
pdfjs-editor-alt-text-edit-button-label = تحرير النص البديل pdfjs-editor-alt-text-edit-button =
.aria-label = حرّر النص البديل
pdfjs-editor-alt-text-dialog-label = اختر خيار pdfjs-editor-alt-text-dialog-label = اختر خيار
pdfjs-editor-alt-text-dialog-description = يساعد النص البديل عندما لا يتمكن الأشخاص من رؤية الصورة أو عندما لا يتم تحميلها. pdfjs-editor-alt-text-dialog-description = يساعد النص البديل عندما لا يتمكن الأشخاص من رؤية الصورة أو عندما لا يتم تحميلها.
pdfjs-editor-alt-text-add-description-label = أضِف وصف pdfjs-editor-alt-text-add-description-label = أضِف وصف
@ -362,18 +388,13 @@ pdfjs-editor-alt-text-decorative-tooltip = عُلّمت على أنها زخرف
# .placeholder: This is a placeholder for the alt text input area # .placeholder: This is a placeholder for the alt text input area
pdfjs-editor-alt-text-textarea = pdfjs-editor-alt-text-textarea =
.placeholder = على سبيل المثال، "يجلس شاب على الطاولة لتناول وجبة" .placeholder = على سبيل المثال، "يجلس شاب على الطاولة لتناول وجبة"
# Alternative text (alt text) helps when people can't see the image.
pdfjs-editor-alt-text-button =
.aria-label = نص بديل
## Editor resizers ## Editor resizers
## This is used in an aria label to help to understand the role of the resizer. ## This is used in an aria label to help to understand the role of the resizer.
pdfjs-editor-resizer-label-top-left = الزاوية اليُسرى العُليا — غيّر الحجم
pdfjs-editor-resizer-label-top-middle = أعلى الوسط - غيّر الحجم
pdfjs-editor-resizer-label-top-right = الزاوية اليُمنى العُليا - غيّر الحجم
pdfjs-editor-resizer-label-middle-right = اليمين الأوسط - غيّر الحجم
pdfjs-editor-resizer-label-bottom-right = الزاوية اليُمنى السُفلى - غيّر الحجم
pdfjs-editor-resizer-label-bottom-middle = أسفل الوسط - غيّر الحجم
pdfjs-editor-resizer-label-bottom-left = الزاوية اليُسرى السُفلية - غيّر الحجم
pdfjs-editor-resizer-label-middle-left = مُنتصف اليسار - غيّر الحجم
pdfjs-editor-resizer-top-left = pdfjs-editor-resizer-top-left =
.aria-label = الزاوية اليُسرى العُليا — غيّر الحجم .aria-label = الزاوية اليُسرى العُليا — غيّر الحجم
pdfjs-editor-resizer-top-middle = pdfjs-editor-resizer-top-middle =
@ -420,6 +441,155 @@ pdfjs-editor-highlight-show-all-button =
## New alt-text dialog ## New alt-text dialog
## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. ## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.
# Modal header positioned above a text box where users can edit the alt text.
pdfjs-editor-new-alt-text-dialog-edit-label = حرّر النص البديل (وصف الصورة)
# Modal header positioned above a text box where users can add the alt text.
pdfjs-editor-new-alt-text-dialog-add-label = أضِف النص البديل (وصف الصورة)
pdfjs-editor-new-alt-text-textarea =
.placeholder = اكتب وصفك هنا…
# This text refers to the alt text box above this description. It offers a definition of alt text.
pdfjs-editor-new-alt-text-description = وصف مختصر للأشخاص الذين لا يستطيعون رؤية الصورة أو عندما لا يتم تحميل الصورة.
# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.
pdfjs-editor-new-alt-text-disclaimer1 = أُنشئ هذا النص البديل تلقائيًا وقد يكون غير دقيق.
pdfjs-editor-new-alt-text-disclaimer-learn-more-url = اطّلع على المزيد
pdfjs-editor-new-alt-text-create-automatically-button-label = أنشئ نص بديل تلقائيًا
pdfjs-editor-new-alt-text-not-now-button = ليس الآن
pdfjs-editor-new-alt-text-error-title = لم يتمكن من إنشاء نص بديل تلقائيًا
pdfjs-editor-new-alt-text-error-description = يُرجى كتابة نص بديلك أو المحاولة مرة أخرى لاحقًا.
pdfjs-editor-new-alt-text-error-close-button = أغلق
# Variables:
# $totalSize (Number) - the total size (in MB) of the AI model.
# $downloadedSize (Number) - the downloaded size (in MB) of the AI model.
pdfjs-editor-new-alt-text-ai-model-downloading-progress = يُنزّل نموذج الذكاء الاصطناعي للنص البديل ({ $downloadedSize } من { $totalSize } م.بايت)
.aria-valuetext = يُنزّل نموذج الذكاء الاصطناعي للنص البديل ({ $downloadedSize } من { $totalSize } م.بايت)
# This is a button that users can click to edit the alt text they have already added.
pdfjs-editor-new-alt-text-added-button =
.aria-label = أُضِيف نص بديل
pdfjs-editor-new-alt-text-added-button-label = أُضِيف نص بديل
# This is a button that users can click to open the alt text editor and add alt text when it is not present.
pdfjs-editor-new-alt-text-missing-button =
.aria-label = نص بديل مفقود
pdfjs-editor-new-alt-text-missing-button-label = نص بديل مفقود
# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.
pdfjs-editor-new-alt-text-to-review-button =
.aria-label = راجع النص البديل
pdfjs-editor-new-alt-text-to-review-button-label = راجع النص البديل
# "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.
# Variables:
# $generatedAltText (String) - the generated alt-text.
pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = أُنشئ تلقائيًا: { $generatedAltText }
## Image alt-text settings ## Image alt-text settings
pdfjs-image-alt-text-settings-button =
.title = إعدادات النص البديل للصورة
pdfjs-image-alt-text-settings-button-label = إعدادات النص البديل للصورة
pdfjs-editor-alt-text-settings-dialog-label = إعدادات النص البديل للصورة
pdfjs-editor-alt-text-settings-automatic-title = نص بديل تلقائي
pdfjs-editor-alt-text-settings-create-model-button-label = أنشئ نص بديل تلقائيًا
pdfjs-editor-alt-text-settings-create-model-description = يقترح أوصافًا لمساعدة الأشخاص الذين لا يستطيعون رؤية الصورة أو عندما لا يتم تحميل الصورة.
# Variables:
# $totalSize (Number) - the total size (in MB) of the AI model.
pdfjs-editor-alt-text-settings-download-model-label = نموذج الذكاء الاصطناعي للنص البديل ({ $totalSize } م.بايت)
pdfjs-editor-alt-text-settings-ai-model-description = يتم تشغيله محليًا على جهازك حتى تظل بياناتك خاصة. مطلوب للنص البديل التلقائي.
pdfjs-editor-alt-text-settings-delete-model-button = احذف
pdfjs-editor-alt-text-settings-download-model-button = نزّل
pdfjs-editor-alt-text-settings-downloading-model-button = يُنزل…
pdfjs-editor-alt-text-settings-editor-title = مُحرِّر النص البديل
pdfjs-editor-alt-text-settings-show-dialog-button-label = أظهِر مُحرِّر النص البديل على الفور عند إضافة صورة
pdfjs-editor-alt-text-settings-show-dialog-description = يساعدك على التأكد من أن جميع صورك تحتوي على نص بديل.
pdfjs-editor-alt-text-settings-close-button = أغلق
## "Annotations removed" bar
pdfjs-editor-undo-bar-message-highlight = أُزِيل البرز
pdfjs-editor-undo-bar-message-freetext = أُزيل النص
pdfjs-editor-undo-bar-message-ink = أُزِيلت الرسمة
pdfjs-editor-undo-bar-message-stamp = أُزيلت الصورة
pdfjs-editor-undo-bar-message-signature = أُزيل التوقيع
# Variables:
# $count (Number) - the number of removed annotations.
pdfjs-editor-undo-bar-message-multiple =
{ $count ->
[zero] أُزيل لا تعليق
[one] أُزيل تعليق
[two] أُزيل تعليقين
[few] أُزيلت { $count } تعليقات
[many] أُزيل { $count } تعليق
*[other] أُزيل { $count } تعليق
}
pdfjs-editor-undo-bar-undo-button =
.title = تراجع
pdfjs-editor-undo-bar-undo-button-label = تراجع
pdfjs-editor-undo-bar-close-button =
.title = أغلق
pdfjs-editor-undo-bar-close-button-label = أغلق
## Add a signature dialog
pdfjs-editor-add-signature-dialog-label = يتيح هذا النموذج للمستخدم إنشاء توقيع لإضافته إلى مستند PDF. ويمكن للمستخدم تحرير الاسم (الذي يعمل أيضًا كنص بديل)، وحفظ التوقيع بشكل اختياري للاستخدام المتكرر.
pdfjs-editor-add-signature-dialog-title = أضِف توقيعا
## Tab names
# Type is a verb (you can type your name as signature)
pdfjs-editor-add-signature-type-button = اكتب
.title = اكتب
# Draw is a verb (you can draw your signature)
pdfjs-editor-add-signature-draw-button = ارسم
.title = ارسم
pdfjs-editor-add-signature-image-button = صورة
.title = صورة
## Tab panels
pdfjs-editor-add-signature-type-input =
.aria-label = اكتب توقيعك
.placeholder = اكتب توقيعك
pdfjs-editor-add-signature-draw-placeholder = ارسم توقيعك
pdfjs-editor-add-signature-draw-thickness-range-label = السماكة
# Variables:
# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.
pdfjs-editor-add-signature-draw-thickness-range =
.title = سمك الرسم: { $thickness }
pdfjs-editor-add-signature-image-placeholder = اسحب الملف هنا لرفعه
pdfjs-editor-add-signature-image-browse-link =
{ PLATFORM() ->
[macos] أو اختر ملفات الصور
*[other] أو تصفح ملفات الصور
}
## Controls
pdfjs-editor-add-signature-description-label = الوصف (نص بديل)
pdfjs-editor-add-signature-description-input =
.title = الوصف (نص بديل)
pdfjs-editor-add-signature-description-default-when-drawing = توقيع
pdfjs-editor-add-signature-clear-button-label = امحُ التوقيع
pdfjs-editor-add-signature-clear-button =
.title = امحُ التوقيع
pdfjs-editor-add-signature-save-checkbox = احفظ التوقيع
pdfjs-editor-add-signature-save-warning-message = لقد وصلت إلى الحد الأقصى وهو 5 توقيعات محفوظة. أزِل توقيع واحد لحفظ المزيد.
pdfjs-editor-add-signature-image-upload-error-title = تعذر رفع الصورة.
pdfjs-editor-add-signature-image-upload-error-description = تحقق من اتصال الشبكة لديك أو جرّب صورة أخرى.
pdfjs-editor-add-signature-error-close-button = أغلق
## Dialog buttons
pdfjs-editor-add-signature-cancel-button = ألغِ
pdfjs-editor-add-signature-add-button = أضِف
pdfjs-editor-edit-signature-update-button = حدّث
## Main menu for adding/removing signatures
pdfjs-editor-delete-signature-button1 =
.title = أزِل التوقيع المحفوظ
pdfjs-editor-delete-signature-button-label1 = أزِل التوقيع المحفوظ
## Editor toolbar
pdfjs-editor-add-signature-edit-button-label = عدّل الوصف
## Edit signature description dialog
pdfjs-editor-edit-signature-dialog-title = عدّل الوصف

View File

@ -77,22 +77,10 @@ pdfjs-document-properties-button =
pdfjs-document-properties-button-label = Propiedaes del documentu… pdfjs-document-properties-button-label = Propiedaes del documentu…
pdfjs-document-properties-file-name = Nome del ficheru: pdfjs-document-properties-file-name = Nome del ficheru:
pdfjs-document-properties-file-size = Tamañu del ficheru: pdfjs-document-properties-file-size = Tamañu del ficheru:
# Variables:
# $size_kb (Number) - the PDF file size in kilobytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bytes)
# Variables:
# $size_mb (Number) - the PDF file size in megabytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-mb = { $size_mb } MB ({ $size_b } bytes)
pdfjs-document-properties-title = Títulu: pdfjs-document-properties-title = Títulu:
pdfjs-document-properties-keywords = Pallabres clave: pdfjs-document-properties-keywords = Pallabres clave:
pdfjs-document-properties-creation-date = Data de creación: pdfjs-document-properties-creation-date = Data de creación:
pdfjs-document-properties-modification-date = Data de modificación: pdfjs-document-properties-modification-date = Data de modificación:
# Variables:
# $date (Date) - the creation/modification date of the PDF file
# $time (Time) - the creation/modification time of the PDF file
pdfjs-document-properties-date-string = { $date }, { $time }
pdfjs-document-properties-producer = Productor del PDF: pdfjs-document-properties-producer = Productor del PDF:
pdfjs-document-properties-version = Versión del PDF: pdfjs-document-properties-version = Versión del PDF:
pdfjs-document-properties-page-count = Númberu de páxines: pdfjs-document-properties-page-count = Númberu de páxines:
@ -178,24 +166,7 @@ pdfjs-page-landmark =
pdfjs-loading-error = Asocedió un fallu mentanto se cargaba'l PDF. pdfjs-loading-error = Asocedió un fallu mentanto se cargaba'l PDF.
## Annotations
# Variables:
# $date (Date) - the modification date of the annotation
# $time (Time) - the modification time of the annotation
pdfjs-annotation-date-string = { $date }, { $time }
## Password ## Password
pdfjs-password-ok-button = Aceptar pdfjs-password-ok-button = Aceptar
pdfjs-password-cancel-button = Encaboxar pdfjs-password-cancel-button = Encaboxar
## Editing
## Alt-text dialog
## Editor resizers
## This is used in an aria label to help to understand the role of the resizer.

View File

@ -89,24 +89,12 @@ pdfjs-document-properties-button =
pdfjs-document-properties-button-label = Sənəd xüsusiyyətləri… pdfjs-document-properties-button-label = Sənəd xüsusiyyətləri…
pdfjs-document-properties-file-name = Fayl adı: pdfjs-document-properties-file-name = Fayl adı:
pdfjs-document-properties-file-size = Fayl ölçüsü: pdfjs-document-properties-file-size = Fayl ölçüsü:
# Variables:
# $size_kb (Number) - the PDF file size in kilobytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bayt)
# Variables:
# $size_mb (Number) - the PDF file size in megabytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-mb = { $size_mb } MB ({ $size_b } bayt)
pdfjs-document-properties-title = Başlık: pdfjs-document-properties-title = Başlık:
pdfjs-document-properties-author = Müəllif: pdfjs-document-properties-author = Müəllif:
pdfjs-document-properties-subject = Mövzu: pdfjs-document-properties-subject = Mövzu:
pdfjs-document-properties-keywords = Açar sözlər: pdfjs-document-properties-keywords = Açar sözlər:
pdfjs-document-properties-creation-date = Yaradılış Tarixi : pdfjs-document-properties-creation-date = Yaradılış Tarixi :
pdfjs-document-properties-modification-date = Dəyişdirilmə Tarixi : pdfjs-document-properties-modification-date = Dəyişdirilmə Tarixi :
# Variables:
# $date (Date) - the creation/modification date of the PDF file
# $time (Time) - the creation/modification time of the PDF file
pdfjs-document-properties-date-string = { $date }, { $time }
pdfjs-document-properties-creator = Yaradan: pdfjs-document-properties-creator = Yaradan:
pdfjs-document-properties-producer = PDF yaradıcısı: pdfjs-document-properties-producer = PDF yaradıcısı:
pdfjs-document-properties-version = PDF versiyası: pdfjs-document-properties-version = PDF versiyası:
@ -213,9 +201,6 @@ pdfjs-page-scale-actual = Hazırkı Həcm
# $scale (Number) - percent value for page scale # $scale (Number) - percent value for page scale
pdfjs-page-scale-percent = { $scale }% pdfjs-page-scale-percent = { $scale }%
## PDF page
## Loading indicator messages ## Loading indicator messages
pdfjs-loading-error = PDF yüklenərkən bir səhv yarandı. pdfjs-loading-error = PDF yüklenərkən bir səhv yarandı.
@ -226,10 +211,6 @@ pdfjs-rendering-error = Səhifə göstərilərkən səhv yarandı.
## Annotations ## Annotations
# Variables:
# $date (Date) - the modification date of the annotation
# $time (Time) - the modification time of the annotation
pdfjs-annotation-date-string = { $date }, { $time }
# .alt: This is used as a tooltip. # .alt: This is used as a tooltip.
# Variables: # Variables:
# $type (String) - an annotation type from a list defined in the PDF spec # $type (String) - an annotation type from a list defined in the PDF spec
@ -245,13 +226,3 @@ pdfjs-password-invalid = Parol səhvdir. Bir daha yoxlayın.
pdfjs-password-ok-button = Tamam pdfjs-password-ok-button = Tamam
pdfjs-password-cancel-button = Ləğv et pdfjs-password-cancel-button = Ləğv et
pdfjs-web-fonts-disabled = Web Şriftlər söndürülüb: yerləşdirilmiş PDF şriftlərini istifadə etmək mümkün deyil. pdfjs-web-fonts-disabled = Web Şriftlər söndürülüb: yerləşdirilmiş PDF şriftlərini istifadə etmək mümkün deyil.
## Editing
## Alt-text dialog
## Editor resizers
## This is used in an aria label to help to understand the role of the resizer.

View File

@ -112,14 +112,6 @@ pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) }
# $mb (Number) - the PDF file size in megabytes # $mb (Number) - the PDF file size in megabytes
# $b (Number) - the PDF file size in bytes # $b (Number) - the PDF file size in bytes
pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } МБ ({ $b } байтаў) pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } МБ ({ $b } байтаў)
# Variables:
# $size_kb (Number) - the PDF file size in kilobytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-kb = { $size_kb } КБ ({ $size_b } байт)
# Variables:
# $size_mb (Number) - the PDF file size in megabytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-mb = { $size_mb } МБ ({ $size_b } байт)
pdfjs-document-properties-title = Загаловак: pdfjs-document-properties-title = Загаловак:
pdfjs-document-properties-author = Аўтар: pdfjs-document-properties-author = Аўтар:
pdfjs-document-properties-subject = Тэма: pdfjs-document-properties-subject = Тэма:
@ -129,10 +121,6 @@ pdfjs-document-properties-modification-date = Дата змянення:
# Variables: # Variables:
# $dateObj (Date) - the creation/modification date and time of the PDF file # $dateObj (Date) - the creation/modification date and time of the PDF file
pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") } pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
# Variables:
# $date (Date) - the creation/modification date of the PDF file
# $time (Time) - the creation/modification time of the PDF file
pdfjs-document-properties-date-string = { $date }, { $time }
pdfjs-document-properties-creator = Стваральнік: pdfjs-document-properties-creator = Стваральнік:
pdfjs-document-properties-producer = Вырабнік PDF: pdfjs-document-properties-producer = Вырабнік PDF:
pdfjs-document-properties-version = Версія PDF: pdfjs-document-properties-version = Версія PDF:
@ -277,10 +265,6 @@ pdfjs-rendering-error = Здарылася памылка падчас адлю
## Annotations ## Annotations
# Variables:
# $date (Date) - the modification date of the annotation
# $time (Time) - the modification time of the annotation
pdfjs-annotation-date-string = { $date }, { $time }
# .alt: This is used as a tooltip. # .alt: This is used as a tooltip.
# Variables: # Variables:
# $type (String) - an annotation type from a list defined in the PDF spec # $type (String) - an annotation type from a list defined in the PDF spec
@ -304,9 +288,13 @@ pdfjs-web-fonts-disabled = Шрыфты Сеціва забаронены: не
pdfjs-editor-free-text-button = pdfjs-editor-free-text-button =
.title = Тэкст .title = Тэкст
pdfjs-editor-color-picker-free-text-input =
.title = Змяніць колер тэксту
pdfjs-editor-free-text-button-label = Тэкст pdfjs-editor-free-text-button-label = Тэкст
pdfjs-editor-ink-button = pdfjs-editor-ink-button =
.title = Маляваць .title = Маляваць
pdfjs-editor-color-picker-ink-input =
.title = Змяніць колер малюнка
pdfjs-editor-ink-button-label = Маляваць pdfjs-editor-ink-button-label = Маляваць
pdfjs-editor-stamp-button = pdfjs-editor-stamp-button =
.title = Дадаць або змяніць выявы .title = Дадаць або змяніць выявы
@ -318,6 +306,33 @@ pdfjs-highlight-floating-button1 =
.title = Падфарбаваць .title = Падфарбаваць
.aria-label = Падфарбаваць .aria-label = Падфарбаваць
pdfjs-highlight-floating-button-label = Падфарбаваць pdfjs-highlight-floating-button-label = Падфарбаваць
pdfjs-comment-floating-button =
.title = Каментаваць
.aria-label = Каментаваць
pdfjs-comment-floating-button-label = Каментаваць
pdfjs-editor-comment-button =
.title = Каментарый
.aria-label = Каментарый
pdfjs-editor-comment-button-label = Каментарый
pdfjs-editor-signature-button =
.title = Дадаць подпіс
pdfjs-editor-signature-button-label = Дадаць подпіс
## Default editor aria labels
# “Highlight” is a noun, the string is used on the editor for highlights.
pdfjs-editor-highlight-editor =
.aria-label = Рэдактар вылучэнняў
# “Drawing” is a noun, the string is used on the editor for drawings.
pdfjs-editor-ink-editor =
.aria-label = Рэдактар малюнкаў
# Used when a signature editor is selected/hovered.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-signature-editor1 =
.aria-description = Рэдактар подпісаў: { $description }
pdfjs-editor-stamp-editor =
.aria-label = Рэдактар выяў
## Remove button for the various kind of editor. ## Remove button for the various kind of editor.
@ -329,6 +344,8 @@ pdfjs-editor-remove-stamp-button =
.title = Выдаліць выяву .title = Выдаліць выяву
pdfjs-editor-remove-highlight-button = pdfjs-editor-remove-highlight-button =
.title = Выдаліць падфарбоўку .title = Выдаліць падфарбоўку
pdfjs-editor-remove-signature-button =
.title = Выдаліць подпіс
## ##
@ -345,24 +362,42 @@ pdfjs-editor-stamp-add-image-button-label = Дадаць выяву
pdfjs-editor-free-highlight-thickness-input = Таўшчыня pdfjs-editor-free-highlight-thickness-input = Таўшчыня
pdfjs-editor-free-highlight-thickness-title = pdfjs-editor-free-highlight-thickness-title =
.title = Змяняць таўшчыню пры вылучэнні іншых элементаў, акрамя тэксту .title = Змяняць таўшчыню пры вылучэнні іншых элементаў, акрамя тэксту
pdfjs-editor-add-signature-container =
.aria-label = Элементы кіравання подпісамі і захаваныя подпісы
pdfjs-editor-signature-add-signature-button =
.title = Дадаць новы подпіс
pdfjs-editor-signature-add-signature-button-label = Дадаць новы подпіс
# Used on the button to use an already saved signature.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-add-saved-signature-button =
.title = Захаваны подпіс: { $description }
# .default-content is used as a placeholder in an empty text editor. # .default-content is used as a placeholder in an empty text editor.
pdfjs-free-text2 = pdfjs-free-text2 =
.aria-label = Тэкставы рэдактар .aria-label = Тэкставы рэдактар
.default-content = Пачніце ўводзіць… .default-content = Пачніце ўводзіць…
pdfjs-free-text = # Used to show how many comments are present in the pdf file.
.aria-label = Тэкставы рэдактар # Variables:
pdfjs-free-text-default-content = Пачніце набор тэксту… # $count (Number) - the number of comments.
pdfjs-ink = pdfjs-editor-comments-sidebar-title =
.aria-label = Графічны рэдактар { $count ->
pdfjs-ink-canvas = [one] Каментарый
.aria-label = Выява, створаная карыстальнікам [few] Каментарыі
*[many] Каментарыі
}
pdfjs-editor-comments-sidebar-close-button =
.title = Закрыць бакавую панэль
.aria-label = Закрыць бакавую панэль
pdfjs-editor-comments-sidebar-close-button-label = Закрыць бакавую панэль
# Instructional copy to add a comment by selecting text or an annotations.
pdfjs-editor-comments-sidebar-no-comments1 = Бачыце штосьці вартае ўвагі? Вылучыце і пакіньце каментарый.
pdfjs-editor-comments-sidebar-no-comments-link = Падрабязней
## Alt-text dialog ## Alt-text dialog
pdfjs-editor-alt-text-button-label = Альтэрнатыўны тэкст pdfjs-editor-alt-text-button-label = Альтэрнатыўны тэкст
pdfjs-editor-alt-text-edit-button = pdfjs-editor-alt-text-edit-button =
.aria-label = Змяніць альтэрнатыўны тэкст .aria-label = Змяніць альтэрнатыўны тэкст
pdfjs-editor-alt-text-edit-button-label = Змяніць альтэрнатыўны тэкст
pdfjs-editor-alt-text-dialog-label = Выберыце варыянт pdfjs-editor-alt-text-dialog-label = Выберыце варыянт
pdfjs-editor-alt-text-dialog-description = Альтэрнатыўны тэкст дапамагае, калі людзі не бачаць выяву або калі яна не загружаецца. pdfjs-editor-alt-text-dialog-description = Альтэрнатыўны тэкст дапамагае, калі людзі не бачаць выяву або калі яна не загружаецца.
pdfjs-editor-alt-text-add-description-label = Дадаць апісанне pdfjs-editor-alt-text-add-description-label = Дадаць апісанне
@ -382,14 +417,6 @@ pdfjs-editor-alt-text-button =
## Editor resizers ## Editor resizers
## This is used in an aria label to help to understand the role of the resizer. ## This is used in an aria label to help to understand the role of the resizer.
pdfjs-editor-resizer-label-top-left = Верхні левы кут — змяніць памер
pdfjs-editor-resizer-label-top-middle = Уверсе пасярэдзіне — змяніць памер
pdfjs-editor-resizer-label-top-right = Верхні правы кут — змяніць памер
pdfjs-editor-resizer-label-middle-right = Пасярэдзіне справа — змяніць памер
pdfjs-editor-resizer-label-bottom-right = Правы ніжні кут — змяніць памер
pdfjs-editor-resizer-label-bottom-middle = Пасярэдзіне ўнізе — змяніць памер
pdfjs-editor-resizer-label-bottom-left = Левы ніжні кут — змяніць памер
pdfjs-editor-resizer-label-middle-left = Пасярэдзіне злева — змяніць памер
pdfjs-editor-resizer-top-left = pdfjs-editor-resizer-top-left =
.aria-label = Верхні левы кут — змяніць памер .aria-label = Верхні левы кут — змяніць памер
pdfjs-editor-resizer-top-middle = pdfjs-editor-resizer-top-middle =
@ -455,7 +482,6 @@ pdfjs-editor-new-alt-text-error-close-button = Закрыць
# Variables: # Variables:
# $totalSize (Number) - the total size (in MB) of the AI model. # $totalSize (Number) - the total size (in MB) of the AI model.
# $downloadedSize (Number) - the downloaded size (in MB) of the AI model. # $downloadedSize (Number) - the downloaded size (in MB) of the AI model.
# $percent (Number) - the percentage of the downloaded size.
pdfjs-editor-new-alt-text-ai-model-downloading-progress = Сцягванне мадэлі ШІ для тэксту для атрыбута alt ({ $downloadedSize } з { $totalSize } МБ) pdfjs-editor-new-alt-text-ai-model-downloading-progress = Сцягванне мадэлі ШІ для тэксту для атрыбута alt ({ $downloadedSize } з { $totalSize } МБ)
.aria-valuetext = Сцягванне мадэлі ШІ для тэксту для атрыбута alt ({ $downloadedSize } з { $totalSize } МБ) .aria-valuetext = Сцягванне мадэлі ШІ для тэксту для атрыбута alt ({ $downloadedSize } з { $totalSize } МБ)
# This is a button that users can click to edit the alt text they have already added. # This is a button that users can click to edit the alt text they have already added.
@ -495,3 +521,134 @@ pdfjs-editor-alt-text-settings-editor-title = Рэдактар тэксту дл
pdfjs-editor-alt-text-settings-show-dialog-button-label = Адразу паказваць рэдактар тэксту для атрыбута alt пры даданні выявы pdfjs-editor-alt-text-settings-show-dialog-button-label = Адразу паказваць рэдактар тэксту для атрыбута alt пры даданні выявы
pdfjs-editor-alt-text-settings-show-dialog-description = Дапамагае пераканацца, што ўсе вашы выявы маюць альтэрнатыўны тэкст. pdfjs-editor-alt-text-settings-show-dialog-description = Дапамагае пераканацца, што ўсе вашы выявы маюць альтэрнатыўны тэкст.
pdfjs-editor-alt-text-settings-close-button = Закрыць pdfjs-editor-alt-text-settings-close-button = Закрыць
## Accessibility labels (announced by screen readers) for objects added to the editor.
pdfjs-editor-highlight-added-alert = Вылучэнне дададзена
pdfjs-editor-freetext-added-alert = Тэкст дададзены
pdfjs-editor-ink-added-alert = Малюнак дададзены
pdfjs-editor-stamp-added-alert = Выява дададзена
pdfjs-editor-signature-added-alert = Подпіс дададзены
## "Annotations removed" bar
pdfjs-editor-undo-bar-message-highlight = Падсвятленне выдалена
pdfjs-editor-undo-bar-message-freetext = Тэкст выдалены
pdfjs-editor-undo-bar-message-ink = Малюнак выдалены
pdfjs-editor-undo-bar-message-stamp = Відарыс выдалены
pdfjs-editor-undo-bar-message-signature = Подпіс выдалены
# Variables:
# $count (Number) - the number of removed annotations.
pdfjs-editor-undo-bar-message-multiple =
{ $count ->
[one] { $count } анатацыя выдалена
[few] { $count } анатацыі выдалена
*[many] { $count } анатацый выдалена
}
pdfjs-editor-undo-bar-undo-button =
.title = Адмяніць
pdfjs-editor-undo-bar-undo-button-label = Адмяніць
pdfjs-editor-undo-bar-close-button =
.title = Закрыць
pdfjs-editor-undo-bar-close-button-label = Закрыць
## Add a signature dialog
pdfjs-editor-add-signature-dialog-label = Гэты рэжым дазваляе карыстальніку ствараць подпіс для дадання ў дакумент PDF. Карыстальнік можа рэдагаваць імя (якое таксама служыць альтэрнатыўным тэкстам) і пры жаданні захаваць подпіс для паўторнага выкарыстання.
pdfjs-editor-add-signature-dialog-title = Дадаць подпіс
## Tab names
# Type is a verb (you can type your name as signature)
pdfjs-editor-add-signature-type-button = Увод
.title = Увод
# Draw is a verb (you can draw your signature)
pdfjs-editor-add-signature-draw-button = Маляваць
.title = Маляваць
pdfjs-editor-add-signature-image-button = Выява
.title = Выява
## Tab panels
pdfjs-editor-add-signature-type-input =
.aria-label = Увядзіце свой подпіс
.placeholder = Увядзіце свой подпіс
pdfjs-editor-add-signature-draw-placeholder = Намалюйце свой подпіс
pdfjs-editor-add-signature-draw-thickness-range-label = Таўшчыня
# Variables:
# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.
pdfjs-editor-add-signature-draw-thickness-range =
.title = Таўшчыня малюнка: { $thickness }
pdfjs-editor-add-signature-image-placeholder = Перацягнуць файл сюды, каб загрузіць
pdfjs-editor-add-signature-image-browse-link =
{ PLATFORM() ->
[macos] Або праглядайце файлы малюнкаў
*[other] Або праглядайце файлы малюнкаў
}
## Controls
pdfjs-editor-add-signature-description-label = Апісанне (альтэрнатыўны тэкст)
pdfjs-editor-add-signature-description-input =
.title = Апісанне (альтэрнатыўны тэкст)
pdfjs-editor-add-signature-description-default-when-drawing = Подпіс
pdfjs-editor-add-signature-clear-button-label = Выдаліць подпіс
pdfjs-editor-add-signature-clear-button =
.title = Выдаліць подпіс
pdfjs-editor-add-signature-save-checkbox = Захаваць подпіс
pdfjs-editor-add-signature-save-warning-message = Вы дасягнулі ліміту ў 5 захаваных подпісаў. Выдаліце адзін, каб захаваць іншы.
pdfjs-editor-add-signature-image-upload-error-title = Не ўдалося загрузіць выяву
pdfjs-editor-add-signature-image-upload-error-description = Праверце падключэнне да сеткі ці паспрабуйце іншую выяву.
pdfjs-editor-add-signature-image-no-data-error-title = Не ўдалося пераўтварыць гэту выяву ў подпіс
pdfjs-editor-add-signature-image-no-data-error-description = Калі ласка, паспрабуйце зацягнуць іншую выяву.
pdfjs-editor-add-signature-error-close-button = Закрыць
## Dialog buttons
pdfjs-editor-add-signature-cancel-button = Скасаваць
pdfjs-editor-add-signature-add-button = Дадаць
pdfjs-editor-edit-signature-update-button = Абнавіць
## Comment popup
pdfjs-editor-edit-comment-popup-button-label = Змяніць каментарый
pdfjs-editor-edit-comment-popup-button =
.title = Змяніць каментарый
pdfjs-editor-delete-comment-popup-button-label = Выдаліць каментарый
pdfjs-editor-delete-comment-popup-button =
.title = Выдаліць каментарый
pdfjs-show-comment-button =
.title = Паказаць каментарый
## Edit a comment dialog
# An existing comment is edited
pdfjs-editor-edit-comment-dialog-title-when-editing = Змяніць каментарый
pdfjs-editor-edit-comment-dialog-save-button-when-editing = Абнавіць
# No existing comment
pdfjs-editor-edit-comment-dialog-title-when-adding = Дадаць каментарый
pdfjs-editor-edit-comment-dialog-save-button-when-adding = Дадаць
pdfjs-editor-edit-comment-dialog-text-input =
.placeholder = Пачніце набор тэксту…
pdfjs-editor-edit-comment-dialog-cancel-button = Скасаваць
## Edit a comment button in the editor toolbar
pdfjs-editor-edit-comment-button =
.title = Змяніць каментарый
pdfjs-editor-add-comment-button =
.title = Дадаць каментарый
## Main menu for adding/removing signatures
pdfjs-editor-delete-signature-button1 =
.title = Выдаліць захаваны подпіс
pdfjs-editor-delete-signature-button-label1 = Выдаліць захаваны подпіс
## Editor toolbar
pdfjs-editor-add-signature-edit-button-label = Рэдагаваць апісанне
## Edit signature description dialog
pdfjs-editor-edit-signature-dialog-title = Рэдагаваць апісанне

View File

@ -112,14 +112,6 @@ pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) }
# $mb (Number) - the PDF file size in megabytes # $mb (Number) - the PDF file size in megabytes
# $b (Number) - the PDF file size in bytes # $b (Number) - the PDF file size in bytes
pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } МБ ({ $b } байта) pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } МБ ({ $b } байта)
# Variables:
# $size_kb (Number) - the PDF file size in kilobytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-kb = { $size_kb } КБ ({ $size_b } байта)
# Variables:
# $size_mb (Number) - the PDF file size in megabytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-mb = { $size_mb } МБ ({ $size_b } байта)
pdfjs-document-properties-title = Заглавие: pdfjs-document-properties-title = Заглавие:
pdfjs-document-properties-author = Автор: pdfjs-document-properties-author = Автор:
pdfjs-document-properties-subject = Тема: pdfjs-document-properties-subject = Тема:
@ -129,10 +121,6 @@ pdfjs-document-properties-modification-date = Дата на промяна:
# Variables: # Variables:
# $dateObj (Date) - the creation/modification date and time of the PDF file # $dateObj (Date) - the creation/modification date and time of the PDF file
pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") } pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
# Variables:
# $date (Date) - the creation/modification date of the PDF file
# $time (Time) - the creation/modification time of the PDF file
pdfjs-document-properties-date-string = { $date }, { $time }
pdfjs-document-properties-creator = Създател: pdfjs-document-properties-creator = Създател:
pdfjs-document-properties-producer = PDF произведен от: pdfjs-document-properties-producer = PDF произведен от:
pdfjs-document-properties-version = Издание на PDF: pdfjs-document-properties-version = Издание на PDF:
@ -275,10 +263,6 @@ pdfjs-rendering-error = Грешка при изчертаване на стра
## Annotations ## Annotations
# Variables:
# $date (Date) - the modification date of the annotation
# $time (Time) - the modification time of the annotation
pdfjs-annotation-date-string = { $date }, { $time }
# .alt: This is used as a tooltip. # .alt: This is used as a tooltip.
# Variables: # Variables:
# $type (String) - an annotation type from a list defined in the PDF spec # $type (String) - an annotation type from a list defined in the PDF spec
@ -332,19 +316,15 @@ pdfjs-editor-ink-opacity-input = Прозрачност
pdfjs-editor-stamp-add-image-button = pdfjs-editor-stamp-add-image-button =
.title = Добавяне на изображение .title = Добавяне на изображение
pdfjs-editor-stamp-add-image-button-label = Добавяне на изображение pdfjs-editor-stamp-add-image-button-label = Добавяне на изображение
pdfjs-free-text = # .default-content is used as a placeholder in an empty text editor.
pdfjs-free-text2 =
.aria-label = Текстов редактор .aria-label = Текстов редактор
pdfjs-free-text-default-content = Започнете да пишете… .default-content = Започнете да пишете…
pdfjs-ink = pdfjs-editor-comments-sidebar-close-button-label = Затваряне на страничната лента
.aria-label = Промяна на рисунка
pdfjs-ink-canvas =
.aria-label = Изображение, създадено от потребител
## Alt-text dialog ## Alt-text dialog
# Alternative text (alt text) helps when people can't see the image.
pdfjs-editor-alt-text-button-label = Алтернативен текст pdfjs-editor-alt-text-button-label = Алтернативен текст
pdfjs-editor-alt-text-edit-button-label = Промяна на алтернативния текст
pdfjs-editor-alt-text-dialog-label = Изберете от възможностите pdfjs-editor-alt-text-dialog-label = Изберете от възможностите
pdfjs-editor-alt-text-dialog-description = Алтернативният текст помага на потребителите, когато не могат да видят изображението или то не се зарежда. pdfjs-editor-alt-text-dialog-description = Алтернативният текст помага на потребителите, когато не могат да видят изображението или то не се зарежда.
pdfjs-editor-alt-text-add-description-label = Добавяне на описание pdfjs-editor-alt-text-add-description-label = Добавяне на описание
@ -361,14 +341,6 @@ pdfjs-editor-alt-text-textarea =
## Editor resizers ## Editor resizers
## This is used in an aria label to help to understand the role of the resizer. ## This is used in an aria label to help to understand the role of the resizer.
pdfjs-editor-resizer-label-top-left = Горен ляв ъгъл — преоразмеряване
pdfjs-editor-resizer-label-top-middle = Горе в средата — преоразмеряване
pdfjs-editor-resizer-label-top-right = Горен десен ъгъл — преоразмеряване
pdfjs-editor-resizer-label-middle-right = Дясно в средата — преоразмеряване
pdfjs-editor-resizer-label-bottom-right = Долен десен ъгъл — преоразмеряване
pdfjs-editor-resizer-label-bottom-middle = Долу в средата — преоразмеряване
pdfjs-editor-resizer-label-bottom-left = Долен ляв ъгъл — преоразмеряване
pdfjs-editor-resizer-label-middle-left = Ляво в средата — преоразмеряване
pdfjs-editor-resizer-top-left = pdfjs-editor-resizer-top-left =
.aria-label = Горен ляв ъгъл — преоразмеряване .aria-label = Горен ляв ъгъл — преоразмеряване
pdfjs-editor-resizer-top-middle = pdfjs-editor-resizer-top-middle =
@ -405,14 +377,12 @@ pdfjs-editor-colorpicker-pink =
pdfjs-editor-colorpicker-red = pdfjs-editor-colorpicker-red =
.title = Червено .title = Червено
## Show all highlights
## This is a toggle button to show/hide all the highlights.
## New alt-text dialog ## New alt-text dialog
## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. ## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.
pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Научете повече
pdfjs-editor-new-alt-text-not-now-button = Не сега pdfjs-editor-new-alt-text-not-now-button = Не сега
## Image alt-text settings ## Image alt-text settings
pdfjs-editor-alt-text-settings-delete-model-button = Изтриване

View File

@ -85,24 +85,12 @@ pdfjs-document-properties-button =
pdfjs-document-properties-button-label = নথি বৈশিষ্ট্য… pdfjs-document-properties-button-label = নথি বৈশিষ্ট্য…
pdfjs-document-properties-file-name = ফাইলের নাম: pdfjs-document-properties-file-name = ফাইলের নাম:
pdfjs-document-properties-file-size = ফাইলের আকার: pdfjs-document-properties-file-size = ফাইলের আকার:
# Variables:
# $size_kb (Number) - the PDF file size in kilobytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-kb = { $size_kb } কেবি ({ $size_b } বাইট)
# Variables:
# $size_mb (Number) - the PDF file size in megabytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-mb = { $size_mb } এমবি ({ $size_b } বাইট)
pdfjs-document-properties-title = শিরোনাম: pdfjs-document-properties-title = শিরোনাম:
pdfjs-document-properties-author = লেখক: pdfjs-document-properties-author = লেখক:
pdfjs-document-properties-subject = বিষয়: pdfjs-document-properties-subject = বিষয়:
pdfjs-document-properties-keywords = কীওয়ার্ড: pdfjs-document-properties-keywords = কীওয়ার্ড:
pdfjs-document-properties-creation-date = তৈরির তারিখ: pdfjs-document-properties-creation-date = তৈরির তারিখ:
pdfjs-document-properties-modification-date = পরিবর্তনের তারিখ: pdfjs-document-properties-modification-date = পরিবর্তনের তারিখ:
# Variables:
# $date (Date) - the creation/modification date of the PDF file
# $time (Time) - the creation/modification time of the PDF file
pdfjs-document-properties-date-string = { $date }, { $time }
pdfjs-document-properties-creator = প্রস্তুতকারক: pdfjs-document-properties-creator = প্রস্তুতকারক:
pdfjs-document-properties-producer = পিডিএফ প্রস্তুতকারক: pdfjs-document-properties-producer = পিডিএফ প্রস্তুতকারক:
pdfjs-document-properties-version = পিডিএফ সংষ্করণ: pdfjs-document-properties-version = পিডিএফ সংষ্করণ:
@ -203,9 +191,6 @@ pdfjs-page-scale-actual = প্রকৃত আকার
# $scale (Number) - percent value for page scale # $scale (Number) - percent value for page scale
pdfjs-page-scale-percent = { $scale }% pdfjs-page-scale-percent = { $scale }%
## PDF page
## Loading indicator messages ## Loading indicator messages
pdfjs-loading-error = পিডিএফ লোড করার সময় ত্রুটি দেখা দিয়েছে। pdfjs-loading-error = পিডিএফ লোড করার সময় ত্রুটি দেখা দিয়েছে।
@ -216,10 +201,6 @@ pdfjs-rendering-error = পাতা উপস্থাপনার সময়
## Annotations ## Annotations
# Variables:
# $date (Date) - the modification date of the annotation
# $time (Time) - the modification time of the annotation
pdfjs-annotation-date-string = { $date }, { $time }
# .alt: This is used as a tooltip. # .alt: This is used as a tooltip.
# Variables: # Variables:
# $type (String) - an annotation type from a list defined in the PDF spec # $type (String) - an annotation type from a list defined in the PDF spec
@ -235,13 +216,3 @@ pdfjs-password-invalid = ভুল পাসওয়ার্ড। অনুগ
pdfjs-password-ok-button = ঠিক আছে pdfjs-password-ok-button = ঠিক আছে
pdfjs-password-cancel-button = বাতিল pdfjs-password-cancel-button = বাতিল
pdfjs-web-fonts-disabled = ওয়েব ফন্ট নিষ্ক্রিয়: সংযুক্ত পিডিএফ ফন্ট ব্যবহার করা যাচ্ছে না। pdfjs-web-fonts-disabled = ওয়েব ফন্ট নিষ্ক্রিয়: সংযুক্ত পিডিএফ ফন্ট ব্যবহার করা যাচ্ছে না।
## Editing
## Alt-text dialog
## Editor resizers
## This is used in an aria label to help to understand the role of the resizer.

View File

@ -89,24 +89,12 @@ pdfjs-document-properties-button =
pdfjs-document-properties-button-label = Document Properties… pdfjs-document-properties-button-label = Document Properties…
pdfjs-document-properties-file-name = File name: pdfjs-document-properties-file-name = File name:
pdfjs-document-properties-file-size = File size: pdfjs-document-properties-file-size = File size:
# Variables:
# $size_kb (Number) - the PDF file size in kilobytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bytes)
# Variables:
# $size_mb (Number) - the PDF file size in megabytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-mb = { $size_mb } MB ({ $size_b } bytes)
pdfjs-document-properties-title = Title: pdfjs-document-properties-title = Title:
pdfjs-document-properties-author = Author: pdfjs-document-properties-author = Author:
pdfjs-document-properties-subject = Subject: pdfjs-document-properties-subject = Subject:
pdfjs-document-properties-keywords = Keywords: pdfjs-document-properties-keywords = Keywords:
pdfjs-document-properties-creation-date = Creation Date: pdfjs-document-properties-creation-date = Creation Date:
pdfjs-document-properties-modification-date = Modification Date: pdfjs-document-properties-modification-date = Modification Date:
# Variables:
# $date (Date) - the creation/modification date of the PDF file
# $time (Time) - the creation/modification time of the PDF file
pdfjs-document-properties-date-string = { $date }, { $time }
pdfjs-document-properties-creator = Creator: pdfjs-document-properties-creator = Creator:
pdfjs-document-properties-producer = PDF Producer: pdfjs-document-properties-producer = PDF Producer:
pdfjs-document-properties-version = PDF Version: pdfjs-document-properties-version = PDF Version:
@ -207,9 +195,6 @@ pdfjs-page-scale-actual = Actual Size
# $scale (Number) - percent value for page scale # $scale (Number) - percent value for page scale
pdfjs-page-scale-percent = { $scale }% pdfjs-page-scale-percent = { $scale }%
## PDF page
## Loading indicator messages ## Loading indicator messages
pdfjs-loading-error = An error occurred while loading the PDF. pdfjs-loading-error = An error occurred while loading the PDF.
@ -235,13 +220,3 @@ pdfjs-password-invalid = Invalid password. Please try again.
pdfjs-password-ok-button = OK pdfjs-password-ok-button = OK
pdfjs-password-cancel-button = Cancel pdfjs-password-cancel-button = Cancel
pdfjs-web-fonts-disabled = Web fonts are disabled: unable to use embedded PDF fonts. pdfjs-web-fonts-disabled = Web fonts are disabled: unable to use embedded PDF fonts.
## Editing
## Alt-text dialog
## Editor resizers
## This is used in an aria label to help to understand the role of the resizer.

View File

@ -99,24 +99,12 @@ pdfjs-document-properties-button =
pdfjs-document-properties-button-label = Perzhioù an teul… pdfjs-document-properties-button-label = Perzhioù an teul…
pdfjs-document-properties-file-name = Anv restr: pdfjs-document-properties-file-name = Anv restr:
pdfjs-document-properties-file-size = Ment ar restr: pdfjs-document-properties-file-size = Ment ar restr:
# Variables:
# $size_kb (Number) - the PDF file size in kilobytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-kb = { $size_kb } Ke ({ $size_b } eizhbit)
# Variables:
# $size_mb (Number) - the PDF file size in megabytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-mb = { $size_mb } Me ({ $size_b } eizhbit)
pdfjs-document-properties-title = Titl: pdfjs-document-properties-title = Titl:
pdfjs-document-properties-author = Aozer: pdfjs-document-properties-author = Aozer:
pdfjs-document-properties-subject = Danvez: pdfjs-document-properties-subject = Danvez:
pdfjs-document-properties-keywords = Gerioù-alc'hwez: pdfjs-document-properties-keywords = Gerioù-alc'hwez:
pdfjs-document-properties-creation-date = Deiziad krouiñ: pdfjs-document-properties-creation-date = Deiziad krouiñ:
pdfjs-document-properties-modification-date = Deiziad kemmañ: pdfjs-document-properties-modification-date = Deiziad kemmañ:
# Variables:
# $date (Date) - the creation/modification date of the PDF file
# $time (Time) - the creation/modification time of the PDF file
pdfjs-document-properties-date-string = { $date }, { $time }
pdfjs-document-properties-creator = Krouer: pdfjs-document-properties-creator = Krouer:
pdfjs-document-properties-producer = Kenderc'her PDF: pdfjs-document-properties-producer = Kenderc'her PDF:
pdfjs-document-properties-version = Handelv PDF: pdfjs-document-properties-version = Handelv PDF:
@ -206,7 +194,7 @@ pdfjs-find-previous-button-label = Kent
pdfjs-find-next-button = pdfjs-find-next-button =
.title = Kavout an tamm frazenn war-lerc'h o klotañ ganti .title = Kavout an tamm frazenn war-lerc'h o klotañ ganti
pdfjs-find-next-button-label = War-lerc'h pdfjs-find-next-button-label = War-lerc'h
pdfjs-find-highlight-checkbox = Usskediñ pep tra pdfjs-find-highlight-checkbox = Sklêrijennañ pep tra
pdfjs-find-match-case-checkbox-label = Teurel evezh ouzh ar pennlizherennoù pdfjs-find-match-case-checkbox-label = Teurel evezh ouzh ar pennlizherennoù
pdfjs-find-match-diacritics-checkbox-label = Doujañ dan tiredoù pdfjs-find-match-diacritics-checkbox-label = Doujañ dan tiredoù
pdfjs-find-entire-word-checkbox-label = Gerioù a-bezh pdfjs-find-entire-word-checkbox-label = Gerioù a-bezh
@ -241,10 +229,6 @@ pdfjs-rendering-error = Degouezhet ez eus bet ur fazi e-pad skrammañ ar bajenna
## Annotations ## Annotations
# Variables:
# $date (Date) - the modification date of the annotation
# $time (Time) - the modification time of the annotation
pdfjs-annotation-date-string = { $date }, { $time }
# .alt: This is used as a tooltip. # .alt: This is used as a tooltip.
# Variables: # Variables:
# $type (String) - an annotation type from a list defined in the PDF spec # $type (String) - an annotation type from a list defined in the PDF spec
@ -272,9 +256,13 @@ pdfjs-editor-ink-button-label = Tresañ
pdfjs-editor-stamp-button = pdfjs-editor-stamp-button =
.title = Ouzhpennañ pe aozañ skeudennoù .title = Ouzhpennañ pe aozañ skeudennoù
pdfjs-editor-stamp-button-label = Ouzhpennañ pe aozañ skeudennoù pdfjs-editor-stamp-button-label = Ouzhpennañ pe aozañ skeudennoù
pdfjs-editor-highlight-button =
## Remove button for the various kind of editor. .title = Sklerijennañ
pdfjs-editor-highlight-button-label = Sklerijennañ
pdfjs-highlight-floating-button1 =
.title = Sklerijennañ
.aria-label = Sklerijennañ
pdfjs-highlight-floating-button-label = Sklerijennañ
## ##
@ -289,25 +277,20 @@ pdfjs-editor-stamp-add-image-button =
pdfjs-editor-stamp-add-image-button-label = Ouzhpennañ ur skeudenn pdfjs-editor-stamp-add-image-button-label = Ouzhpennañ ur skeudenn
# This refers to the thickness of the line used for free highlighting (not bound to text) # This refers to the thickness of the line used for free highlighting (not bound to text)
pdfjs-editor-free-highlight-thickness-input = Tevded pdfjs-editor-free-highlight-thickness-input = Tevded
pdfjs-free-text =
.aria-label = Aozer testennoù
pdfjs-ink =
.aria-label = Aozer tresoù
pdfjs-ink-canvas =
.aria-label = Skeudenn bet krouet gant an implijer·ez
## Alt-text dialog ## Alt-text dialog
pdfjs-editor-alt-text-add-description-label = Ouzhpennañ un deskrivadur pdfjs-editor-alt-text-add-description-label = Ouzhpennañ un deskrivadur
pdfjs-editor-alt-text-cancel-button = Nullañ pdfjs-editor-alt-text-cancel-button = Nullañ
pdfjs-editor-alt-text-save-button = Enrollañ pdfjs-editor-alt-text-save-button = Enrollañ
# .placeholder: This is a placeholder for the alt text input area
## Editor resizers pdfjs-editor-alt-text-textarea =
## This is used in an aria label to help to understand the role of the resizer. .placeholder = Da skouer, “Ur paotr yaouank ouzh taol o tebriñ boued”
## Color picker ## Color picker
# This means "Color used to highlight text"
pdfjs-editor-highlight-colorpicker-label = Liv sklêrijennañ
pdfjs-editor-colorpicker-button = pdfjs-editor-colorpicker-button =
.title = Cheñch liv .title = Cheñch liv
pdfjs-editor-colorpicker-yellow = pdfjs-editor-colorpicker-yellow =

View File

@ -65,24 +65,12 @@ pdfjs-document-properties-button =
pdfjs-document-properties-button-label = फोरमान बिलाइनि आखुथाय... pdfjs-document-properties-button-label = फोरमान बिलाइनि आखुथाय...
pdfjs-document-properties-file-name = फाइलनि मुं: pdfjs-document-properties-file-name = फाइलनि मुं:
pdfjs-document-properties-file-size = फाइलनि महर: pdfjs-document-properties-file-size = फाइलनि महर:
# Variables:
# $size_kb (Number) - the PDF file size in kilobytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } बाइट)
# Variables:
# $size_mb (Number) - the PDF file size in megabytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-mb = { $size_mb } MB ({ $size_b } बाइट)
pdfjs-document-properties-title = बिमुं: pdfjs-document-properties-title = बिमुं:
pdfjs-document-properties-author = लिरगिरि: pdfjs-document-properties-author = लिरगिरि:
pdfjs-document-properties-subject = आयदा: pdfjs-document-properties-subject = आयदा:
pdfjs-document-properties-keywords = गाहाय सोदोब: pdfjs-document-properties-keywords = गाहाय सोदोब:
pdfjs-document-properties-creation-date = सोरजिनाय अक्ट': pdfjs-document-properties-creation-date = सोरजिनाय अक्ट':
pdfjs-document-properties-modification-date = सुद्रायनाय अक्ट': pdfjs-document-properties-modification-date = सुद्रायनाय अक्ट':
# Variables:
# $date (Date) - the creation/modification date of the PDF file
# $time (Time) - the creation/modification time of the PDF file
pdfjs-document-properties-date-string = { $date }, { $time }
pdfjs-document-properties-creator = सोरजिग्रा: pdfjs-document-properties-creator = सोरजिग्रा:
pdfjs-document-properties-producer = PDF दिहुनग्रा: pdfjs-document-properties-producer = PDF दिहुनग्रा:
pdfjs-document-properties-version = PDF बिसान: pdfjs-document-properties-version = PDF बिसान:
@ -174,9 +162,6 @@ pdfjs-page-scale-actual = थार महर
# $scale (Number) - percent value for page scale # $scale (Number) - percent value for page scale
pdfjs-page-scale-percent = { $scale }% pdfjs-page-scale-percent = { $scale }%
## PDF page
## Loading indicator messages ## Loading indicator messages
pdfjs-loading-error = PDF ल'ड खालामनाय समाव मोनसे गोरोन्थि जाबाय। pdfjs-loading-error = PDF ल'ड खालामनाय समाव मोनसे गोरोन्थि जाबाय।
@ -187,10 +172,6 @@ pdfjs-rendering-error = बिलाइखौ राव सोलायनाय
## Annotations ## Annotations
# Variables:
# $date (Date) - the modification date of the annotation
# $time (Time) - the modification time of the annotation
pdfjs-annotation-date-string = { $date }, { $time }
# .alt: This is used as a tooltip. # .alt: This is used as a tooltip.
# Variables: # Variables:
# $type (String) - an annotation type from a list defined in the PDF spec # $type (String) - an annotation type from a list defined in the PDF spec
@ -206,13 +187,3 @@ pdfjs-password-invalid = बाहायजायै पासवार्ड।
pdfjs-password-ok-button = OK pdfjs-password-ok-button = OK
pdfjs-password-cancel-button = नेवसि pdfjs-password-cancel-button = नेवसि
pdfjs-web-fonts-disabled = वेब फन्टखौ लोरबां खालामबाय: अरजाबहोनाय PDF फन्टखौ बाहायनो हायाखै। pdfjs-web-fonts-disabled = वेब फन्टखौ लोरबां खालामबाय: अरजाबहोनाय PDF फन्टखौ बाहायनो हायाखै।
## Editing
## Alt-text dialog
## Editor resizers
## This is used in an aria label to help to understand the role of the resizer.

View File

@ -39,6 +39,18 @@ pdfjs-open-file-button-label = Otvori
pdfjs-print-button = pdfjs-print-button =
.title = Štampaj .title = Štampaj
pdfjs-print-button-label = Štampaj pdfjs-print-button-label = Štampaj
pdfjs-save-button =
.title = Sačuvaj
pdfjs-save-button-label = Sačuvaj
# Used in Firefox for Android as a tooltip for the download button (“download” is a verb).
pdfjs-download-button =
.title = Preuzmi
# Used in Firefox for Android as a label for the download button (“download” is a verb).
# Length of the translation matters since we are in a mobile context, with limited screen estate.
pdfjs-download-button-label = Preuzmi
pdfjs-bookmark-button =
.title = Trenutna stranica (Prikaži URL sa trenutne stranice)
pdfjs-bookmark-button-label = Trenutna stranica
## Secondary toolbar and context menu ## Secondary toolbar and context menu
@ -63,6 +75,27 @@ pdfjs-cursor-text-select-tool-button-label = Alat za označavanje teksta
pdfjs-cursor-hand-tool-button = pdfjs-cursor-hand-tool-button =
.title = Omogući ručni alat .title = Omogući ručni alat
pdfjs-cursor-hand-tool-button-label = Ručni alat pdfjs-cursor-hand-tool-button-label = Ručni alat
pdfjs-scroll-page-button =
.title = Koristite pomicanje stranice
pdfjs-scroll-page-button-label = Pomicanje stranice
pdfjs-scroll-vertical-button =
.title = Koristite vertikalno pomicanje
pdfjs-scroll-vertical-button-label = Vertikalno pomicanje
pdfjs-scroll-horizontal-button =
.title = Koristite horizontalno pomicanje
pdfjs-scroll-horizontal-button-label = Horizontalno pomicanje
pdfjs-scroll-wrapped-button =
.title = Koristite omotno pomicanje
pdfjs-scroll-wrapped-button-label = Omotno pomicanje
pdfjs-spread-none-button =
.title = Ne izrađuj duplerice
pdfjs-spread-none-button-label = Bez duplerica
pdfjs-spread-odd-button =
.title = Izradi duplerice koje počinju s neparnim stranicama
pdfjs-spread-odd-button-label = Neparne duplerice
pdfjs-spread-even-button =
.title = Izradi duplerice koje počinju s parnim stranicama
pdfjs-spread-even-button-label = Parne duplerice
## Document properties dialog ## Document properties dialog
@ -72,13 +105,13 @@ pdfjs-document-properties-button-label = Svojstva dokumenta...
pdfjs-document-properties-file-name = Naziv fajla: pdfjs-document-properties-file-name = Naziv fajla:
pdfjs-document-properties-file-size = Veličina fajla: pdfjs-document-properties-file-size = Veličina fajla:
# Variables: # Variables:
# $size_kb (Number) - the PDF file size in kilobytes # $kb (Number) - the PDF file size in kilobytes
# $size_b (Number) - the PDF file size in bytes # $b (Number) - the PDF file size in bytes
pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bajta) pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } bajtova)
# Variables: # Variables:
# $size_mb (Number) - the PDF file size in megabytes # $mb (Number) - the PDF file size in megabytes
# $size_b (Number) - the PDF file size in bytes # $b (Number) - the PDF file size in bytes
pdfjs-document-properties-mb = { $size_mb } MB ({ $size_b } bajta) pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bajtova)
pdfjs-document-properties-title = Naslov: pdfjs-document-properties-title = Naslov:
pdfjs-document-properties-author = Autor: pdfjs-document-properties-author = Autor:
pdfjs-document-properties-subject = Predmet: pdfjs-document-properties-subject = Predmet:
@ -86,9 +119,8 @@ pdfjs-document-properties-keywords = Ključne riječi:
pdfjs-document-properties-creation-date = Datum kreiranja: pdfjs-document-properties-creation-date = Datum kreiranja:
pdfjs-document-properties-modification-date = Datum promjene: pdfjs-document-properties-modification-date = Datum promjene:
# Variables: # Variables:
# $date (Date) - the creation/modification date of the PDF file # $dateObj (Date) - the creation/modification date and time of the PDF file
# $time (Time) - the creation/modification time of the PDF file pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
pdfjs-document-properties-date-string = { $date }, { $time }
pdfjs-document-properties-creator = Kreator: pdfjs-document-properties-creator = Kreator:
pdfjs-document-properties-producer = PDF stvaratelj: pdfjs-document-properties-producer = PDF stvaratelj:
pdfjs-document-properties-version = PDF verzija: pdfjs-document-properties-version = PDF verzija:
@ -115,6 +147,11 @@ pdfjs-document-properties-page-size-dimension-name-string = { $width } × { $hei
## ##
# The linearization status of the document; usually called "Fast Web View" in
# English locales of Adobe software.
pdfjs-document-properties-linearized = Brzi web pregled:
pdfjs-document-properties-linearized-yes = Da
pdfjs-document-properties-linearized-no = Ne
pdfjs-document-properties-close-button = Zatvori pdfjs-document-properties-close-button = Zatvori
## Print ## Print
@ -131,6 +168,8 @@ pdfjs-printing-not-ready = Upozorenje: PDF nije u potpunosti učitan za štampan
pdfjs-toggle-sidebar-button = pdfjs-toggle-sidebar-button =
.title = Uključi/isključi bočnu traku .title = Uključi/isključi bočnu traku
pdfjs-toggle-sidebar-notification-button =
.title = Uključi/isključi bočnu traku (dokument sadrži obris/priloge/slojeve)
pdfjs-toggle-sidebar-button-label = Uključi/isključi bočnu traku pdfjs-toggle-sidebar-button-label = Uključi/isključi bočnu traku
pdfjs-document-outline-button = pdfjs-document-outline-button =
.title = Prikaži outline dokumenta (dvoklik za skupljanje/širenje svih stavki) .title = Prikaži outline dokumenta (dvoklik za skupljanje/širenje svih stavki)
@ -138,12 +177,19 @@ pdfjs-document-outline-button-label = Konture dokumenta
pdfjs-attachments-button = pdfjs-attachments-button =
.title = Prikaži priloge .title = Prikaži priloge
pdfjs-attachments-button-label = Prilozi pdfjs-attachments-button-label = Prilozi
pdfjs-layers-button =
.title = Prikaži slojeve (dvostruki klik da biste vratili sve slojeve na zadano stanje)
pdfjs-layers-button-label = Slojevi
pdfjs-thumbs-button = pdfjs-thumbs-button =
.title = Prikaži thumbnailove .title = Prikaži thumbnailove
pdfjs-thumbs-button-label = Thumbnailovi pdfjs-thumbs-button-label = Thumbnailovi
pdfjs-current-outline-item-button =
.title = Pronađi trenutnu stavku strukture
pdfjs-current-outline-item-button-label = Trenutna stavka strukture
pdfjs-findbar-button = pdfjs-findbar-button =
.title = Pronađi u dokumentu .title = Pronađi u dokumentu
pdfjs-findbar-button-label = Pronađi pdfjs-findbar-button-label = Pronađi
pdfjs-additional-layers = Dodatni slojevi
## Thumbnails panel item (tooltip and alt text for images) ## Thumbnails panel item (tooltip and alt text for images)
@ -169,8 +215,27 @@ pdfjs-find-next-button =
pdfjs-find-next-button-label = Sljedeće pdfjs-find-next-button-label = Sljedeće
pdfjs-find-highlight-checkbox = Označi sve pdfjs-find-highlight-checkbox = Označi sve
pdfjs-find-match-case-checkbox-label = Osjetljivost na karaktere pdfjs-find-match-case-checkbox-label = Osjetljivost na karaktere
pdfjs-find-match-diacritics-checkbox-label = Podudaranje dijakritika
pdfjs-find-entire-word-checkbox-label = Cijele riječi
pdfjs-find-reached-top = Dostigao sam vrh dokumenta, nastavljam sa dna pdfjs-find-reached-top = Dostigao sam vrh dokumenta, nastavljam sa dna
pdfjs-find-reached-bottom = Dostigao sam kraj dokumenta, nastavljam sa vrha pdfjs-find-reached-bottom = Dostigao sam kraj dokumenta, nastavljam sa vrha
# Variables:
# $current (Number) - the index of the currently active find result
# $total (Number) - the total number of matches in the document
pdfjs-find-match-count =
{ $total ->
[one] { $current } od { $total } podudaranje
[few] { $current } od { $total } podudaranja
*[other] { $current } od { $total } podudaranja
}
# Variables:
# $limit (Number) - the maximum number of matches
pdfjs-find-match-count-limit =
{ $limit ->
[one] Više od { $limit } podudaranja
[few] Više od { $limit } podudaranja
*[other] Više od { $limit } podudaranja
}
pdfjs-find-not-found = Fraza nije pronađena pdfjs-find-not-found = Fraza nije pronađena
## Predefined zoom values ## Predefined zoom values
@ -185,6 +250,10 @@ pdfjs-page-scale-percent = { $scale }%
## PDF page ## PDF page
# Variables:
# $page (Number) - the page number
pdfjs-page-landmark =
.aria-label = Stranica { $page }
## Loading indicator messages ## Loading indicator messages
@ -203,6 +272,9 @@ pdfjs-rendering-error = Došlo je do greške prilikom renderiranja strane.
# Some common types are e.g.: "Check", "Text", "Comment", "Note" # Some common types are e.g.: "Check", "Text", "Comment", "Note"
pdfjs-text-annotation-type = pdfjs-text-annotation-type =
.alt = [{ $type } pribilješka] .alt = [{ $type } pribilješka]
# Variables:
# $dateObj (Date) - the modification date and time of the annotation
pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
## Password ## Password
@ -214,10 +286,308 @@ pdfjs-web-fonts-disabled = Web fontovi su onemogućeni: nemoguće koristiti uba
## Editing ## Editing
pdfjs-editor-free-text-button =
.title = Tekst
pdfjs-editor-free-text-button-label = Tekst
pdfjs-editor-ink-button =
.title = Crtanje
pdfjs-editor-ink-button-label = Crtanje
pdfjs-editor-stamp-button =
.title = Dodajte ili uredite slike
pdfjs-editor-stamp-button-label = Dodajte ili uredite slike
pdfjs-editor-highlight-button =
.title = Istaknite
pdfjs-editor-highlight-button-label = Istaknite
pdfjs-highlight-floating-button1 =
.title = Istaknite
.aria-label = Istaknite
pdfjs-highlight-floating-button-label = Istaknite
pdfjs-editor-signature-button =
.title = Dodaj potpis
pdfjs-editor-signature-button-label = Dodaj potpis
## Default editor aria labels
# “Highlight” is a noun, the string is used on the editor for highlights.
pdfjs-editor-highlight-editor =
.aria-label = Uređivač istaknutih elemenata
# “Drawing” is a noun, the string is used on the editor for drawings.
pdfjs-editor-ink-editor =
.aria-label = Uređivač crteža
# Used when a signature editor is selected/hovered.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-signature-editor1 =
.aria-description = Uređivač potpisa: { $description }
pdfjs-editor-stamp-editor =
.aria-label = Uređivač slika
## Remove button for the various kind of editor.
pdfjs-editor-remove-ink-button =
.title = Ukloni crtež
pdfjs-editor-remove-freetext-button =
.title = Ukloni tekst
pdfjs-editor-remove-stamp-button =
.title = Ukloni sliku
pdfjs-editor-remove-highlight-button =
.title = Ukloni istaknuti dio
pdfjs-editor-remove-signature-button =
.title = Ukloni potpis
##
# Editor Parameters
pdfjs-editor-free-text-color-input = Boja
pdfjs-editor-free-text-size-input = Veličina
pdfjs-editor-ink-color-input = Boja
pdfjs-editor-ink-thickness-input = Debljina
pdfjs-editor-ink-opacity-input = Neprozirnost
pdfjs-editor-stamp-add-image-button =
.title = Dodaj sliku
pdfjs-editor-stamp-add-image-button-label = Dodaj sliku
# This refers to the thickness of the line used for free highlighting (not bound to text)
pdfjs-editor-free-highlight-thickness-input = Debljina
pdfjs-editor-free-highlight-thickness-title =
.title = Promijenite debljinu prilikom označavanja stavki koje nisu tekst
pdfjs-editor-add-signature-container =
.aria-label = Kontrole potpisa i sačuvani potpisi
pdfjs-editor-signature-add-signature-button =
.title = Dodaj novi potpis
pdfjs-editor-signature-add-signature-button-label = Dodaj novi potpis
# Used on the button to use an already saved signature.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-add-saved-signature-button =
.title = Sačuvani potpis: { $description }
# .default-content is used as a placeholder in an empty text editor.
pdfjs-free-text2 =
.aria-label = Uređivač teksta
.default-content = Počnite kucati…
## Alt-text dialog ## Alt-text dialog
pdfjs-editor-alt-text-button-label = Alternativni tekst
pdfjs-editor-alt-text-edit-button =
.aria-label = Uredi alternativni tekst
pdfjs-editor-alt-text-dialog-label = Odaberite opciju
pdfjs-editor-alt-text-dialog-description = Alternativni tekst (Alt tekst) pomaže kada ljudi ne mogu vidjeti sliku ili kada se ona ne učitava.
pdfjs-editor-alt-text-add-description-label = Dodajte opis
pdfjs-editor-alt-text-add-description-description = Ciljajte na 1-2 rečenice koje opisuju temu, okruženje ili radnju.
pdfjs-editor-alt-text-mark-decorative-label = Označi kao dekorativno
pdfjs-editor-alt-text-mark-decorative-description = Ovo se koristi za ukrasne slike, poput okvira ili vodenih žigova.
pdfjs-editor-alt-text-cancel-button = Otkaži
pdfjs-editor-alt-text-save-button = Sačuvaj
pdfjs-editor-alt-text-decorative-tooltip = Označeno kao dekorativno
# .placeholder: This is a placeholder for the alt text input area
pdfjs-editor-alt-text-textarea =
.placeholder = Na primjer, „Mladić sjeda za stol da jede obrok“
# Alternative text (alt text) helps when people can't see the image.
pdfjs-editor-alt-text-button =
.aria-label = Alternativni tekst
## Editor resizers ## Editor resizers
## This is used in an aria label to help to understand the role of the resizer. ## This is used in an aria label to help to understand the role of the resizer.
pdfjs-editor-resizer-top-left =
.aria-label = Gornji lijevi ugao — promjena veličine
pdfjs-editor-resizer-top-middle =
.aria-label = Gore u sredini — promijeni veličinu
pdfjs-editor-resizer-top-right =
.aria-label = Gornji desni ugao — promijeni veličinu
pdfjs-editor-resizer-middle-right =
.aria-label = Sredina desno — promijeni veličinu
pdfjs-editor-resizer-bottom-right =
.aria-label = Donji desni ugao — promijeni veličinu
pdfjs-editor-resizer-bottom-middle =
.aria-label = Donji srednji dio — promijeni veličinu
pdfjs-editor-resizer-bottom-left =
.aria-label = Donji lijevi ugao — promijeni veličinu
pdfjs-editor-resizer-middle-left =
.aria-label = Sredina lijevo — promijeni veličinu
## Color picker
# This means "Color used to highlight text"
pdfjs-editor-highlight-colorpicker-label = Boja isticanja
pdfjs-editor-colorpicker-button =
.title = Promijeni boju
pdfjs-editor-colorpicker-dropdown =
.aria-label = Izbor boja
pdfjs-editor-colorpicker-yellow =
.title = Žuta
pdfjs-editor-colorpicker-green =
.title = Zelena
pdfjs-editor-colorpicker-blue =
.title = Plava
pdfjs-editor-colorpicker-pink =
.title = Roza
pdfjs-editor-colorpicker-red =
.title = Crvena
## Show all highlights
## This is a toggle button to show/hide all the highlights.
pdfjs-editor-highlight-show-all-button-label = Prikaži sve
pdfjs-editor-highlight-show-all-button =
.title = Prikaži sve
## New alt-text dialog
## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.
# Modal header positioned above a text box where users can edit the alt text.
pdfjs-editor-new-alt-text-dialog-edit-label = Uredi alternativni tekst (opis slike)
# Modal header positioned above a text box where users can add the alt text.
pdfjs-editor-new-alt-text-dialog-add-label = Dodaj alternativni tekst (opis slike)
pdfjs-editor-new-alt-text-textarea =
.placeholder = Ovdje napišite svoj opis…
# This text refers to the alt text box above this description. It offers a definition of alt text.
pdfjs-editor-new-alt-text-description = Kratak opis za osobe koje ne mogu vidjeti sliku ili kada se slika ne učitava.
# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.
pdfjs-editor-new-alt-text-disclaimer1 = Ovaj alternativni tekst je kreiran automatski i moguće je da je netačan.
pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Saznajte više
pdfjs-editor-new-alt-text-create-automatically-button-label = Automatski kreiraj alternativni tekst
pdfjs-editor-new-alt-text-not-now-button = Ne sada
pdfjs-editor-new-alt-text-error-title = Nije moguće automatski kreirati alternativni tekst
pdfjs-editor-new-alt-text-error-description = Molimo vas da napišete vlastiti alternativni tekst ili pokušate ponovo kasnije.
pdfjs-editor-new-alt-text-error-close-button = Zatvori
# Variables:
# $totalSize (Number) - the total size (in MB) of the AI model.
# $downloadedSize (Number) - the downloaded size (in MB) of the AI model.
pdfjs-editor-new-alt-text-ai-model-downloading-progress = Preuzimanje alternativnog tekstualnog AI modela ({ $downloadedSize } od { $totalSize } MB)
.aria-valuetext = Preuzimanje alternativnog tekstualnog AI modela ({ $downloadedSize } od { $totalSize } MB)
# This is a button that users can click to edit the alt text they have already added.
pdfjs-editor-new-alt-text-added-button =
.aria-label = Alternativni tekst je dodan
pdfjs-editor-new-alt-text-added-button-label = Alternativni tekst je dodan
# This is a button that users can click to open the alt text editor and add alt text when it is not present.
pdfjs-editor-new-alt-text-missing-button =
.aria-label = Nedostaje alternativni tekst
pdfjs-editor-new-alt-text-missing-button-label = Nedostaje alternativni tekst
# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.
pdfjs-editor-new-alt-text-to-review-button =
.aria-label = Alternativni tekst recenzije
pdfjs-editor-new-alt-text-to-review-button-label = Alternativni tekst recenzije
# "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.
# Variables:
# $generatedAltText (String) - the generated alt-text.
pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Automatski kreirano: { $generatedAltText }
## Image alt-text settings
pdfjs-image-alt-text-settings-button =
.title = Postavke alternativnog teksta slike
pdfjs-image-alt-text-settings-button-label = Postavke alternativnog teksta slike
pdfjs-editor-alt-text-settings-dialog-label = Postavke alternativnog teksta slike
pdfjs-editor-alt-text-settings-automatic-title = Automatski alternativni tekst
pdfjs-editor-alt-text-settings-create-model-button-label = Automatski kreiraj alternativni tekst
pdfjs-editor-alt-text-settings-create-model-description = Predlaže opise kako bi pomogao ljudima koji ne vide sliku ili kada se slika ne učitava.
# Variables:
# $totalSize (Number) - the total size (in MB) of the AI model.
pdfjs-editor-alt-text-settings-download-model-label = Alternativni tekst AI model ({ $totalSize } MB)
pdfjs-editor-alt-text-settings-ai-model-description = Radi lokalno na vašem uređaju tako da vaši podaci ostaju privatni. Potrebno za automatski alternativni tekst.
pdfjs-editor-alt-text-settings-delete-model-button = Izbriši
pdfjs-editor-alt-text-settings-download-model-button = Preuzmi
pdfjs-editor-alt-text-settings-downloading-model-button = Preuzimam…
pdfjs-editor-alt-text-settings-editor-title = Uređivač alternativnog teksta
pdfjs-editor-alt-text-settings-show-dialog-button-label = Odmah prikaži uređivač alternativnog teksta prilikom dodavanja slike
pdfjs-editor-alt-text-settings-show-dialog-description = Pomaže vam da osigurate da sve vaše slike imaju alternativni tekst.
pdfjs-editor-alt-text-settings-close-button = Zatvori
## "Annotations removed" bar
pdfjs-editor-undo-bar-message-highlight = Istaknuto je uklonjeno
pdfjs-editor-undo-bar-message-freetext = Tekst uklonjen
pdfjs-editor-undo-bar-message-ink = Crtež uklonjen
pdfjs-editor-undo-bar-message-stamp = Slika uklonjena
pdfjs-editor-undo-bar-message-signature = Potpis uklonjen
# Variables:
# $count (Number) - the number of removed annotations.
pdfjs-editor-undo-bar-message-multiple =
{ $count ->
[one] { $count } bilješka uklonjena
[few] { $count } bilješke uklonjene
*[other] { $count } bilješki uklonjeno
}
pdfjs-editor-undo-bar-undo-button =
.title = Poništi
pdfjs-editor-undo-bar-undo-button-label = Poništi
pdfjs-editor-undo-bar-close-button =
.title = Zatvori
pdfjs-editor-undo-bar-close-button-label = Zatvori
## Add a signature dialog
pdfjs-editor-add-signature-dialog-label = Ovaj modalni prozor omogućava korisniku da kreira potpis koji će dodati PDF dokumentu. Korisnik može urediti ime (koje služi i kao alternativni tekst) i opcionalno sačuvati potpis za ponovnu upotrebu.
pdfjs-editor-add-signature-dialog-title = Dodaj potpis
## Tab names
# Type is a verb (you can type your name as signature)
pdfjs-editor-add-signature-type-button = Ukucaj
.title = Ukucaj
# Draw is a verb (you can draw your signature)
pdfjs-editor-add-signature-draw-button = Napiši
.title = Napiši
pdfjs-editor-add-signature-image-button = Slika
.title = Slika
## Tab panels
pdfjs-editor-add-signature-type-input =
.aria-label = Ukucajte svoj potpis
.placeholder = Ukucajte svoj potpis
pdfjs-editor-add-signature-draw-placeholder = Napišite svoj potpis
pdfjs-editor-add-signature-draw-thickness-range-label = Debljina
# Variables:
# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.
pdfjs-editor-add-signature-draw-thickness-range =
.title = Debljina pisanja: { $thickness }
pdfjs-editor-add-signature-image-placeholder = Prevucite datoteku ovdje da biste je učitali
pdfjs-editor-add-signature-image-browse-link =
{ PLATFORM() ->
[macos] Ili odaberite slikovne datoteke
*[other] Ili pregledajte slikovne datoteke
}
## Controls
pdfjs-editor-add-signature-description-label = Opis (alternativni tekst)
pdfjs-editor-add-signature-description-input =
.title = Opis (alternativni tekst)
pdfjs-editor-add-signature-description-default-when-drawing = Potpis
pdfjs-editor-add-signature-clear-button-label = Očisti potpis
pdfjs-editor-add-signature-clear-button =
.title = Očisti potpis
pdfjs-editor-add-signature-save-checkbox = Sačuvaj potpis
pdfjs-editor-add-signature-save-warning-message = Dostigli ste ograničenje od 5 sačuvanih potpisa. Uklonite jedan da biste sačuvali više.
pdfjs-editor-add-signature-image-upload-error-title = Nije moguće učitati sliku
pdfjs-editor-add-signature-image-upload-error-description = Provjerite mrežnu vezu ili pokušajte s drugom slikom.
pdfjs-editor-add-signature-image-no-data-error-title = Nije moguće pretvoriti ovu sliku u potpis
pdfjs-editor-add-signature-image-no-data-error-description = Molimo pokušajte učitati drugu sliku.
pdfjs-editor-add-signature-error-close-button = Zatvori
## Dialog buttons
pdfjs-editor-add-signature-cancel-button = Otkaži
pdfjs-editor-add-signature-add-button = Dodaj
pdfjs-editor-edit-signature-update-button = Ažuriraj
## Edit a comment button in the editor toolbar
pdfjs-editor-edit-comment-button =
.title = Uredi komentar
## Main menu for adding/removing signatures
pdfjs-editor-delete-signature-button1 =
.title = Ukloni sačuvani potpis
pdfjs-editor-delete-signature-button-label1 = Ukloni sačuvani potpis
## Editor toolbar
pdfjs-editor-add-signature-edit-button-label = Uredi opis
## Edit signature description dialog
pdfjs-editor-edit-signature-dialog-title = Uredi opis

View File

@ -98,24 +98,12 @@ pdfjs-document-properties-button =
pdfjs-document-properties-button-label = Propietats del document… pdfjs-document-properties-button-label = Propietats del document…
pdfjs-document-properties-file-name = Nom del fitxer: pdfjs-document-properties-file-name = Nom del fitxer:
pdfjs-document-properties-file-size = Mida del fitxer: pdfjs-document-properties-file-size = Mida del fitxer:
# Variables:
# $size_kb (Number) - the PDF file size in kilobytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bytes)
# Variables:
# $size_mb (Number) - the PDF file size in megabytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-mb = { $size_mb } MB ({ $size_b } bytes)
pdfjs-document-properties-title = Títol: pdfjs-document-properties-title = Títol:
pdfjs-document-properties-author = Autor: pdfjs-document-properties-author = Autor:
pdfjs-document-properties-subject = Assumpte: pdfjs-document-properties-subject = Assumpte:
pdfjs-document-properties-keywords = Paraules clau: pdfjs-document-properties-keywords = Paraules clau:
pdfjs-document-properties-creation-date = Data de creació: pdfjs-document-properties-creation-date = Data de creació:
pdfjs-document-properties-modification-date = Data de modificació: pdfjs-document-properties-modification-date = Data de modificació:
# Variables:
# $date (Date) - the creation/modification date of the PDF file
# $time (Time) - the creation/modification time of the PDF file
pdfjs-document-properties-date-string = { $date }, { $time }
pdfjs-document-properties-creator = Creador: pdfjs-document-properties-creator = Creador:
pdfjs-document-properties-producer = Generador de PDF: pdfjs-document-properties-producer = Generador de PDF:
pdfjs-document-properties-version = Versió de PDF: pdfjs-document-properties-version = Versió de PDF:
@ -243,10 +231,6 @@ pdfjs-rendering-error = S'ha produït un error mentre es renderitzava la pàgina
## Annotations ## Annotations
# Variables:
# $date (Date) - the modification date of the annotation
# $time (Time) - the modification time of the annotation
pdfjs-annotation-date-string = { $date }, { $time }
# .alt: This is used as a tooltip. # .alt: This is used as a tooltip.
# Variables: # Variables:
# $type (String) - an annotation type from a list defined in the PDF spec # $type (String) - an annotation type from a list defined in the PDF spec
@ -272,9 +256,6 @@ pdfjs-editor-ink-button =
.title = Dibuixa .title = Dibuixa
pdfjs-editor-ink-button-label = Dibuixa pdfjs-editor-ink-button-label = Dibuixa
## Remove button for the various kind of editor.
## ##
# Editor Parameters # Editor Parameters
@ -283,31 +264,11 @@ pdfjs-editor-free-text-size-input = Mida
pdfjs-editor-ink-color-input = Color pdfjs-editor-ink-color-input = Color
pdfjs-editor-ink-thickness-input = Gruix pdfjs-editor-ink-thickness-input = Gruix
pdfjs-editor-ink-opacity-input = Opacitat pdfjs-editor-ink-opacity-input = Opacitat
pdfjs-free-text =
.aria-label = Editor de text
pdfjs-free-text-default-content = Escriviu…
pdfjs-ink =
.aria-label = Editor de dibuix
pdfjs-ink-canvas =
.aria-label = Imatge creada per l'usuari
## Alt-text dialog ## Alt-text dialog
pdfjs-editor-alt-text-cancel-button = Cancel·la
## Editor resizers ## Dialog buttons
## This is used in an aria label to help to understand the role of the resizer.
## Color picker
## Show all highlights
## This is a toggle button to show/hide all the highlights.
## New alt-text dialog
## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.
## Image alt-text settings
pdfjs-editor-add-signature-cancel-button = Cancel·la

View File

@ -96,24 +96,12 @@ pdfjs-document-properties-button =
pdfjs-document-properties-button-label = Taq richinil wuj… pdfjs-document-properties-button-label = Taq richinil wuj…
pdfjs-document-properties-file-name = Rub'i' yakb'äl: pdfjs-document-properties-file-name = Rub'i' yakb'äl:
pdfjs-document-properties-file-size = Runimilem yakb'äl: pdfjs-document-properties-file-size = Runimilem yakb'äl:
# Variables:
# $size_kb (Number) - the PDF file size in kilobytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bytes)
# Variables:
# $size_mb (Number) - the PDF file size in megabytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-mb = { $size_mb } MB ({ $size_b } bytes)
pdfjs-document-properties-title = B'i'aj: pdfjs-document-properties-title = B'i'aj:
pdfjs-document-properties-author = B'anel: pdfjs-document-properties-author = B'anel:
pdfjs-document-properties-subject = Taqikil: pdfjs-document-properties-subject = Taqikil:
pdfjs-document-properties-keywords = Kixe'el taq tzij: pdfjs-document-properties-keywords = Kixe'el taq tzij:
pdfjs-document-properties-creation-date = Ruq'ijul xtz'uk: pdfjs-document-properties-creation-date = Ruq'ijul xtz'uk:
pdfjs-document-properties-modification-date = Ruq'ijul xjalwachïx: pdfjs-document-properties-modification-date = Ruq'ijul xjalwachïx:
# Variables:
# $date (Date) - the creation/modification date of the PDF file
# $time (Time) - the creation/modification time of the PDF file
pdfjs-document-properties-date-string = { $date }, { $time }
pdfjs-document-properties-creator = Q'inonel: pdfjs-document-properties-creator = Q'inonel:
pdfjs-document-properties-producer = PDF b'anöy: pdfjs-document-properties-producer = PDF b'anöy:
pdfjs-document-properties-version = PDF ruwäch: pdfjs-document-properties-version = PDF ruwäch:
@ -241,10 +229,6 @@ pdfjs-rendering-error = Xk'ulwachitäj jun sachoj toq ninuk'wachij ri ruxaq.
## Annotations ## Annotations
# Variables:
# $date (Date) - the modification date of the annotation
# $time (Time) - the modification time of the annotation
pdfjs-annotation-date-string = { $date }, { $time }
# .alt: This is used as a tooltip. # .alt: This is used as a tooltip.
# Variables: # Variables:
# $type (String) - an annotation type from a list defined in the PDF spec # $type (String) - an annotation type from a list defined in the PDF spec
@ -269,23 +253,12 @@ pdfjs-editor-free-text-button-label = Rucholajem tz'ib'
pdfjs-editor-ink-button = pdfjs-editor-ink-button =
.title = Tiwachib'ëx .title = Tiwachib'ëx
pdfjs-editor-ink-button-label = Tiwachib'ëx pdfjs-editor-ink-button-label = Tiwachib'ëx
##
# Editor Parameters # Editor Parameters
pdfjs-editor-free-text-color-input = B'onil pdfjs-editor-free-text-color-input = B'onil
pdfjs-editor-free-text-size-input = Nimilem pdfjs-editor-free-text-size-input = Nimilem
pdfjs-editor-ink-color-input = B'onil pdfjs-editor-ink-color-input = B'onil
pdfjs-editor-ink-thickness-input = Rupimil pdfjs-editor-ink-thickness-input = Rupimil
pdfjs-editor-ink-opacity-input = Q'equmal pdfjs-editor-ink-opacity-input = Q'equmal
pdfjs-free-text =
.aria-label = Nuk'unel tz'ib'atzij
pdfjs-free-text-default-content = Titikitisäx rutz'ib'axik…
pdfjs-ink =
.aria-label = Nuk'unel wachib'äl
pdfjs-ink-canvas =
.aria-label = Wachib'äl nuk'un ruma okisaxel
## Alt-text dialog
## Editor resizers
## This is used in an aria label to help to understand the role of the resizer.

View File

@ -80,24 +80,12 @@ pdfjs-document-properties-button =
pdfjs-document-properties-button-label = تایبەتمەندییەکانی بەڵگەنامە... pdfjs-document-properties-button-label = تایبەتمەندییەکانی بەڵگەنامە...
pdfjs-document-properties-file-name = ناوی پەڕگە: pdfjs-document-properties-file-name = ناوی پەڕگە:
pdfjs-document-properties-file-size = قەبارەی پەڕگە: pdfjs-document-properties-file-size = قەبارەی پەڕگە:
# Variables:
# $size_kb (Number) - the PDF file size in kilobytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-kb = { $size_kb } کب ({ $size_b } بایت)
# Variables:
# $size_mb (Number) - the PDF file size in megabytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-mb = { $size_mb } مب ({ $size_b } بایت)
pdfjs-document-properties-title = سەردێڕ: pdfjs-document-properties-title = سەردێڕ:
pdfjs-document-properties-author = نووسەر pdfjs-document-properties-author = نووسەر
pdfjs-document-properties-subject = بابەت: pdfjs-document-properties-subject = بابەت:
pdfjs-document-properties-keywords = کلیلەوشە: pdfjs-document-properties-keywords = کلیلەوشە:
pdfjs-document-properties-creation-date = بەرواری درووستکردن: pdfjs-document-properties-creation-date = بەرواری درووستکردن:
pdfjs-document-properties-modification-date = بەرواری دەستکاریکردن: pdfjs-document-properties-modification-date = بەرواری دەستکاریکردن:
# Variables:
# $date (Date) - the creation/modification date of the PDF file
# $time (Time) - the creation/modification time of the PDF file
pdfjs-document-properties-date-string = { $date }, { $time }
pdfjs-document-properties-creator = درووستکەر: pdfjs-document-properties-creator = درووستکەر:
pdfjs-document-properties-producer = بەرهەمهێنەری PDF: pdfjs-document-properties-producer = بەرهەمهێنەری PDF:
pdfjs-document-properties-version = وەشانی PDF: pdfjs-document-properties-version = وەشانی PDF:
@ -198,9 +186,6 @@ pdfjs-page-scale-actual = قەبارەی ڕاستی
# $scale (Number) - percent value for page scale # $scale (Number) - percent value for page scale
pdfjs-page-scale-percent = { $scale }% pdfjs-page-scale-percent = { $scale }%
## PDF page
## Loading indicator messages ## Loading indicator messages
pdfjs-loading-error = هەڵەیەک ڕوویدا لە کاتی بارکردنی PDF. pdfjs-loading-error = هەڵەیەک ڕوویدا لە کاتی بارکردنی PDF.
@ -211,10 +196,6 @@ pdfjs-rendering-error = هەڵەیەک ڕوویدا لە کاتی پوختەکر
## Annotations ## Annotations
# Variables:
# $date (Date) - the modification date of the annotation
# $time (Time) - the modification time of the annotation
pdfjs-annotation-date-string = { $date }, { $time }
# .alt: This is used as a tooltip. # .alt: This is used as a tooltip.
# Variables: # Variables:
# $type (String) - an annotation type from a list defined in the PDF spec # $type (String) - an annotation type from a list defined in the PDF spec
@ -230,13 +211,3 @@ pdfjs-password-invalid = وشەی تێپەڕ هەڵەیە. تکایە دووبا
pdfjs-password-ok-button = باشە pdfjs-password-ok-button = باشە
pdfjs-password-cancel-button = پاشگەزبوونەوە pdfjs-password-cancel-button = پاشگەزبوونەوە
pdfjs-web-fonts-disabled = جۆرەپیتی وێب ناچالاکە: نەتوانی جۆرەپیتی تێخراوی ناو pdfـەکە بەکاربێت. pdfjs-web-fonts-disabled = جۆرەپیتی وێب ناچالاکە: نەتوانی جۆرەپیتی تێخراوی ناو pdfـەکە بەکاربێت.
## Editing
## Alt-text dialog
## Editor resizers
## This is used in an aria label to help to understand the role of the resizer.

View File

@ -112,14 +112,6 @@ pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) }
# $mb (Number) - the PDF file size in megabytes # $mb (Number) - the PDF file size in megabytes
# $b (Number) - the PDF file size in bytes # $b (Number) - the PDF file size in bytes
pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bajtů) pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bajtů)
# Variables:
# $size_kb (Number) - the PDF file size in kilobytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bajtů)
# Variables:
# $size_mb (Number) - the PDF file size in megabytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-mb = { $size_mb } MB ({ $size_b } bajtů)
pdfjs-document-properties-title = Název stránky: pdfjs-document-properties-title = Název stránky:
pdfjs-document-properties-author = Autor: pdfjs-document-properties-author = Autor:
pdfjs-document-properties-subject = Předmět: pdfjs-document-properties-subject = Předmět:
@ -129,10 +121,6 @@ pdfjs-document-properties-modification-date = Datum úpravy:
# Variables: # Variables:
# $dateObj (Date) - the creation/modification date and time of the PDF file # $dateObj (Date) - the creation/modification date and time of the PDF file
pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") } pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
# Variables:
# $date (Date) - the creation/modification date of the PDF file
# $time (Time) - the creation/modification time of the PDF file
pdfjs-document-properties-date-string = { $date }, { $time }
pdfjs-document-properties-creator = Vytvořil: pdfjs-document-properties-creator = Vytvořil:
pdfjs-document-properties-producer = Tvůrce PDF: pdfjs-document-properties-producer = Tvůrce PDF:
pdfjs-document-properties-version = Verze PDF: pdfjs-document-properties-version = Verze PDF:
@ -255,7 +243,7 @@ pdfjs-find-not-found = Hledaný text nenalezen
## Predefined zoom values ## Predefined zoom values
pdfjs-page-scale-width = Podle šířky pdfjs-page-scale-width = Podle šířky
pdfjs-page-scale-fit = Podle výšky pdfjs-page-scale-fit = Podle stránky
pdfjs-page-scale-auto = Automatická velikost pdfjs-page-scale-auto = Automatická velikost
pdfjs-page-scale-actual = Skutečná velikost pdfjs-page-scale-actual = Skutečná velikost
# Variables: # Variables:
@ -279,10 +267,6 @@ pdfjs-rendering-error = Při vykreslování stránky nastala chyba.
## Annotations ## Annotations
# Variables:
# $date (Date) - the modification date of the annotation
# $time (Time) - the modification time of the annotation
pdfjs-annotation-date-string = { $date }, { $time }
# .alt: This is used as a tooltip. # .alt: This is used as a tooltip.
# Variables: # Variables:
# $type (String) - an annotation type from a list defined in the PDF spec # $type (String) - an annotation type from a list defined in the PDF spec
@ -306,9 +290,13 @@ pdfjs-web-fonts-disabled = Webová písma jsou zakázána, proto není možné p
pdfjs-editor-free-text-button = pdfjs-editor-free-text-button =
.title = Text .title = Text
pdfjs-editor-color-picker-free-text-input =
.title = Změna barvy textu
pdfjs-editor-free-text-button-label = Text pdfjs-editor-free-text-button-label = Text
pdfjs-editor-ink-button = pdfjs-editor-ink-button =
.title = Kreslení .title = Kreslení
pdfjs-editor-color-picker-ink-input =
.title = Změna barvy kresby
pdfjs-editor-ink-button-label = Kreslení pdfjs-editor-ink-button-label = Kreslení
pdfjs-editor-stamp-button = pdfjs-editor-stamp-button =
.title = Přidání či úprava obrázků .title = Přidání či úprava obrázků
@ -320,6 +308,33 @@ pdfjs-highlight-floating-button1 =
.title = Zvýraznit .title = Zvýraznit
.aria-label = Zvýraznit .aria-label = Zvýraznit
pdfjs-highlight-floating-button-label = Zvýraznit pdfjs-highlight-floating-button-label = Zvýraznit
pdfjs-comment-floating-button =
.title = Komentář
.aria-label = Komentář
pdfjs-comment-floating-button-label = Komentář
pdfjs-editor-comment-button =
.title = Komentář
.aria-label = Komentář
pdfjs-editor-comment-button-label = Komentář
pdfjs-editor-signature-button =
.title = Přidat podpis
pdfjs-editor-signature-button-label = Přidat podpis
## Default editor aria labels
# “Highlight” is a noun, the string is used on the editor for highlights.
pdfjs-editor-highlight-editor =
.aria-label = Editor zvýraznění
# “Drawing” is a noun, the string is used on the editor for drawings.
pdfjs-editor-ink-editor =
.aria-label = Editor kresby
# Used when a signature editor is selected/hovered.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-signature-editor1 =
.aria-description = Editor podpisu: { $description }
pdfjs-editor-stamp-editor =
.aria-label = Editor obrázků
## Remove button for the various kind of editor. ## Remove button for the various kind of editor.
@ -331,6 +346,8 @@ pdfjs-editor-remove-stamp-button =
.title = Odebrat obrázek .title = Odebrat obrázek
pdfjs-editor-remove-highlight-button = pdfjs-editor-remove-highlight-button =
.title = Odebrat zvýraznění .title = Odebrat zvýraznění
pdfjs-editor-remove-signature-button =
.title = Odebrat podpis
## ##
@ -347,24 +364,43 @@ pdfjs-editor-stamp-add-image-button-label = Přidat obrázek
pdfjs-editor-free-highlight-thickness-input = Tloušťka pdfjs-editor-free-highlight-thickness-input = Tloušťka
pdfjs-editor-free-highlight-thickness-title = pdfjs-editor-free-highlight-thickness-title =
.title = Změna tloušťky při zvýrazňování jiných položek než textu .title = Změna tloušťky při zvýrazňování jiných položek než textu
pdfjs-editor-add-signature-container =
.aria-label = Ovládací prvky pro podpisy a uložené podpisy
pdfjs-editor-signature-add-signature-button =
.title = Přidat nový podpis
pdfjs-editor-signature-add-signature-button-label = Přidat nový podpis
# Used on the button to use an already saved signature.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-add-saved-signature-button =
.title = Uložený podpis: { $description }
# .default-content is used as a placeholder in an empty text editor. # .default-content is used as a placeholder in an empty text editor.
pdfjs-free-text2 = pdfjs-free-text2 =
.aria-label = Textový editor .aria-label = Textový editor
.default-content = Začněte psát... .default-content = Začněte psát...
pdfjs-free-text = # Used to show how many comments are present in the pdf file.
.aria-label = Textový editor # Variables:
pdfjs-free-text-default-content = Začněte psát… # $count (Number) - the number of comments.
pdfjs-ink = pdfjs-editor-comments-sidebar-title =
.aria-label = Editor kreslení { $count ->
pdfjs-ink-canvas = [one] Komentář
.aria-label = Uživatelem vytvořený obrázek [few] Komentáře
[many] Komentáře
*[other] Komentáře
}
pdfjs-editor-comments-sidebar-close-button =
.title = Zavřít postranní lištu
.aria-label = Zavřít postranní lištu
pdfjs-editor-comments-sidebar-close-button-label = Zavřít postranní lištu
# Instructional copy to add a comment by selecting text or an annotations.
pdfjs-editor-comments-sidebar-no-comments1 = Vidíte něco pozoruhodného? Zvýrazněte to a zanechte komentář.
pdfjs-editor-comments-sidebar-no-comments-link = Zjistit více
## Alt-text dialog ## Alt-text dialog
pdfjs-editor-alt-text-button-label = Náhradní popis pdfjs-editor-alt-text-button-label = Náhradní popis
pdfjs-editor-alt-text-edit-button = pdfjs-editor-alt-text-edit-button =
.aria-label = Upravit alternativní text .aria-label = Upravit alternativní text
pdfjs-editor-alt-text-edit-button-label = Upravit náhradní popis
pdfjs-editor-alt-text-dialog-label = Vyberte možnost pdfjs-editor-alt-text-dialog-label = Vyberte možnost
pdfjs-editor-alt-text-dialog-description = Náhradní popis pomáhá, když lidé obrázek nevidí nebo když se nenačítá. pdfjs-editor-alt-text-dialog-description = Náhradní popis pomáhá, když lidé obrázek nevidí nebo když se nenačítá.
pdfjs-editor-alt-text-add-description-label = Přidat popis pdfjs-editor-alt-text-add-description-label = Přidat popis
@ -384,14 +420,6 @@ pdfjs-editor-alt-text-button =
## Editor resizers ## Editor resizers
## This is used in an aria label to help to understand the role of the resizer. ## This is used in an aria label to help to understand the role of the resizer.
pdfjs-editor-resizer-label-top-left = Levý horní roh — změna velikosti
pdfjs-editor-resizer-label-top-middle = Horní střed — změna velikosti
pdfjs-editor-resizer-label-top-right = Pravý horní roh — změna velikosti
pdfjs-editor-resizer-label-middle-right = Vpravo uprostřed — změna velikosti
pdfjs-editor-resizer-label-bottom-right = Pravý dolní roh — změna velikosti
pdfjs-editor-resizer-label-bottom-middle = Střed dole — změna velikosti
pdfjs-editor-resizer-label-bottom-left = Levý dolní roh — změna velikosti
pdfjs-editor-resizer-label-middle-left = Vlevo uprostřed — změna velikosti
pdfjs-editor-resizer-top-left = pdfjs-editor-resizer-top-left =
.aria-label = Levý horní roh — změna velikosti .aria-label = Levý horní roh — změna velikosti
pdfjs-editor-resizer-top-middle = pdfjs-editor-resizer-top-middle =
@ -457,7 +485,6 @@ pdfjs-editor-new-alt-text-error-close-button = Zavřít
# Variables: # Variables:
# $totalSize (Number) - the total size (in MB) of the AI model. # $totalSize (Number) - the total size (in MB) of the AI model.
# $downloadedSize (Number) - the downloaded size (in MB) of the AI model. # $downloadedSize (Number) - the downloaded size (in MB) of the AI model.
# $percent (Number) - the percentage of the downloaded size.
pdfjs-editor-new-alt-text-ai-model-downloading-progress = Stahuje se model AI pro alternativní texty ({ $downloadedSize } z { $totalSize } MB) pdfjs-editor-new-alt-text-ai-model-downloading-progress = Stahuje se model AI pro alternativní texty ({ $downloadedSize } z { $totalSize } MB)
.aria-valuetext = Stahuje se model AI pro alternativní texty ({ $downloadedSize } z { $totalSize } MB) .aria-valuetext = Stahuje se model AI pro alternativní texty ({ $downloadedSize } z { $totalSize } MB)
# This is a button that users can click to edit the alt text they have already added. # This is a button that users can click to edit the alt text they have already added.
@ -497,3 +524,135 @@ pdfjs-editor-alt-text-settings-editor-title = Editor alternativního textu
pdfjs-editor-alt-text-settings-show-dialog-button-label = Při přidávání obrázku hned zobrazit editor alternativního textu pdfjs-editor-alt-text-settings-show-dialog-button-label = Při přidávání obrázku hned zobrazit editor alternativního textu
pdfjs-editor-alt-text-settings-show-dialog-description = Pomůže vám zajistit, aby všechny vaše obrázky obsahovaly alternativní text. pdfjs-editor-alt-text-settings-show-dialog-description = Pomůže vám zajistit, aby všechny vaše obrázky obsahovaly alternativní text.
pdfjs-editor-alt-text-settings-close-button = Zavřít pdfjs-editor-alt-text-settings-close-button = Zavřít
## Accessibility labels (announced by screen readers) for objects added to the editor.
pdfjs-editor-highlight-added-alert = Přidáno zvýraznění
pdfjs-editor-freetext-added-alert = Text přidán
pdfjs-editor-ink-added-alert = Kresba byla přidána
pdfjs-editor-stamp-added-alert = Obrázek byl přidán
pdfjs-editor-signature-added-alert = Byl přidán podpis
## "Annotations removed" bar
pdfjs-editor-undo-bar-message-highlight = Zvýraznění odebráno
pdfjs-editor-undo-bar-message-freetext = Text odstraněn
pdfjs-editor-undo-bar-message-ink = Kresba odstraněna
pdfjs-editor-undo-bar-message-stamp = Obrázek odebrán
pdfjs-editor-undo-bar-message-signature = Podpis odebrán
# Variables:
# $count (Number) - the number of removed annotations.
pdfjs-editor-undo-bar-message-multiple =
{ $count ->
[one] { $count } anotace odebrána
[few] { $count } anotace odebrány
[many] { $count } anotací odebráno
*[other] { $count } anotací odebráno
}
pdfjs-editor-undo-bar-undo-button =
.title = Zpět
pdfjs-editor-undo-bar-undo-button-label = Zpět
pdfjs-editor-undo-bar-close-button =
.title = Zavřít
pdfjs-editor-undo-bar-close-button-label = Zavřít
## Add a signature dialog
pdfjs-editor-add-signature-dialog-label = Tento způsob umožňuje uživateli vytvořit podpis, který se přidá do dokumentu PDF. Uživatel může upravit jméno (které slouží zároveň jako alternativní text) a podpis uložit pro pozdější použití.
pdfjs-editor-add-signature-dialog-title = Přidat podpis
## Tab names
# Type is a verb (you can type your name as signature)
pdfjs-editor-add-signature-type-button = Psát
.title = Psát
# Draw is a verb (you can draw your signature)
pdfjs-editor-add-signature-draw-button = Kreslit
.title = Kreslit
pdfjs-editor-add-signature-image-button = Obrázek
.title = Obrázek
## Tab panels
pdfjs-editor-add-signature-type-input =
.aria-label = Zadejte svůj podpis
.placeholder = Zadejte svůj podpis
pdfjs-editor-add-signature-draw-placeholder = Nakreslete svůj podpis
pdfjs-editor-add-signature-draw-thickness-range-label = Tloušťka
# Variables:
# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.
pdfjs-editor-add-signature-draw-thickness-range =
.title = Tloušťka kresby: { $thickness }
pdfjs-editor-add-signature-image-placeholder = Pro nahrání přetáhněte soubor sem
pdfjs-editor-add-signature-image-browse-link =
{ PLATFORM() ->
[macos] Nebo vyberte soubory s obrázky
*[other] Nebo vyberte soubory s obrázky
}
## Controls
pdfjs-editor-add-signature-description-label = Popis (alternativní text)
pdfjs-editor-add-signature-description-input =
.title = Popis (alternativní text)
pdfjs-editor-add-signature-description-default-when-drawing = Podpis
pdfjs-editor-add-signature-clear-button-label = Vymazání podpisu
pdfjs-editor-add-signature-clear-button =
.title = Vymazání podpisu
pdfjs-editor-add-signature-save-checkbox = Uložit podpis
pdfjs-editor-add-signature-save-warning-message = Dosáhli jste limitu 5 uložených podpisů. Odstraňte jeden a uložte další.
pdfjs-editor-add-signature-image-upload-error-title = Obrázek se nepodařilo nahrát
pdfjs-editor-add-signature-image-upload-error-description = Zkontrolujte připojení k síti nebo zkuste jiný obrázek.
pdfjs-editor-add-signature-image-no-data-error-title = Nelze převést tento obrázek na podpis
pdfjs-editor-add-signature-image-no-data-error-description = Zkuste nahrát jiný obrázek.
pdfjs-editor-add-signature-error-close-button = Zavřít
## Dialog buttons
pdfjs-editor-add-signature-cancel-button = Zrušit
pdfjs-editor-add-signature-add-button = Přidat
pdfjs-editor-edit-signature-update-button = Aktualizovat
## Comment popup
pdfjs-editor-edit-comment-popup-button-label = Upravit komentář
pdfjs-editor-edit-comment-popup-button =
.title = Upravit komentář
pdfjs-editor-delete-comment-popup-button-label = Odebrat komentář
pdfjs-editor-delete-comment-popup-button =
.title = Odebrat komentář
pdfjs-show-comment-button =
.title = Zobrazit komentář
## Edit a comment dialog
# An existing comment is edited
pdfjs-editor-edit-comment-dialog-title-when-editing = Upravit komentář
pdfjs-editor-edit-comment-dialog-save-button-when-editing = Aktualizovat
# No existing comment
pdfjs-editor-edit-comment-dialog-title-when-adding = Přidání komentáře
pdfjs-editor-edit-comment-dialog-save-button-when-adding = Přidat
pdfjs-editor-edit-comment-dialog-text-input =
.placeholder = Začněte psát…
pdfjs-editor-edit-comment-dialog-cancel-button = Zrušit
## Edit a comment button in the editor toolbar
pdfjs-editor-edit-comment-button =
.title = Upravit komentář
pdfjs-editor-add-comment-button =
.title = Přidání komentáře
## Main menu for adding/removing signatures
pdfjs-editor-delete-signature-button1 =
.title = Odebrat uložený podpis
pdfjs-editor-delete-signature-button-label1 = Odebrat uložený podpis
## Editor toolbar
pdfjs-editor-add-signature-edit-button-label = Upravit popis
## Edit signature description dialog
pdfjs-editor-edit-signature-dialog-title = Upravit popis

View File

@ -112,14 +112,6 @@ pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) }
# $mb (Number) - the PDF file size in megabytes # $mb (Number) - the PDF file size in megabytes
# $b (Number) - the PDF file size in bytes # $b (Number) - the PDF file size in bytes
pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } beit) pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } beit)
# Variables:
# $size_kb (Number) - the PDF file size in kilobytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } beit)
# Variables:
# $size_mb (Number) - the PDF file size in megabytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-mb = { $size_mb } MB ({ $size_b } beit)
pdfjs-document-properties-title = Teitl: pdfjs-document-properties-title = Teitl:
pdfjs-document-properties-author = Awdur: pdfjs-document-properties-author = Awdur:
pdfjs-document-properties-subject = Pwnc: pdfjs-document-properties-subject = Pwnc:
@ -129,10 +121,6 @@ pdfjs-document-properties-modification-date = Dyddiad Addasu:
# Variables: # Variables:
# $dateObj (Date) - the creation/modification date and time of the PDF file # $dateObj (Date) - the creation/modification date and time of the PDF file
pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") } pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
# Variables:
# $date (Date) - the creation/modification date of the PDF file
# $time (Time) - the creation/modification time of the PDF file
pdfjs-document-properties-date-string = { $date }, { $time }
pdfjs-document-properties-creator = Crewr: pdfjs-document-properties-creator = Crewr:
pdfjs-document-properties-producer = Cynhyrchydd PDF: pdfjs-document-properties-producer = Cynhyrchydd PDF:
pdfjs-document-properties-version = Fersiwn PDF: pdfjs-document-properties-version = Fersiwn PDF:
@ -283,10 +271,6 @@ pdfjs-rendering-error = Digwyddodd gwall wrth adeiladu'r dudalen.
## Annotations ## Annotations
# Variables:
# $date (Date) - the modification date of the annotation
# $time (Time) - the modification time of the annotation
pdfjs-annotation-date-string = { $date }, { $time }
# .alt: This is used as a tooltip. # .alt: This is used as a tooltip.
# Variables: # Variables:
# $type (String) - an annotation type from a list defined in the PDF spec # $type (String) - an annotation type from a list defined in the PDF spec
@ -310,9 +294,13 @@ pdfjs-web-fonts-disabled = Ffontiau gwe wedi eu hanalluogi: methu defnyddio ffon
pdfjs-editor-free-text-button = pdfjs-editor-free-text-button =
.title = Testun .title = Testun
pdfjs-editor-color-picker-free-text-input =
.title = Newid lliw testun
pdfjs-editor-free-text-button-label = Testun pdfjs-editor-free-text-button-label = Testun
pdfjs-editor-ink-button = pdfjs-editor-ink-button =
.title = Lluniadu .title = Lluniadu
pdfjs-editor-color-picker-ink-input =
.title = Newid lliw lluniadu
pdfjs-editor-ink-button-label = Lluniadu pdfjs-editor-ink-button-label = Lluniadu
pdfjs-editor-stamp-button = pdfjs-editor-stamp-button =
.title = Ychwanegu neu olygu delweddau .title = Ychwanegu neu olygu delweddau
@ -324,6 +312,33 @@ pdfjs-highlight-floating-button1 =
.title = Amlygu .title = Amlygu
.aria-label = Amlygu .aria-label = Amlygu
pdfjs-highlight-floating-button-label = Amlygu pdfjs-highlight-floating-button-label = Amlygu
pdfjs-comment-floating-button =
.title = Sylw
.aria-label = Sylw
pdfjs-comment-floating-button-label = Sylw
pdfjs-editor-comment-button =
.title = Sylw
.aria-label = Sylw
pdfjs-editor-comment-button-label = Sylw
pdfjs-editor-signature-button =
.title = Ychwanegu llofnod
pdfjs-editor-signature-button-label = Ychwanegu llofnod
## Default editor aria labels
# “Highlight” is a noun, the string is used on the editor for highlights.
pdfjs-editor-highlight-editor =
.aria-label = Golygydd amlygu
# “Drawing” is a noun, the string is used on the editor for drawings.
pdfjs-editor-ink-editor =
.aria-label = Golygydd lluniadu
# Used when a signature editor is selected/hovered.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-signature-editor1 =
.aria-description = Golygydd llofnod: { $description }
pdfjs-editor-stamp-editor =
.aria-label = Golygydd delweddau
## Remove button for the various kind of editor. ## Remove button for the various kind of editor.
@ -335,6 +350,8 @@ pdfjs-editor-remove-stamp-button =
.title = Dileu delwedd .title = Dileu delwedd
pdfjs-editor-remove-highlight-button = pdfjs-editor-remove-highlight-button =
.title = Tynnu amlygiad .title = Tynnu amlygiad
pdfjs-editor-remove-signature-button =
.title = Dileu llofnod
## ##
@ -351,24 +368,45 @@ pdfjs-editor-stamp-add-image-button-label = Ychwanegu delwedd
pdfjs-editor-free-highlight-thickness-input = Trwch pdfjs-editor-free-highlight-thickness-input = Trwch
pdfjs-editor-free-highlight-thickness-title = pdfjs-editor-free-highlight-thickness-title =
.title = Newid trwch wrth amlygu eitemau heblaw testun .title = Newid trwch wrth amlygu eitemau heblaw testun
pdfjs-editor-add-signature-container =
.aria-label = Rheolyddion llofnodion a llofnodion wedi'u cadw
pdfjs-editor-signature-add-signature-button =
.title = Ychwanegu llofnod newydd
pdfjs-editor-signature-add-signature-button-label = Ychwanegu llofnod newydd
# Used on the button to use an already saved signature.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-add-saved-signature-button =
.title = Llofnod wedi'i gadw: { $description }
# .default-content is used as a placeholder in an empty text editor. # .default-content is used as a placeholder in an empty text editor.
pdfjs-free-text2 = pdfjs-free-text2 =
.aria-label = Golygydd Testun .aria-label = Golygydd Testun
.default-content = Cychwyn teipio… .default-content = Cychwyn teipio…
pdfjs-free-text = # Used to show how many comments are present in the pdf file.
.aria-label = Golygydd Testun # Variables:
pdfjs-free-text-default-content = Cychwyn teipio… # $count (Number) - the number of comments.
pdfjs-ink = pdfjs-editor-comments-sidebar-title =
.aria-label = Golygydd Lluniadu { $count ->
pdfjs-ink-canvas = [zero] Sylwadau
.aria-label = Delwedd wedi'i chreu gan ddefnyddwyr [one] Sylw
[two] Sylw
[few] Sylw
[many] Sylw
*[other] Sylw
}
pdfjs-editor-comments-sidebar-close-button =
.title = Cau'r bar ochr
.aria-label = Cau'r bar ochr
pdfjs-editor-comments-sidebar-close-button-label = Cau'r bar ochr
# Instructional copy to add a comment by selecting text or an annotations.
pdfjs-editor-comments-sidebar-no-comments1 = Gweld rhywbeth nodedig? Amlygwch ef a gadael sylw.
pdfjs-editor-comments-sidebar-no-comments-link = Dysgu rhagor
## Alt-text dialog ## Alt-text dialog
pdfjs-editor-alt-text-button-label = Testun amgen (alt) pdfjs-editor-alt-text-button-label = Testun amgen (alt)
pdfjs-editor-alt-text-edit-button = pdfjs-editor-alt-text-edit-button =
.aria-label = Golygu testun amgen .aria-label = Golygu testun amgen
pdfjs-editor-alt-text-edit-button-label = Golygu testun amgen
pdfjs-editor-alt-text-dialog-label = Dewisiadau pdfjs-editor-alt-text-dialog-label = Dewisiadau
pdfjs-editor-alt-text-dialog-description = Mae testun amgen (testun alt) yn helpu pan na all pobl weld y ddelwedd neu pan nad yw'n llwytho. pdfjs-editor-alt-text-dialog-description = Mae testun amgen (testun alt) yn helpu pan na all pobl weld y ddelwedd neu pan nad yw'n llwytho.
pdfjs-editor-alt-text-add-description-label = Ychwanegu disgrifiad pdfjs-editor-alt-text-add-description-label = Ychwanegu disgrifiad
@ -388,14 +426,6 @@ pdfjs-editor-alt-text-button =
## Editor resizers ## Editor resizers
## This is used in an aria label to help to understand the role of the resizer. ## This is used in an aria label to help to understand the role of the resizer.
pdfjs-editor-resizer-label-top-left = Y gornel chwith uchaf — newid maint
pdfjs-editor-resizer-label-top-middle = Canol uchaf - newid maint
pdfjs-editor-resizer-label-top-right = Y gornel dde uchaf - newid maint
pdfjs-editor-resizer-label-middle-right = De canol - newid maint
pdfjs-editor-resizer-label-bottom-right = Y gornel dde isaf — newid maint
pdfjs-editor-resizer-label-bottom-middle = Canol gwaelod — newid maint
pdfjs-editor-resizer-label-bottom-left = Y gornel chwith isaf — newid maint
pdfjs-editor-resizer-label-middle-left = Chwith canol — newid maint
pdfjs-editor-resizer-top-left = pdfjs-editor-resizer-top-left =
.aria-label = Y gornel chwith uchaf — newid maint .aria-label = Y gornel chwith uchaf — newid maint
pdfjs-editor-resizer-top-middle = pdfjs-editor-resizer-top-middle =
@ -452,7 +482,7 @@ pdfjs-editor-new-alt-text-textarea =
pdfjs-editor-new-alt-text-description = Disgrifiad byr ar gyfer pobl sydd ddim yn gallu gweld y ddelwedd neu pan nad yw'r ddelwedd yn llwytho. pdfjs-editor-new-alt-text-description = Disgrifiad byr ar gyfer pobl sydd ddim yn gallu gweld y ddelwedd neu pan nad yw'r ddelwedd yn llwytho.
# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human. # This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.
pdfjs-editor-new-alt-text-disclaimer1 = Cafodd y testun amgen hwn ei greu'n awtomatig a gall fod yn anghywir. pdfjs-editor-new-alt-text-disclaimer1 = Cafodd y testun amgen hwn ei greu'n awtomatig a gall fod yn anghywir.
pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Dysgu rhagor pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Rhagor
pdfjs-editor-new-alt-text-create-automatically-button-label = Creu testun amgen yn awtomatig pdfjs-editor-new-alt-text-create-automatically-button-label = Creu testun amgen yn awtomatig
pdfjs-editor-new-alt-text-not-now-button = Nid nawr pdfjs-editor-new-alt-text-not-now-button = Nid nawr
pdfjs-editor-new-alt-text-error-title = Methu â chreu testun amgen yn awtomatig pdfjs-editor-new-alt-text-error-title = Methu â chreu testun amgen yn awtomatig
@ -461,7 +491,6 @@ pdfjs-editor-new-alt-text-error-close-button = Cau
# Variables: # Variables:
# $totalSize (Number) - the total size (in MB) of the AI model. # $totalSize (Number) - the total size (in MB) of the AI model.
# $downloadedSize (Number) - the downloaded size (in MB) of the AI model. # $downloadedSize (Number) - the downloaded size (in MB) of the AI model.
# $percent (Number) - the percentage of the downloaded size.
pdfjs-editor-new-alt-text-ai-model-downloading-progress = Wrthi'n llwytho i lawr model AI testun amgen ( { $downloadedSize } o { $totalSize } MB) pdfjs-editor-new-alt-text-ai-model-downloading-progress = Wrthi'n llwytho i lawr model AI testun amgen ( { $downloadedSize } o { $totalSize } MB)
.aria-valuetext = Wrthi'n llwytho i lawr model AI testun amgen ( { $downloadedSize } o { $totalSize } MB) .aria-valuetext = Wrthi'n llwytho i lawr model AI testun amgen ( { $downloadedSize } o { $totalSize } MB)
# This is a button that users can click to edit the alt text they have already added. # This is a button that users can click to edit the alt text they have already added.
@ -501,3 +530,137 @@ pdfjs-editor-alt-text-settings-editor-title = Golygydd testun amgen
pdfjs-editor-alt-text-settings-show-dialog-button-label = Dangoswch y golygydd testun amgen yn syth wrth ychwanegu delwedd pdfjs-editor-alt-text-settings-show-dialog-button-label = Dangoswch y golygydd testun amgen yn syth wrth ychwanegu delwedd
pdfjs-editor-alt-text-settings-show-dialog-description = Yn eich helpu i wneud yn siŵr bod gan eich holl ddelweddau destun amgen. pdfjs-editor-alt-text-settings-show-dialog-description = Yn eich helpu i wneud yn siŵr bod gan eich holl ddelweddau destun amgen.
pdfjs-editor-alt-text-settings-close-button = Cau pdfjs-editor-alt-text-settings-close-button = Cau
## Accessibility labels (announced by screen readers) for objects added to the editor.
pdfjs-editor-highlight-added-alert = Amlygu wedi'i ychwanegu
pdfjs-editor-freetext-added-alert = Testun wedi'i ychwanegu
pdfjs-editor-ink-added-alert = Lluniadu wedi'i ychwanegu
pdfjs-editor-stamp-added-alert = Delwedd wedi'i hychwanegu
pdfjs-editor-signature-added-alert = Llofnod wedi'i ychwanegu
## "Annotations removed" bar
pdfjs-editor-undo-bar-message-highlight = Tynnwyd yr amlygu
pdfjs-editor-undo-bar-message-freetext = Tynnwyd y testun
pdfjs-editor-undo-bar-message-ink = Tynnwyd y lluniad
pdfjs-editor-undo-bar-message-stamp = Tynnwyd y ddelwedd
pdfjs-editor-undo-bar-message-signature = Llofnod wedi'i dynnu
# Variables:
# $count (Number) - the number of removed annotations.
pdfjs-editor-undo-bar-message-multiple =
{ $count ->
[zero] { $count } anodiad wedi'u tynnu
[one] { $count } anodiad wedi'i dynnu
[two] { $count } anodiad wedi'u tynnu
[few] { $count } anodiad wedi'u tynnu
[many] { $count } anodiad wedi'u tynnu
*[other] { $count } anodiad wedi'u tynnu
}
pdfjs-editor-undo-bar-undo-button =
.title = Dadwneud
pdfjs-editor-undo-bar-undo-button-label = Dadwneud
pdfjs-editor-undo-bar-close-button =
.title = Cau
pdfjs-editor-undo-bar-close-button-label = Cau
## Add a signature dialog
pdfjs-editor-add-signature-dialog-label = Mae'r modd hwn yn caniatáu i'r defnyddiwr greu llofnod i'w ychwanegu at ddogfen PDF. Gall y defnyddiwr olygu'r enw (sydd hefyd yn gweithredu fel y testun amgen), ac yn ddewisol cadw'r llofnod i'w ddefnyddio dro ar ôl tro.
pdfjs-editor-add-signature-dialog-title = Ychwanegu llofnod
## Tab names
# Type is a verb (you can type your name as signature)
pdfjs-editor-add-signature-type-button = Math
.title = Math
# Draw is a verb (you can draw your signature)
pdfjs-editor-add-signature-draw-button = Lluniadu
.title = Lluniadu
pdfjs-editor-add-signature-image-button = Delwedd
.title = Delwedd
## Tab panels
pdfjs-editor-add-signature-type-input =
.aria-label = Teipiwch eich llofnod
.placeholder = Teipiwch eich llofnod
pdfjs-editor-add-signature-draw-placeholder = Lluniwch eich llofnod
pdfjs-editor-add-signature-draw-thickness-range-label = Trwch
# Variables:
# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.
pdfjs-editor-add-signature-draw-thickness-range =
.title = Trwch y llinell: { $thickness }
pdfjs-editor-add-signature-image-placeholder = Llusgwch ffeil yma i'w llwytho
pdfjs-editor-add-signature-image-browse-link =
{ PLATFORM() ->
[macos] Neu ddewis ffeiliau delwedd
*[other] Neu bori ffeiliau delwedd
}
## Controls
pdfjs-editor-add-signature-description-label = Disgrifiad (testun amgen)
pdfjs-editor-add-signature-description-input =
.title = Disgrifiad (testun amgen)
pdfjs-editor-add-signature-description-default-when-drawing = Llofnod
pdfjs-editor-add-signature-clear-button-label = Diddymu llofnod
pdfjs-editor-add-signature-clear-button =
.title = Diddymu llofnod
pdfjs-editor-add-signature-save-checkbox = Cadw llofnod
pdfjs-editor-add-signature-save-warning-message = Rydych chi wedi cyrraedd y terfyn o 5 llofnod sydd wedi'u cadw. Tynnwch un i gadw rhagor
pdfjs-editor-add-signature-image-upload-error-title = Methu llwytho'r ddelwedd.
pdfjs-editor-add-signature-image-upload-error-description = Gwiriwch eich cysylltiad rhwydwaith neu rhowch gynnig ar ddelwedd arall.
pdfjs-editor-add-signature-image-no-data-error-title = Methu trosi'r ddelwedd hon yn llofnod
pdfjs-editor-add-signature-image-no-data-error-description = Ceisiwch lwytho delwedd wahanol.
pdfjs-editor-add-signature-error-close-button = Cau
## Dialog buttons
pdfjs-editor-add-signature-cancel-button = Diddymu
pdfjs-editor-add-signature-add-button = Ychwanegu
pdfjs-editor-edit-signature-update-button = Diweddaru
## Comment popup
pdfjs-editor-edit-comment-popup-button-label = Golygu sylw
pdfjs-editor-edit-comment-popup-button =
.title = Golygu sylw
pdfjs-editor-delete-comment-popup-button-label = Tynnu sylw
pdfjs-editor-delete-comment-popup-button =
.title = Tynnu sylw
pdfjs-show-comment-button =
.title = Dangos sylw
## Edit a comment dialog
# An existing comment is edited
pdfjs-editor-edit-comment-dialog-title-when-editing = Golygu sylw
pdfjs-editor-edit-comment-dialog-save-button-when-editing = Diweddaru
# No existing comment
pdfjs-editor-edit-comment-dialog-title-when-adding = Ychwanegu sylw
pdfjs-editor-edit-comment-dialog-save-button-when-adding = Ychwanegu
pdfjs-editor-edit-comment-dialog-text-input =
.placeholder = Cychwyn teipio…
pdfjs-editor-edit-comment-dialog-cancel-button = Diddymu
## Edit a comment button in the editor toolbar
pdfjs-editor-edit-comment-button =
.title = Golygu sylw
pdfjs-editor-add-comment-button =
.title = Ychwanegu sylw
## Main menu for adding/removing signatures
pdfjs-editor-delete-signature-button1 =
.title = Tynnu llofnod sydd wedi'i gadw
pdfjs-editor-delete-signature-button-label1 = Tynnwch y llofnod sydd wedi'i gadw
## Editor toolbar
pdfjs-editor-add-signature-edit-button-label = Golygu disgrifiad
## Edit signature description dialog
pdfjs-editor-edit-signature-dialog-title = Golygu disgrifiad

View File

@ -112,14 +112,6 @@ pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) }
# $mb (Number) - the PDF file size in megabytes # $mb (Number) - the PDF file size in megabytes
# $b (Number) - the PDF file size in bytes # $b (Number) - the PDF file size in bytes
pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes) pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes)
# Variables:
# $size_kb (Number) - the PDF file size in kilobytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bytes)
# Variables:
# $size_mb (Number) - the PDF file size in megabytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-mb = { $size_mb } MB ({ $size_b } bytes)
pdfjs-document-properties-title = Titel: pdfjs-document-properties-title = Titel:
pdfjs-document-properties-author = Forfatter: pdfjs-document-properties-author = Forfatter:
pdfjs-document-properties-subject = Emne: pdfjs-document-properties-subject = Emne:
@ -129,10 +121,6 @@ pdfjs-document-properties-modification-date = Redigeret:
# Variables: # Variables:
# $dateObj (Date) - the creation/modification date and time of the PDF file # $dateObj (Date) - the creation/modification date and time of the PDF file
pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") } pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
# Variables:
# $date (Date) - the creation/modification date of the PDF file
# $time (Time) - the creation/modification time of the PDF file
pdfjs-document-properties-date-string = { $date }, { $time }
pdfjs-document-properties-creator = Program: pdfjs-document-properties-creator = Program:
pdfjs-document-properties-producer = PDF-producent: pdfjs-document-properties-producer = PDF-producent:
pdfjs-document-properties-version = PDF-version: pdfjs-document-properties-version = PDF-version:
@ -275,10 +263,6 @@ pdfjs-rendering-error = Der opstod en fejl ved generering af siden.
## Annotations ## Annotations
# Variables:
# $date (Date) - the modification date of the annotation
# $time (Time) - the modification time of the annotation
pdfjs-annotation-date-string = { $date }, { $time }
# .alt: This is used as a tooltip. # .alt: This is used as a tooltip.
# Variables: # Variables:
# $type (String) - an annotation type from a list defined in the PDF spec # $type (String) - an annotation type from a list defined in the PDF spec
@ -302,9 +286,13 @@ pdfjs-web-fonts-disabled = Webskrifttyper er deaktiverede. De indlejrede skriftt
pdfjs-editor-free-text-button = pdfjs-editor-free-text-button =
.title = Tekst .title = Tekst
pdfjs-editor-color-picker-free-text-input =
.title = Skift tekstfarve
pdfjs-editor-free-text-button-label = Tekst pdfjs-editor-free-text-button-label = Tekst
pdfjs-editor-ink-button = pdfjs-editor-ink-button =
.title = Tegn .title = Tegn
pdfjs-editor-color-picker-ink-input =
.title = Skift tegne-farve
pdfjs-editor-ink-button-label = Tegn pdfjs-editor-ink-button-label = Tegn
pdfjs-editor-stamp-button = pdfjs-editor-stamp-button =
.title = Tilføj eller rediger billeder .title = Tilføj eller rediger billeder
@ -316,6 +304,33 @@ pdfjs-highlight-floating-button1 =
.title = Fremhæv .title = Fremhæv
.aria-label = Fremhæv .aria-label = Fremhæv
pdfjs-highlight-floating-button-label = Fremhæv pdfjs-highlight-floating-button-label = Fremhæv
pdfjs-comment-floating-button =
.title = Kommenter
.aria-label = Kommenter
pdfjs-comment-floating-button-label = Kommenter
pdfjs-editor-comment-button =
.title = Kommentar
.aria-label = Kommentar
pdfjs-editor-comment-button-label = Kommentar
pdfjs-editor-signature-button =
.title = Tilføj signatur
pdfjs-editor-signature-button-label = Tilføj signatur
## Default editor aria labels
# “Highlight” is a noun, the string is used on the editor for highlights.
pdfjs-editor-highlight-editor =
.aria-label = Redigering af fremhævning
# “Drawing” is a noun, the string is used on the editor for drawings.
pdfjs-editor-ink-editor =
.aria-label = Redigering af tegninger
# Used when a signature editor is selected/hovered.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-signature-editor1 =
.aria-description = Redigering af signatur: { $description }
pdfjs-editor-stamp-editor =
.aria-label = Redigering af billeder
## Remove button for the various kind of editor. ## Remove button for the various kind of editor.
@ -327,6 +342,8 @@ pdfjs-editor-remove-stamp-button =
.title = Fjern billede .title = Fjern billede
pdfjs-editor-remove-highlight-button = pdfjs-editor-remove-highlight-button =
.title = Fjern fremhævning .title = Fjern fremhævning
pdfjs-editor-remove-signature-button =
.title = Fjern signatur
## ##
@ -343,24 +360,41 @@ pdfjs-editor-stamp-add-image-button-label = Tilføj billede
pdfjs-editor-free-highlight-thickness-input = Tykkelse pdfjs-editor-free-highlight-thickness-input = Tykkelse
pdfjs-editor-free-highlight-thickness-title = pdfjs-editor-free-highlight-thickness-title =
.title = Ændr tykkelse, når andre elementer end tekst fremhæves .title = Ændr tykkelse, når andre elementer end tekst fremhæves
pdfjs-editor-add-signature-container =
.aria-label = Indstillinger for signaturer og gemte signaturer
pdfjs-editor-signature-add-signature-button =
.title = Tilføj ny signatur
pdfjs-editor-signature-add-signature-button-label = Tilføj ny signatur
# Used on the button to use an already saved signature.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-add-saved-signature-button =
.title = Gemt signatur: { $description }
# .default-content is used as a placeholder in an empty text editor. # .default-content is used as a placeholder in an empty text editor.
pdfjs-free-text2 = pdfjs-free-text2 =
.aria-label = Teksteditor .aria-label = Teksteditor
.default-content = Begynd at skrive… .default-content = Begynd at skrive…
pdfjs-free-text = # Used to show how many comments are present in the pdf file.
.aria-label = Teksteditor # Variables:
pdfjs-free-text-default-content = Begynd at skrive… # $count (Number) - the number of comments.
pdfjs-ink = pdfjs-editor-comments-sidebar-title =
.aria-label = Tegnings-editor { $count ->
pdfjs-ink-canvas = [one] Kommentar
.aria-label = Brugeroprettet billede *[other] Kommentarer
}
pdfjs-editor-comments-sidebar-close-button =
.title = Luk sidepanelet
.aria-label = Luk sidepanelet
pdfjs-editor-comments-sidebar-close-button-label = Luk sidepanelet
# Instructional copy to add a comment by selecting text or an annotations.
pdfjs-editor-comments-sidebar-no-comments1 = Har du fundet noget interessant? Fremhæv det og gem en kommentar.
pdfjs-editor-comments-sidebar-no-comments-link = Læs mere
## Alt-text dialog ## Alt-text dialog
pdfjs-editor-alt-text-button-label = Alternativ tekst pdfjs-editor-alt-text-button-label = Alternativ tekst
pdfjs-editor-alt-text-edit-button = pdfjs-editor-alt-text-edit-button =
.aria-label = Rediger alternativ tekst .aria-label = Rediger alternativ tekst
pdfjs-editor-alt-text-edit-button-label = Rediger alternativ tekst
pdfjs-editor-alt-text-dialog-label = Vælg en indstilling pdfjs-editor-alt-text-dialog-label = Vælg en indstilling
pdfjs-editor-alt-text-dialog-description = Alternativ tekst hjælper folk, som ikke kan se billedet eller når det ikke indlæses. pdfjs-editor-alt-text-dialog-description = Alternativ tekst hjælper folk, som ikke kan se billedet eller når det ikke indlæses.
pdfjs-editor-alt-text-add-description-label = Tilføj en beskrivelse pdfjs-editor-alt-text-add-description-label = Tilføj en beskrivelse
@ -380,14 +414,6 @@ pdfjs-editor-alt-text-button =
## Editor resizers ## Editor resizers
## This is used in an aria label to help to understand the role of the resizer. ## This is used in an aria label to help to understand the role of the resizer.
pdfjs-editor-resizer-label-top-left = Øverste venstre hjørne — tilpas størrelse
pdfjs-editor-resizer-label-top-middle = Øverste i midten — tilpas størrelse
pdfjs-editor-resizer-label-top-right = Øverste højre hjørne — tilpas størrelse
pdfjs-editor-resizer-label-middle-right = Midten til højre — tilpas størrelse
pdfjs-editor-resizer-label-bottom-right = Nederste højre hjørne - tilpas størrelse
pdfjs-editor-resizer-label-bottom-middle = Nederst i midten - tilpas størrelse
pdfjs-editor-resizer-label-bottom-left = Nederste venstre hjørne - tilpas størrelse
pdfjs-editor-resizer-label-middle-left = Midten til venstre — tilpas størrelse
pdfjs-editor-resizer-top-left = pdfjs-editor-resizer-top-left =
.aria-label = Øverste venstre hjørne — tilpas størrelse .aria-label = Øverste venstre hjørne — tilpas størrelse
pdfjs-editor-resizer-top-middle = pdfjs-editor-resizer-top-middle =
@ -453,7 +479,6 @@ pdfjs-editor-new-alt-text-error-close-button = Luk
# Variables: # Variables:
# $totalSize (Number) - the total size (in MB) of the AI model. # $totalSize (Number) - the total size (in MB) of the AI model.
# $downloadedSize (Number) - the downloaded size (in MB) of the AI model. # $downloadedSize (Number) - the downloaded size (in MB) of the AI model.
# $percent (Number) - the percentage of the downloaded size.
pdfjs-editor-new-alt-text-ai-model-downloading-progress = Henter alternativ tekst AI-model ({ $downloadedSize } af { $totalSize } MB) pdfjs-editor-new-alt-text-ai-model-downloading-progress = Henter alternativ tekst AI-model ({ $downloadedSize } af { $totalSize } MB)
.aria-valuetext = Henter alternativ tekst AI-model ({ $downloadedSize } af { $totalSize } MB) .aria-valuetext = Henter alternativ tekst AI-model ({ $downloadedSize } af { $totalSize } MB)
# This is a button that users can click to edit the alt text they have already added. # This is a button that users can click to edit the alt text they have already added.
@ -493,3 +518,133 @@ pdfjs-editor-alt-text-settings-editor-title = Redigering af alternativ tekst
pdfjs-editor-alt-text-settings-show-dialog-button-label = Vis redigering af alternativ tekst med det samme, når et billede tilføjes pdfjs-editor-alt-text-settings-show-dialog-button-label = Vis redigering af alternativ tekst med det samme, når et billede tilføjes
pdfjs-editor-alt-text-settings-show-dialog-description = Hjælper dig med at sikre, at alle dine billeder har alternativ tekst. pdfjs-editor-alt-text-settings-show-dialog-description = Hjælper dig med at sikre, at alle dine billeder har alternativ tekst.
pdfjs-editor-alt-text-settings-close-button = Luk pdfjs-editor-alt-text-settings-close-button = Luk
## Accessibility labels (announced by screen readers) for objects added to the editor.
pdfjs-editor-highlight-added-alert = Fremhævning tilføjet
pdfjs-editor-freetext-added-alert = Tekst tilføjet
pdfjs-editor-ink-added-alert = Tegning tilføjet
pdfjs-editor-stamp-added-alert = Billede tilføjet
pdfjs-editor-signature-added-alert = Signatur tilføjet
## "Annotations removed" bar
pdfjs-editor-undo-bar-message-highlight = Fremhævning fjernet
pdfjs-editor-undo-bar-message-freetext = Tekst fjernet
pdfjs-editor-undo-bar-message-ink = Tegning fjernet
pdfjs-editor-undo-bar-message-stamp = Billede fjernet
pdfjs-editor-undo-bar-message-signature = Signatur fjernet
# Variables:
# $count (Number) - the number of removed annotations.
pdfjs-editor-undo-bar-message-multiple =
{ $count ->
[one] { $count } kommentar fjernet
*[other] { $count } kommentarer fjernet
}
pdfjs-editor-undo-bar-undo-button =
.title = Fortryd
pdfjs-editor-undo-bar-undo-button-label = Fortryd
pdfjs-editor-undo-bar-close-button =
.title = Luk
pdfjs-editor-undo-bar-close-button-label = Luk
## Add a signature dialog
pdfjs-editor-add-signature-dialog-label = Modal-vinduet gør det muligt for brugeren at oprette en signatur, som kan føjes til PDF-dokumenter. Brugeren kan redigere navnet (der også fungerer som alternativ tekst) og eventuelt gemme signaturen, så den kan bruges igen.
pdfjs-editor-add-signature-dialog-title = Tilføj en signatur
## Tab names
# Type is a verb (you can type your name as signature)
pdfjs-editor-add-signature-type-button = Indtast
.title = Indtast
# Draw is a verb (you can draw your signature)
pdfjs-editor-add-signature-draw-button = Tegn
.title = Tegn
pdfjs-editor-add-signature-image-button = Billede
.title = Billede
## Tab panels
pdfjs-editor-add-signature-type-input =
.aria-label = Indtast din signatur
.placeholder = Indtast din signatur
pdfjs-editor-add-signature-draw-placeholder = Tegn din signatur
pdfjs-editor-add-signature-draw-thickness-range-label = Tykkelse
# Variables:
# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.
pdfjs-editor-add-signature-draw-thickness-range =
.title = Linjetykkelse: { $thickness }
pdfjs-editor-add-signature-image-placeholder = Træk en fil herhen for at uploade den
pdfjs-editor-add-signature-image-browse-link =
{ PLATFORM() ->
[macos] Eller vælg billedfiler
*[other] Eller vælg billedfiler
}
## Controls
pdfjs-editor-add-signature-description-label = Beskrivelse (alternativ tekst)
pdfjs-editor-add-signature-description-input =
.title = Beskrivelse (alternativ tekst)
pdfjs-editor-add-signature-description-default-when-drawing = Underskrift
pdfjs-editor-add-signature-clear-button-label = Ryd signatur
pdfjs-editor-add-signature-clear-button =
.title = Ryd signatur
pdfjs-editor-add-signature-save-checkbox = Gem signatur
pdfjs-editor-add-signature-save-warning-message = Du har nået grænsen på 5 gemte signaturer. Fjern en for at tilføje en ny.
pdfjs-editor-add-signature-image-upload-error-title = Kunne ikke uploade billede
pdfjs-editor-add-signature-image-upload-error-description = Kontroller din netværksforbindelse eller prøv med et andet billede.
pdfjs-editor-add-signature-image-no-data-error-title = Kan ikke konvertere dette billede til en signatur
pdfjs-editor-add-signature-image-no-data-error-description = Prøv at uploade et andet billede.
pdfjs-editor-add-signature-error-close-button = Luk
## Dialog buttons
pdfjs-editor-add-signature-cancel-button = Annuller
pdfjs-editor-add-signature-add-button = Tilføj
pdfjs-editor-edit-signature-update-button = Opdater
## Comment popup
pdfjs-editor-edit-comment-popup-button-label = Rediger kommentar
pdfjs-editor-edit-comment-popup-button =
.title = Rediger kommentar
pdfjs-editor-delete-comment-popup-button-label = Fjern kommentar
pdfjs-editor-delete-comment-popup-button =
.title = Fjern kommentar
pdfjs-show-comment-button =
.title = Vis kommentar
## Edit a comment dialog
# An existing comment is edited
pdfjs-editor-edit-comment-dialog-title-when-editing = Rediger kommentar
pdfjs-editor-edit-comment-dialog-save-button-when-editing = Opdater
# No existing comment
pdfjs-editor-edit-comment-dialog-title-when-adding = Tilføj kommentar
pdfjs-editor-edit-comment-dialog-save-button-when-adding = Tilføj
pdfjs-editor-edit-comment-dialog-text-input =
.placeholder = Begynd at skrive…
pdfjs-editor-edit-comment-dialog-cancel-button = Annuller
## Edit a comment button in the editor toolbar
pdfjs-editor-edit-comment-button =
.title = Rediger kommentar
pdfjs-editor-add-comment-button =
.title = Tilføj kommentar
## Main menu for adding/removing signatures
pdfjs-editor-delete-signature-button1 =
.title = Fjern gemt signatur
pdfjs-editor-delete-signature-button-label1 = Fjern gemt signatur
## Editor toolbar
pdfjs-editor-add-signature-edit-button-label = Rediger beskrivelse
## Edit signature description dialog
pdfjs-editor-edit-signature-dialog-title = Rediger beskrivelse

View File

@ -112,14 +112,6 @@ pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) }
# $mb (Number) - the PDF file size in megabytes # $mb (Number) - the PDF file size in megabytes
# $b (Number) - the PDF file size in bytes # $b (Number) - the PDF file size in bytes
pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } Bytes) pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } Bytes)
# Variables:
# $size_kb (Number) - the PDF file size in kilobytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } Bytes)
# Variables:
# $size_mb (Number) - the PDF file size in megabytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-mb = { $size_mb } MB ({ $size_b } Bytes)
pdfjs-document-properties-title = Titel: pdfjs-document-properties-title = Titel:
pdfjs-document-properties-author = Autor: pdfjs-document-properties-author = Autor:
pdfjs-document-properties-subject = Thema: pdfjs-document-properties-subject = Thema:
@ -129,10 +121,6 @@ pdfjs-document-properties-modification-date = Bearbeitungsdatum:
# Variables: # Variables:
# $dateObj (Date) - the creation/modification date and time of the PDF file # $dateObj (Date) - the creation/modification date and time of the PDF file
pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") } pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
# Variables:
# $date (Date) - the creation/modification date of the PDF file
# $time (Time) - the creation/modification time of the PDF file
pdfjs-document-properties-date-string = { $date } { $time }
pdfjs-document-properties-creator = Anwendung: pdfjs-document-properties-creator = Anwendung:
pdfjs-document-properties-producer = PDF erstellt mit: pdfjs-document-properties-producer = PDF erstellt mit:
pdfjs-document-properties-version = PDF-Version: pdfjs-document-properties-version = PDF-Version:
@ -275,10 +263,6 @@ pdfjs-rendering-error = Beim Darstellen der Seite trat ein Fehler auf.
## Annotations ## Annotations
# Variables:
# $date (Date) - the modification date of the annotation
# $time (Time) - the modification time of the annotation
pdfjs-annotation-date-string = { $date }, { $time }
# .alt: This is used as a tooltip. # .alt: This is used as a tooltip.
# Variables: # Variables:
# $type (String) - an annotation type from a list defined in the PDF spec # $type (String) - an annotation type from a list defined in the PDF spec
@ -302,9 +286,13 @@ pdfjs-web-fonts-disabled = Web-Schriftarten sind deaktiviert: Eingebettete PDF-S
pdfjs-editor-free-text-button = pdfjs-editor-free-text-button =
.title = Text .title = Text
pdfjs-editor-color-picker-free-text-input =
.title = Textfarbe ändern
pdfjs-editor-free-text-button-label = Text pdfjs-editor-free-text-button-label = Text
pdfjs-editor-ink-button = pdfjs-editor-ink-button =
.title = Zeichnen .title = Zeichnen
pdfjs-editor-color-picker-ink-input =
.title = Zeichnungsfarbe ändern
pdfjs-editor-ink-button-label = Zeichnen pdfjs-editor-ink-button-label = Zeichnen
pdfjs-editor-stamp-button = pdfjs-editor-stamp-button =
.title = Grafiken hinzufügen oder bearbeiten .title = Grafiken hinzufügen oder bearbeiten
@ -316,6 +304,33 @@ pdfjs-highlight-floating-button1 =
.title = Hervorheben .title = Hervorheben
.aria-label = Hervorheben .aria-label = Hervorheben
pdfjs-highlight-floating-button-label = Hervorheben pdfjs-highlight-floating-button-label = Hervorheben
pdfjs-comment-floating-button =
.title = Kommentieren
.aria-label = Kommentieren
pdfjs-comment-floating-button-label = Kommentieren
pdfjs-editor-comment-button =
.title = Kommentar
.aria-label = Kommentar
pdfjs-editor-comment-button-label = Kommentar
pdfjs-editor-signature-button =
.title = Unterschrift hinzufügen
pdfjs-editor-signature-button-label = Unterschrift hinzufügen
## Default editor aria labels
# “Highlight” is a noun, the string is used on the editor for highlights.
pdfjs-editor-highlight-editor =
.aria-label = Hervorhebungs-Editor
# “Drawing” is a noun, the string is used on the editor for drawings.
pdfjs-editor-ink-editor =
.aria-label = Zeichnungseditor
# Used when a signature editor is selected/hovered.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-signature-editor1 =
.aria-description = Unterschrifts-Editor: { $description }
pdfjs-editor-stamp-editor =
.aria-label = Grafik-Editor
## Remove button for the various kind of editor. ## Remove button for the various kind of editor.
@ -327,6 +342,8 @@ pdfjs-editor-remove-stamp-button =
.title = Grafik entfernen .title = Grafik entfernen
pdfjs-editor-remove-highlight-button = pdfjs-editor-remove-highlight-button =
.title = Hervorhebung entfernen .title = Hervorhebung entfernen
pdfjs-editor-remove-signature-button =
.title = Unterschrift entfernen
## ##
@ -343,24 +360,41 @@ pdfjs-editor-stamp-add-image-button-label = Grafik hinzufügen
pdfjs-editor-free-highlight-thickness-input = Linienstärke pdfjs-editor-free-highlight-thickness-input = Linienstärke
pdfjs-editor-free-highlight-thickness-title = pdfjs-editor-free-highlight-thickness-title =
.title = Linienstärke beim Hervorheben anderer Elemente als Text ändern .title = Linienstärke beim Hervorheben anderer Elemente als Text ändern
pdfjs-editor-add-signature-container =
.aria-label = Signaturkontrollen und gespeicherte Signaturen
pdfjs-editor-signature-add-signature-button =
.title = Neue Unterschrift hinzufügen
pdfjs-editor-signature-add-signature-button-label = Neue Unterschrift hinzufügen
# Used on the button to use an already saved signature.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-add-saved-signature-button =
.title = Gespeicherte Signatur: { $description }
# .default-content is used as a placeholder in an empty text editor. # .default-content is used as a placeholder in an empty text editor.
pdfjs-free-text2 = pdfjs-free-text2 =
.aria-label = Texteditor .aria-label = Texteditor
.default-content = Schreiben beginnen… .default-content = Schreiben beginnen…
pdfjs-free-text = # Used to show how many comments are present in the pdf file.
.aria-label = Texteditor # Variables:
pdfjs-free-text-default-content = Schreiben beginnen… # $count (Number) - the number of comments.
pdfjs-ink = pdfjs-editor-comments-sidebar-title =
.aria-label = Zeichnungseditor { $count ->
pdfjs-ink-canvas = [one] Kommentar
.aria-label = Vom Benutzer erstelltes Bild *[other] Kommentare
}
pdfjs-editor-comments-sidebar-close-button =
.title = Sidebar schließen
.aria-label = Sidebar schließen
pdfjs-editor-comments-sidebar-close-button-label = Sidebar schließen
# Instructional copy to add a comment by selecting text or an annotations.
pdfjs-editor-comments-sidebar-no-comments1 = Haben Sie etwas Bemerkenswertes entdeckt? Heben Sie es hervor und hinterlassen Sie einen Kommentar.
pdfjs-editor-comments-sidebar-no-comments-link = Weitere Informationen
## Alt-text dialog ## Alt-text dialog
pdfjs-editor-alt-text-button-label = Alternativ-Text pdfjs-editor-alt-text-button-label = Alternativ-Text
pdfjs-editor-alt-text-edit-button = pdfjs-editor-alt-text-edit-button =
.aria-label = Alternativ-Text bearbeiten .aria-label = Alternativ-Text bearbeiten
pdfjs-editor-alt-text-edit-button-label = Alternativ-Text bearbeiten
pdfjs-editor-alt-text-dialog-label = Option wählen pdfjs-editor-alt-text-dialog-label = Option wählen
pdfjs-editor-alt-text-dialog-description = Alt-Text (Alternativtext) hilft, wenn Personen die Grafik nicht sehen können oder wenn sie nicht geladen wird. pdfjs-editor-alt-text-dialog-description = Alt-Text (Alternativtext) hilft, wenn Personen die Grafik nicht sehen können oder wenn sie nicht geladen wird.
pdfjs-editor-alt-text-add-description-label = Beschreibung hinzufügen pdfjs-editor-alt-text-add-description-label = Beschreibung hinzufügen
@ -380,14 +414,6 @@ pdfjs-editor-alt-text-button =
## Editor resizers ## Editor resizers
## This is used in an aria label to help to understand the role of the resizer. ## This is used in an aria label to help to understand the role of the resizer.
pdfjs-editor-resizer-label-top-left = Linke obere Ecke - Größe ändern
pdfjs-editor-resizer-label-top-middle = Oben mittig - Größe ändern
pdfjs-editor-resizer-label-top-right = Rechts oben - Größe ändern
pdfjs-editor-resizer-label-middle-right = Mitte rechts - Größe ändern
pdfjs-editor-resizer-label-bottom-right = Rechte untere Ecke - Größe ändern
pdfjs-editor-resizer-label-bottom-middle = Unten mittig - Größe ändern
pdfjs-editor-resizer-label-bottom-left = Linke untere Ecke - Größe ändern
pdfjs-editor-resizer-label-middle-left = Mitte links - Größe ändern
pdfjs-editor-resizer-top-left = pdfjs-editor-resizer-top-left =
.aria-label = Linke obere Ecke - Größe ändern .aria-label = Linke obere Ecke - Größe ändern
pdfjs-editor-resizer-top-middle = pdfjs-editor-resizer-top-middle =
@ -453,7 +479,6 @@ pdfjs-editor-new-alt-text-error-close-button = Schließen
# Variables: # Variables:
# $totalSize (Number) - the total size (in MB) of the AI model. # $totalSize (Number) - the total size (in MB) of the AI model.
# $downloadedSize (Number) - the downloaded size (in MB) of the AI model. # $downloadedSize (Number) - the downloaded size (in MB) of the AI model.
# $percent (Number) - the percentage of the downloaded size.
pdfjs-editor-new-alt-text-ai-model-downloading-progress = Alternativ-Text-KI-Modell wird heruntergeladen ({ $downloadedSize } von { $totalSize } MB) pdfjs-editor-new-alt-text-ai-model-downloading-progress = Alternativ-Text-KI-Modell wird heruntergeladen ({ $downloadedSize } von { $totalSize } MB)
.aria-valuetext = Alternativ-Text-KI-Modell wird heruntergeladen ({ $downloadedSize } von { $totalSize } MB) .aria-valuetext = Alternativ-Text-KI-Modell wird heruntergeladen ({ $downloadedSize } von { $totalSize } MB)
# This is a button that users can click to edit the alt text they have already added. # This is a button that users can click to edit the alt text they have already added.
@ -493,3 +518,133 @@ pdfjs-editor-alt-text-settings-editor-title = Alternativ-Texteditor
pdfjs-editor-alt-text-settings-show-dialog-button-label = Alternativ-Texteditor beim Hinzufügen einer Grafik anzeigen pdfjs-editor-alt-text-settings-show-dialog-button-label = Alternativ-Texteditor beim Hinzufügen einer Grafik anzeigen
pdfjs-editor-alt-text-settings-show-dialog-description = Hilft Ihnen, sicherzustellen, dass alle Ihre Grafiken Alternativ-Text haben. pdfjs-editor-alt-text-settings-show-dialog-description = Hilft Ihnen, sicherzustellen, dass alle Ihre Grafiken Alternativ-Text haben.
pdfjs-editor-alt-text-settings-close-button = Schließen pdfjs-editor-alt-text-settings-close-button = Schließen
## Accessibility labels (announced by screen readers) for objects added to the editor.
pdfjs-editor-highlight-added-alert = Hervorhebung hinzugefügt
pdfjs-editor-freetext-added-alert = Text hinzugefügt
pdfjs-editor-ink-added-alert = Zeichnung hinzugefügt
pdfjs-editor-stamp-added-alert = Bild hinzugefügt
pdfjs-editor-signature-added-alert = Signatur hinzugefügt
## "Annotations removed" bar
pdfjs-editor-undo-bar-message-highlight = Hervorhebung entfernt
pdfjs-editor-undo-bar-message-freetext = Text entfernt
pdfjs-editor-undo-bar-message-ink = Zeichnung entfernt
pdfjs-editor-undo-bar-message-stamp = Grafik entfernt
pdfjs-editor-undo-bar-message-signature = Unterschrift entfernt
# Variables:
# $count (Number) - the number of removed annotations.
pdfjs-editor-undo-bar-message-multiple =
{ $count ->
[one] { $count } Anmerkung entfernt
*[other] { $count } Anmerkungen entfernt
}
pdfjs-editor-undo-bar-undo-button =
.title = Rückgängig
pdfjs-editor-undo-bar-undo-button-label = Rückgängig
pdfjs-editor-undo-bar-close-button =
.title = Schließen
pdfjs-editor-undo-bar-close-button-label = Schließen
## Add a signature dialog
pdfjs-editor-add-signature-dialog-label = Dieses Modal ermöglicht es dem Benutzer, eine Unterschrift zu erstellen, um sie zu einem PDF-Dokument hinzuzufügen. Der Benutzer kann den Namen bearbeiten (der auch als Alt-Text dient) und optional die Unterschrift zur wiederholten Verwendung speichern.
pdfjs-editor-add-signature-dialog-title = Unterschrift hinzufügen
## Tab names
# Type is a verb (you can type your name as signature)
pdfjs-editor-add-signature-type-button = Eintippen
.title = Eintippen
# Draw is a verb (you can draw your signature)
pdfjs-editor-add-signature-draw-button = Zeichnen
.title = Zeichnen
pdfjs-editor-add-signature-image-button = Grafik
.title = Grafik
## Tab panels
pdfjs-editor-add-signature-type-input =
.aria-label = Tippen Sie Ihre Unterschrift ein
.placeholder = Tippen Sie Ihre Unterschrift ein
pdfjs-editor-add-signature-draw-placeholder = Ihre Unterschrift zeichnen
pdfjs-editor-add-signature-draw-thickness-range-label = Linienstärke
# Variables:
# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.
pdfjs-editor-add-signature-draw-thickness-range =
.title = Zeichnungsstärke: { $thickness }
pdfjs-editor-add-signature-image-placeholder = Datei zum Hochladen hierher ziehen
pdfjs-editor-add-signature-image-browse-link =
{ PLATFORM() ->
[macos] Oder Grafikdateien wählen
*[other] Oder Bilddateien durchsuchen
}
## Controls
pdfjs-editor-add-signature-description-label = Beschreibung (alternativer Text)
pdfjs-editor-add-signature-description-input =
.title = Beschreibung (alternativer Text)
pdfjs-editor-add-signature-description-default-when-drawing = Unterschrift
pdfjs-editor-add-signature-clear-button-label = Unterschrift löschen
pdfjs-editor-add-signature-clear-button =
.title = Unterschrift löschen
pdfjs-editor-add-signature-save-checkbox = Unterschrift speichern
pdfjs-editor-add-signature-save-warning-message = Sie haben die Grenze von 5 gespeicherten Unterschriften erreicht. Entfernen Sie eine, um weitere zu speichern.
pdfjs-editor-add-signature-image-upload-error-title = Grafik konnte nicht hochgeladen werden
pdfjs-editor-add-signature-image-upload-error-description = Überprüfen Sie Ihre Netzwerkverbindung, oder versuchen Sie es mit einer anderen Grafik.
pdfjs-editor-add-signature-image-no-data-error-title = Kann Grafik nicht in eine Signatur umwandeln
pdfjs-editor-add-signature-image-no-data-error-description = Bitte versuchen Sie, eine andere Grafik hochzuladen.
pdfjs-editor-add-signature-error-close-button = Schließen
## Dialog buttons
pdfjs-editor-add-signature-cancel-button = Abbrechen
pdfjs-editor-add-signature-add-button = Hinzufügen
pdfjs-editor-edit-signature-update-button = Aktualisieren
## Comment popup
pdfjs-editor-edit-comment-popup-button-label = Kommentar bearbeiten
pdfjs-editor-edit-comment-popup-button =
.title = Kommentar bearbeiten
pdfjs-editor-delete-comment-popup-button-label = Kommentar entfernen
pdfjs-editor-delete-comment-popup-button =
.title = Kommentar entfernen
pdfjs-show-comment-button =
.title = Kommentar anzeigen
## Edit a comment dialog
# An existing comment is edited
pdfjs-editor-edit-comment-dialog-title-when-editing = Kommentar bearbeiten
pdfjs-editor-edit-comment-dialog-save-button-when-editing = Aktualisieren
# No existing comment
pdfjs-editor-edit-comment-dialog-title-when-adding = Kommentar hinzufügen
pdfjs-editor-edit-comment-dialog-save-button-when-adding = Hinzufügen
pdfjs-editor-edit-comment-dialog-text-input =
.placeholder = Schreiben beginnen…
pdfjs-editor-edit-comment-dialog-cancel-button = Abbrechen
## Edit a comment button in the editor toolbar
pdfjs-editor-edit-comment-button =
.title = Kommentar bearbeiten
pdfjs-editor-add-comment-button =
.title = Kommentar hinzufügen
## Main menu for adding/removing signatures
pdfjs-editor-delete-signature-button1 =
.title = Gespeicherte Signatur entfernen
pdfjs-editor-delete-signature-button-label1 = Gespeicherte Signatur entfernen
## Editor toolbar
pdfjs-editor-add-signature-edit-button-label = Beschreibung bearbeiten
## Edit signature description dialog
pdfjs-editor-edit-signature-dialog-title = Beschreibung bearbeiten

View File

@ -112,14 +112,6 @@ pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) }
# $mb (Number) - the PDF file size in megabytes # $mb (Number) - the PDF file size in megabytes
# $b (Number) - the PDF file size in bytes # $b (Number) - the PDF file size in bytes
pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bajtow) pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bajtow)
# Variables:
# $size_kb (Number) - the PDF file size in kilobytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bajtow)
# Variables:
# $size_mb (Number) - the PDF file size in megabytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-mb = { $size_mb } MB ({ $size_b } bajtow)
pdfjs-document-properties-title = Titel: pdfjs-document-properties-title = Titel:
pdfjs-document-properties-author = Awtor: pdfjs-document-properties-author = Awtor:
pdfjs-document-properties-subject = Tema: pdfjs-document-properties-subject = Tema:
@ -129,10 +121,6 @@ pdfjs-document-properties-modification-date = Datum změny:
# Variables: # Variables:
# $dateObj (Date) - the creation/modification date and time of the PDF file # $dateObj (Date) - the creation/modification date and time of the PDF file
pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") } pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
# Variables:
# $date (Date) - the creation/modification date of the PDF file
# $time (Time) - the creation/modification time of the PDF file
pdfjs-document-properties-date-string = { $date }, { $time }
pdfjs-document-properties-creator = Awtor: pdfjs-document-properties-creator = Awtor:
pdfjs-document-properties-producer = PDF-gótowaŕ: pdfjs-document-properties-producer = PDF-gótowaŕ:
pdfjs-document-properties-version = PDF-wersija: pdfjs-document-properties-version = PDF-wersija:
@ -279,10 +267,6 @@ pdfjs-rendering-error = Pśi zwobraznjanju boka jo zmólka nastała.
## Annotations ## Annotations
# Variables:
# $date (Date) - the modification date of the annotation
# $time (Time) - the modification time of the annotation
pdfjs-annotation-date-string = { $date }, { $time }
# .alt: This is used as a tooltip. # .alt: This is used as a tooltip.
# Variables: # Variables:
# $type (String) - an annotation type from a list defined in the PDF spec # $type (String) - an annotation type from a list defined in the PDF spec
@ -306,9 +290,13 @@ pdfjs-web-fonts-disabled = Webpisma su znjemóžnjone: njejo móžno, zasajźone
pdfjs-editor-free-text-button = pdfjs-editor-free-text-button =
.title = Tekst .title = Tekst
pdfjs-editor-color-picker-free-text-input =
.title = Tekstowu barwu změniś
pdfjs-editor-free-text-button-label = Tekst pdfjs-editor-free-text-button-label = Tekst
pdfjs-editor-ink-button = pdfjs-editor-ink-button =
.title = Kresliś .title = Kresliś
pdfjs-editor-color-picker-ink-input =
.title = Kresleńsku barwu změniś
pdfjs-editor-ink-button-label = Kresliś pdfjs-editor-ink-button-label = Kresliś
pdfjs-editor-stamp-button = pdfjs-editor-stamp-button =
.title = Wobraze pśidaś abo wobźěłaś .title = Wobraze pśidaś abo wobźěłaś
@ -320,6 +308,33 @@ pdfjs-highlight-floating-button1 =
.title = Wuzwignuś .title = Wuzwignuś
.aria-label = Wuzwignuś .aria-label = Wuzwignuś
pdfjs-highlight-floating-button-label = Wuzwignuś pdfjs-highlight-floating-button-label = Wuzwignuś
pdfjs-comment-floating-button =
.title = Komentěrowaś
.aria-label = Komentěrowaś
pdfjs-comment-floating-button-label = Komentěrowaś
pdfjs-editor-comment-button =
.title = Komentěrowaś
.aria-label = Komentěrowaś
pdfjs-editor-comment-button-label = Komentar
pdfjs-editor-signature-button =
.title = Signaturu pśidaś
pdfjs-editor-signature-button-label = Signaturu pśidaś
## Default editor aria labels
# “Highlight” is a noun, the string is used on the editor for highlights.
pdfjs-editor-highlight-editor =
.aria-label = Editor wuzwignjenja
# “Drawing” is a noun, the string is used on the editor for drawings.
pdfjs-editor-ink-editor =
.aria-label = Kresleński editor
# Used when a signature editor is selected/hovered.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-signature-editor1 =
.aria-description = Signaturowy editor: { $description }
pdfjs-editor-stamp-editor =
.aria-label = Wobrazowy editor
## Remove button for the various kind of editor. ## Remove button for the various kind of editor.
@ -331,6 +346,8 @@ pdfjs-editor-remove-stamp-button =
.title = Wobraz wótwónoźeś .title = Wobraz wótwónoźeś
pdfjs-editor-remove-highlight-button = pdfjs-editor-remove-highlight-button =
.title = Wuzwignjenje wótpóraś .title = Wuzwignjenje wótpóraś
pdfjs-editor-remove-signature-button =
.title = Signaturu wótwónoźeś
## ##
@ -347,24 +364,43 @@ pdfjs-editor-stamp-add-image-button-label = Wobraz pśidaś
pdfjs-editor-free-highlight-thickness-input = Tłustosć pdfjs-editor-free-highlight-thickness-input = Tłustosć
pdfjs-editor-free-highlight-thickness-title = pdfjs-editor-free-highlight-thickness-title =
.title = Tłustosć změniś, gaž se zapiski wuzwiguju, kótarež tekst njejsu .title = Tłustosć změniś, gaž se zapiski wuzwiguju, kótarež tekst njejsu
pdfjs-editor-add-signature-container =
.aria-label = Wóźeńske elementy signaturow a skłaźone signatury
pdfjs-editor-signature-add-signature-button =
.title = Nowu signaturu pśidaś
pdfjs-editor-signature-add-signature-button-label = Nowu signaturu pśidaś
# Used on the button to use an already saved signature.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-add-saved-signature-button =
.title = Skłaźona signatura: { $description }
# .default-content is used as a placeholder in an empty text editor. # .default-content is used as a placeholder in an empty text editor.
pdfjs-free-text2 = pdfjs-free-text2 =
.aria-label = Tekstowy editor .aria-label = Tekstowy editor
.default-content = Zachopśo pisaś … .default-content = Zachopśo pisaś …
pdfjs-free-text = # Used to show how many comments are present in the pdf file.
.aria-label = Tekstowy editor # Variables:
pdfjs-free-text-default-content = Zachopśo pisaś… # $count (Number) - the number of comments.
pdfjs-ink = pdfjs-editor-comments-sidebar-title =
.aria-label = Kresleński editor { $count ->
pdfjs-ink-canvas = [one] { $count } komentar
.aria-label = Wobraz napórany wót wužywarja [two] { $count } komentara
[few] { $count } komentary
*[other] { $count } komentarow
}
pdfjs-editor-comments-sidebar-close-button =
.title = Bócnicu zacyniś
.aria-label = Bócnicu zacyniś
pdfjs-editor-comments-sidebar-close-button-label = Bócnicu zacyniś
# Instructional copy to add a comment by selecting text or an annotations.
pdfjs-editor-comments-sidebar-no-comments1 = Wiźiśo něco wobspomnjeśa gódnego? Wuzwigniśo to a zawóstajśo komentar.
pdfjs-editor-comments-sidebar-no-comments-link = Dalšne informacije
## Alt-text dialog ## Alt-text dialog
pdfjs-editor-alt-text-button-label = Alternatiwny tekst pdfjs-editor-alt-text-button-label = Alternatiwny tekst
pdfjs-editor-alt-text-edit-button = pdfjs-editor-alt-text-edit-button =
.aria-label = Alternatiwny tekst wobźěłaś .aria-label = Alternatiwny tekst wobźěłaś
pdfjs-editor-alt-text-edit-button-label = Alternatiwny tekst wobźěłaś
pdfjs-editor-alt-text-dialog-label = Nastajenje wubraś pdfjs-editor-alt-text-dialog-label = Nastajenje wubraś
pdfjs-editor-alt-text-dialog-description = Alternatiwny tekst pomaga, gaž luźe njamógu wobraz wiźeś abo gaž se wobraz njezacytajo. pdfjs-editor-alt-text-dialog-description = Alternatiwny tekst pomaga, gaž luźe njamógu wobraz wiźeś abo gaž se wobraz njezacytajo.
pdfjs-editor-alt-text-add-description-label = Wopisanje pśidaś pdfjs-editor-alt-text-add-description-label = Wopisanje pśidaś
@ -384,14 +420,6 @@ pdfjs-editor-alt-text-button =
## Editor resizers ## Editor resizers
## This is used in an aria label to help to understand the role of the resizer. ## This is used in an aria label to help to understand the role of the resizer.
pdfjs-editor-resizer-label-top-left = Górjejce nalěwo wjelikosć změniś
pdfjs-editor-resizer-label-top-middle = Górjejce wesrjejź wjelikosć změniś
pdfjs-editor-resizer-label-top-right = Górjejce napšawo wjelikosć změniś
pdfjs-editor-resizer-label-middle-right = Wesrjejź napšawo wjelikosć změniś
pdfjs-editor-resizer-label-bottom-right = Dołojce napšawo wjelikosć změniś
pdfjs-editor-resizer-label-bottom-middle = Dołojce wesrjejź wjelikosć změniś
pdfjs-editor-resizer-label-bottom-left = Dołojce nalěwo wjelikosć změniś
pdfjs-editor-resizer-label-middle-left = Wesrjejź nalěwo wjelikosć změniś
pdfjs-editor-resizer-top-left = pdfjs-editor-resizer-top-left =
.aria-label = Górjejce nalěwo wjelikosć změniś .aria-label = Górjejce nalěwo wjelikosć změniś
pdfjs-editor-resizer-top-middle = pdfjs-editor-resizer-top-middle =
@ -457,7 +485,6 @@ pdfjs-editor-new-alt-text-error-close-button = Zacyniś
# Variables: # Variables:
# $totalSize (Number) - the total size (in MB) of the AI model. # $totalSize (Number) - the total size (in MB) of the AI model.
# $downloadedSize (Number) - the downloaded size (in MB) of the AI model. # $downloadedSize (Number) - the downloaded size (in MB) of the AI model.
# $percent (Number) - the percentage of the downloaded size.
pdfjs-editor-new-alt-text-ai-model-downloading-progress = Model KI za alternatiwny tekst se ześěgujo ({ $downloadedSize } z { $totalSize } MB) pdfjs-editor-new-alt-text-ai-model-downloading-progress = Model KI za alternatiwny tekst se ześěgujo ({ $downloadedSize } z { $totalSize } MB)
.aria-valuetext = Model KI za alternatiwny tekst se ześěgujo ({ $downloadedSize } z { $totalSize } MB) .aria-valuetext = Model KI za alternatiwny tekst se ześěgujo ({ $downloadedSize } z { $totalSize } MB)
# This is a button that users can click to edit the alt text they have already added. # This is a button that users can click to edit the alt text they have already added.
@ -497,3 +524,135 @@ pdfjs-editor-alt-text-settings-editor-title = Editor za alternatiwny tekst
pdfjs-editor-alt-text-settings-show-dialog-button-label = Editor alternatiwnego teksta ned pokazaś, gaž se wobraz pśidawa pdfjs-editor-alt-text-settings-show-dialog-button-label = Editor alternatiwnego teksta ned pokazaś, gaž se wobraz pśidawa
pdfjs-editor-alt-text-settings-show-dialog-description = Pomaga, wam wšym swójim wobrazam alternatiwny tekst pśidaś. pdfjs-editor-alt-text-settings-show-dialog-description = Pomaga, wam wšym swójim wobrazam alternatiwny tekst pśidaś.
pdfjs-editor-alt-text-settings-close-button = Zacyniś pdfjs-editor-alt-text-settings-close-button = Zacyniś
## Accessibility labels (announced by screen readers) for objects added to the editor.
pdfjs-editor-highlight-added-alert = Wuzwignjenje pśidane
pdfjs-editor-freetext-added-alert = Tekst pśidany
pdfjs-editor-ink-added-alert = Kreslanka pśidana
pdfjs-editor-stamp-added-alert = Wobraz pśidany
pdfjs-editor-signature-added-alert = Signatura pśidana
## "Annotations removed" bar
pdfjs-editor-undo-bar-message-highlight = Wótwónoźone wuzwignuś
pdfjs-editor-undo-bar-message-freetext = Tekst jo se wótwónoźeł
pdfjs-editor-undo-bar-message-ink = Kreslanka jo se wótwónoźeła
pdfjs-editor-undo-bar-message-stamp = Wobraz jo se wótwónoźeł
pdfjs-editor-undo-bar-message-signature = Signatura jo se wótwónoźeła
# Variables:
# $count (Number) - the number of removed annotations.
pdfjs-editor-undo-bar-message-multiple =
{ $count ->
[one] { $count } pśipisk jo se wótwónoźeł
[two] { $count } pśipiska stej se wótwónoźełej
[few] { $count } pśipiski su se wótwónoźeli
*[other] { $count } pśipiskow jo se wótwónoźeło
}
pdfjs-editor-undo-bar-undo-button =
.title = Anulěrowaś
pdfjs-editor-undo-bar-undo-button-label = Anulěrowaś
pdfjs-editor-undo-bar-close-button =
.title = Zacyniś
pdfjs-editor-undo-bar-close-button-label = Zacyniś
## Add a signature dialog
pdfjs-editor-add-signature-dialog-label = Toś ten modalny dialog wužywarjeju zmóžnja, signaturu napóraś, aby PDF-dokument pśidał. Wužywaŕ móžo mě wobźěłaś (kótarež teke ako alternatiwny tekst słužy) a pó žycenju signaturu za wóspjetne wužywanje składowaś.
pdfjs-editor-add-signature-dialog-title = Signaturu pśidaś
## Tab names
# Type is a verb (you can type your name as signature)
pdfjs-editor-add-signature-type-button = Typ
.title = Typ
# Draw is a verb (you can draw your signature)
pdfjs-editor-add-signature-draw-button = Kresliś
.title = Kresliś
pdfjs-editor-add-signature-image-button = Wobraz
.title = Wobraz
## Tab panels
pdfjs-editor-add-signature-type-input =
.aria-label = Zapódajśo swóju signaturu
.placeholder = Zapódajśo swóju signaturu
pdfjs-editor-add-signature-draw-placeholder = Kresliśo swóju signaturu
pdfjs-editor-add-signature-draw-thickness-range-label = Tłustosć
# Variables:
# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.
pdfjs-editor-add-signature-draw-thickness-range =
.title = Tłustosć kreslanki: { $thickness }
pdfjs-editor-add-signature-image-placeholder = Śěgniśo dataju sem, aby ju nagrał
pdfjs-editor-add-signature-image-browse-link =
{ PLATFORM() ->
[macos] Abo wubjeŕśo wobrazowe dataje
*[other] Abo pśepytajśo wobrazowe dataje
}
## Controls
pdfjs-editor-add-signature-description-label = Wopisanje (alternatiwny tekst)
pdfjs-editor-add-signature-description-input =
.title = Wopisanje (alternatiwny tekst)
pdfjs-editor-add-signature-description-default-when-drawing = Signatura
pdfjs-editor-add-signature-clear-button-label = Signaturu lašowaś
pdfjs-editor-add-signature-clear-button =
.title = Signaturu lašowaś
pdfjs-editor-add-signature-save-checkbox = Signaturu składowaś
pdfjs-editor-add-signature-save-warning-message = Sćo dojśpił limit 5 skłaźonych signaturow. Wótwónoźćo jadnu, aby wěcej składował.
pdfjs-editor-add-signature-image-upload-error-title = Wobraz njedajo se nagraś
pdfjs-editor-add-signature-image-upload-error-description = Pśeglědajśo swój seśowy zwisk abo wopytajśo drugi wobraz.
pdfjs-editor-add-signature-image-no-data-error-title = Toś ten wobraz njedajo se do signatury pśetwóriś
pdfjs-editor-add-signature-image-no-data-error-description = Wopytajśo pšosym drugi wobraz nagraś.
pdfjs-editor-add-signature-error-close-button = Zacyniś
## Dialog buttons
pdfjs-editor-add-signature-cancel-button = Pśetergnuś
pdfjs-editor-add-signature-add-button = Pśidaś
pdfjs-editor-edit-signature-update-button = Aktualizěrowaś
## Comment popup
pdfjs-editor-edit-comment-popup-button-label = Komentar wobźěłaś
pdfjs-editor-edit-comment-popup-button =
.title = Komentar wobźěłaś
pdfjs-editor-delete-comment-popup-button-label = Komentar wótwónoźeś
pdfjs-editor-delete-comment-popup-button =
.title = Komentar wótwónoźeś
pdfjs-show-comment-button =
.title = Komentar pokazaś
## Edit a comment dialog
# An existing comment is edited
pdfjs-editor-edit-comment-dialog-title-when-editing = Komentar wobźěłaś
pdfjs-editor-edit-comment-dialog-save-button-when-editing = Aktualizěrowaś
# No existing comment
pdfjs-editor-edit-comment-dialog-title-when-adding = Komentar pśidaś
pdfjs-editor-edit-comment-dialog-save-button-when-adding = Pśidaś
pdfjs-editor-edit-comment-dialog-text-input =
.placeholder = Zachopśo pisaś…
pdfjs-editor-edit-comment-dialog-cancel-button = Pśetergnuś
## Edit a comment button in the editor toolbar
pdfjs-editor-edit-comment-button =
.title = Komentar wobźěłaś
pdfjs-editor-add-comment-button =
.title = Komentar pśidaś
## Main menu for adding/removing signatures
pdfjs-editor-delete-signature-button1 =
.title = Skłaźonu signaturu wótwónoźeś
pdfjs-editor-delete-signature-button-label1 = Skłaźonu signaturu wótwónoźeś
## Editor toolbar
pdfjs-editor-add-signature-edit-button-label = Wopisanje wobźěłaś
## Edit signature description dialog
pdfjs-editor-edit-signature-dialog-title = Wopisanje wobźěłaś

View File

@ -88,7 +88,7 @@ pdfjs-scroll-wrapped-button =
.title = Χρήση κυκλικής κύλισης .title = Χρήση κυκλικής κύλισης
pdfjs-scroll-wrapped-button-label = Κυκλική κύλιση pdfjs-scroll-wrapped-button-label = Κυκλική κύλιση
pdfjs-spread-none-button = pdfjs-spread-none-button =
.title = Να μη γίνει σύνδεση επεκτάσεων σελίδων .title = Να μην γίνει σύνδεση των επεκτάσεων σελίδων
pdfjs-spread-none-button-label = Χωρίς επεκτάσεις pdfjs-spread-none-button-label = Χωρίς επεκτάσεις
pdfjs-spread-odd-button = pdfjs-spread-odd-button =
.title = Σύνδεση επεκτάσεων σελίδων ξεκινώντας από τις μονές σελίδες .title = Σύνδεση επεκτάσεων σελίδων ξεκινώντας από τις μονές σελίδες
@ -112,14 +112,6 @@ pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) }
# $mb (Number) - the PDF file size in megabytes # $mb (Number) - the PDF file size in megabytes
# $b (Number) - the PDF file size in bytes # $b (Number) - the PDF file size in bytes
pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes) pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes)
# Variables:
# $size_kb (Number) - the PDF file size in kilobytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bytes)
# Variables:
# $size_mb (Number) - the PDF file size in megabytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-mb = { $size_mb } MB ({ $size_b } bytes)
pdfjs-document-properties-title = Τίτλος: pdfjs-document-properties-title = Τίτλος:
pdfjs-document-properties-author = Συγγραφέας: pdfjs-document-properties-author = Συγγραφέας:
pdfjs-document-properties-subject = Θέμα: pdfjs-document-properties-subject = Θέμα:
@ -129,10 +121,6 @@ pdfjs-document-properties-modification-date = Ημερομηνία τροποπ
# Variables: # Variables:
# $dateObj (Date) - the creation/modification date and time of the PDF file # $dateObj (Date) - the creation/modification date and time of the PDF file
pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") } pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
# Variables:
# $date (Date) - the creation/modification date of the PDF file
# $time (Time) - the creation/modification time of the PDF file
pdfjs-document-properties-date-string = { $date }, { $time }
pdfjs-document-properties-creator = Δημιουργός: pdfjs-document-properties-creator = Δημιουργός:
pdfjs-document-properties-producer = Παραγωγός PDF: pdfjs-document-properties-producer = Παραγωγός PDF:
pdfjs-document-properties-version = Έκδοση PDF: pdfjs-document-properties-version = Έκδοση PDF:
@ -270,15 +258,11 @@ pdfjs-page-landmark =
pdfjs-loading-error = Προέκυψε σφάλμα κατά τη φόρτωση του PDF. pdfjs-loading-error = Προέκυψε σφάλμα κατά τη φόρτωση του PDF.
pdfjs-invalid-file-error = Μη έγκυρο ή κατεστραμμένο αρχείο PDF. pdfjs-invalid-file-error = Μη έγκυρο ή κατεστραμμένο αρχείο PDF.
pdfjs-missing-file-error = Λείπει αρχείο PDF. pdfjs-missing-file-error = Λείπει αρχείο PDF.
pdfjs-unexpected-response-error = Μη αναμενόμενη απόκριση από το διακομιστή. pdfjs-unexpected-response-error = Απρόσμενη απάντηση διακομιστή.
pdfjs-rendering-error = Προέκυψε σφάλμα κατά την εμφάνιση της σελίδας. pdfjs-rendering-error = Προέκυψε σφάλμα κατά την εμφάνιση της σελίδας.
## Annotations ## Annotations
# Variables:
# $date (Date) - the modification date of the annotation
# $time (Time) - the modification time of the annotation
pdfjs-annotation-date-string = { $date }, { $time }
# .alt: This is used as a tooltip. # .alt: This is used as a tooltip.
# Variables: # Variables:
# $type (String) - an annotation type from a list defined in the PDF spec # $type (String) - an annotation type from a list defined in the PDF spec
@ -293,7 +277,7 @@ pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: "short", tim
## Password ## Password
pdfjs-password-label = Εισαγάγετε τον κωδικό πρόσβασης για να ανοίξετε αυτό το αρχείο PDF. pdfjs-password-label = Εισαγάγετε τον κωδικό πρόσβασης για να ανοίξετε αυτό το αρχείο PDF.
pdfjs-password-invalid = Μη έγκυρος κωδικός πρόσβασης. Παρακαλώ δοκιμάστε ξανά. pdfjs-password-invalid = Μη έγκυρος κωδικός πρόσβασης. Δοκιμάστε ξανά.
pdfjs-password-ok-button = OK pdfjs-password-ok-button = OK
pdfjs-password-cancel-button = Ακύρωση pdfjs-password-cancel-button = Ακύρωση
pdfjs-web-fonts-disabled = Οι γραμματοσειρές ιστού είναι ανενεργές: δεν είναι δυνατή η χρήση των ενσωματωμένων γραμματοσειρών PDF. pdfjs-web-fonts-disabled = Οι γραμματοσειρές ιστού είναι ανενεργές: δεν είναι δυνατή η χρήση των ενσωματωμένων γραμματοσειρών PDF.
@ -302,9 +286,13 @@ pdfjs-web-fonts-disabled = Οι γραμματοσειρές ιστού είνα
pdfjs-editor-free-text-button = pdfjs-editor-free-text-button =
.title = Κείμενο .title = Κείμενο
pdfjs-editor-color-picker-free-text-input =
.title = Αλλαγή χρώματος κειμένου
pdfjs-editor-free-text-button-label = Κείμενο pdfjs-editor-free-text-button-label = Κείμενο
pdfjs-editor-ink-button = pdfjs-editor-ink-button =
.title = Σχέδιο .title = Σχέδιο
pdfjs-editor-color-picker-ink-input =
.title = Αλλαγή χρώματος σχεδίου
pdfjs-editor-ink-button-label = Σχέδιο pdfjs-editor-ink-button-label = Σχέδιο
pdfjs-editor-stamp-button = pdfjs-editor-stamp-button =
.title = Προσθήκη ή επεξεργασία εικόνων .title = Προσθήκη ή επεξεργασία εικόνων
@ -316,6 +304,33 @@ pdfjs-highlight-floating-button1 =
.title = Επισήμανση .title = Επισήμανση
.aria-label = Επισήμανση .aria-label = Επισήμανση
pdfjs-highlight-floating-button-label = Επισήμανση pdfjs-highlight-floating-button-label = Επισήμανση
pdfjs-comment-floating-button =
.title = Σχόλιο
.aria-label = Σχόλιο
pdfjs-comment-floating-button-label = Σχόλιο
pdfjs-editor-comment-button =
.title = Σχόλιο
.aria-label = Σχόλιο
pdfjs-editor-comment-button-label = Σχόλιο
pdfjs-editor-signature-button =
.title = Προσθήκη υπογραφής
pdfjs-editor-signature-button-label = Προσθήκη υπογραφής
## Default editor aria labels
# “Highlight” is a noun, the string is used on the editor for highlights.
pdfjs-editor-highlight-editor =
.aria-label = Επεξεργασία επισήμανσης
# “Drawing” is a noun, the string is used on the editor for drawings.
pdfjs-editor-ink-editor =
.aria-label = Επεξεργασία σχεδίου
# Used when a signature editor is selected/hovered.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-signature-editor1 =
.aria-description = Επεξεργασία υπογραφής: { $description }
pdfjs-editor-stamp-editor =
.aria-label = Επεξεργασία εικόνας
## Remove button for the various kind of editor. ## Remove button for the various kind of editor.
@ -327,6 +342,8 @@ pdfjs-editor-remove-stamp-button =
.title = Αφαίρεση εικόνας .title = Αφαίρεση εικόνας
pdfjs-editor-remove-highlight-button = pdfjs-editor-remove-highlight-button =
.title = Αφαίρεση επισήμανσης .title = Αφαίρεση επισήμανσης
pdfjs-editor-remove-signature-button =
.title = Αφαίρεση υπογραφής
## ##
@ -343,24 +360,41 @@ pdfjs-editor-stamp-add-image-button-label = Προσθήκη εικόνας
pdfjs-editor-free-highlight-thickness-input = Πάχος pdfjs-editor-free-highlight-thickness-input = Πάχος
pdfjs-editor-free-highlight-thickness-title = pdfjs-editor-free-highlight-thickness-title =
.title = Αλλαγή πάχους κατά την επισήμανση στοιχείων εκτός κειμένου .title = Αλλαγή πάχους κατά την επισήμανση στοιχείων εκτός κειμένου
pdfjs-editor-add-signature-container =
.aria-label = Στοιχεία ελέγχου υπογραφής και αποθηκευμένες υπογραφές
pdfjs-editor-signature-add-signature-button =
.title = Προσθήκη νέας υπογραφής
pdfjs-editor-signature-add-signature-button-label = Προσθήκη νέας υπογραφής
# Used on the button to use an already saved signature.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-add-saved-signature-button =
.title = Αποθηκευμένη υπογραφή: { $description }
# .default-content is used as a placeholder in an empty text editor. # .default-content is used as a placeholder in an empty text editor.
pdfjs-free-text2 = pdfjs-free-text2 =
.aria-label = Επεξεργασία κειμένου .aria-label = Επεξεργασία κειμένου
.default-content = Ξεκινήστε να πληκτρολογείτε… .default-content = Ξεκινήστε να πληκτρολογείτε…
pdfjs-free-text = # Used to show how many comments are present in the pdf file.
.aria-label = Επεξεργασία κειμένου # Variables:
pdfjs-free-text-default-content = Ξεκινήστε να πληκτρολογείτε… # $count (Number) - the number of comments.
pdfjs-ink = pdfjs-editor-comments-sidebar-title =
.aria-label = Επεξεργασία σχεδίων { $count ->
pdfjs-ink-canvas = [one] Σχόλια
.aria-label = Εικόνα από τον χρήστη *[other] Σχόλια
}
pdfjs-editor-comments-sidebar-close-button =
.title = Κλείσιμο πλευρικής στήλης
.aria-label = Κλείσιμο πλευρικής στήλης
pdfjs-editor-comments-sidebar-close-button-label = Κλείσιμο πλευρικής στήλης
# Instructional copy to add a comment by selecting text or an annotations.
pdfjs-editor-comments-sidebar-no-comments1 = Βλέπετε κάτι αξιοσημείωτο; Επισημάνετε το και αφήστε ένα σχόλιο.
pdfjs-editor-comments-sidebar-no-comments-link = Μάθετε περισσότερα
## Alt-text dialog ## Alt-text dialog
pdfjs-editor-alt-text-button-label = Εναλλακτικό κείμενο pdfjs-editor-alt-text-button-label = Εναλλακτικό κείμενο
pdfjs-editor-alt-text-edit-button = pdfjs-editor-alt-text-edit-button =
.aria-label = Επεξεργασία εναλλακτικού κειμένου .aria-label = Επεξεργασία εναλλακτικού κειμένου
pdfjs-editor-alt-text-edit-button-label = Επεξεργασία εναλλακτικού κειμένου
pdfjs-editor-alt-text-dialog-label = Διαλέξτε μια επιλογή pdfjs-editor-alt-text-dialog-label = Διαλέξτε μια επιλογή
pdfjs-editor-alt-text-dialog-description = Το εναλλακτικό κείμενο είναι χρήσιμο όταν οι άνθρωποι δεν μπορούν να δουν την εικόνα ή όταν αυτή δεν φορτώνεται. pdfjs-editor-alt-text-dialog-description = Το εναλλακτικό κείμενο είναι χρήσιμο όταν οι άνθρωποι δεν μπορούν να δουν την εικόνα ή όταν αυτή δεν φορτώνεται.
pdfjs-editor-alt-text-add-description-label = Προσθήκη περιγραφής pdfjs-editor-alt-text-add-description-label = Προσθήκη περιγραφής
@ -380,14 +414,6 @@ pdfjs-editor-alt-text-button =
## Editor resizers ## Editor resizers
## This is used in an aria label to help to understand the role of the resizer. ## This is used in an aria label to help to understand the role of the resizer.
pdfjs-editor-resizer-label-top-left = Επάνω αριστερή γωνία — αλλαγή μεγέθους
pdfjs-editor-resizer-label-top-middle = Μέσο επάνω πλευράς — αλλαγή μεγέθους
pdfjs-editor-resizer-label-top-right = Επάνω δεξιά γωνία — αλλαγή μεγέθους
pdfjs-editor-resizer-label-middle-right = Μέσο δεξιάς πλευράς — αλλαγή μεγέθους
pdfjs-editor-resizer-label-bottom-right = Κάτω δεξιά γωνία — αλλαγή μεγέθους
pdfjs-editor-resizer-label-bottom-middle = Μέσο κάτω πλευράς — αλλαγή μεγέθους
pdfjs-editor-resizer-label-bottom-left = Κάτω αριστερή γωνία — αλλαγή μεγέθους
pdfjs-editor-resizer-label-middle-left = Μέσο αριστερής πλευράς — αλλαγή μεγέθους
pdfjs-editor-resizer-top-left = pdfjs-editor-resizer-top-left =
.aria-label = Επάνω αριστερή γωνία — αλλαγή μεγέθους .aria-label = Επάνω αριστερή γωνία — αλλαγή μεγέθους
pdfjs-editor-resizer-top-middle = pdfjs-editor-resizer-top-middle =
@ -453,9 +479,8 @@ pdfjs-editor-new-alt-text-error-close-button = Κλείσιμο
# Variables: # Variables:
# $totalSize (Number) - the total size (in MB) of the AI model. # $totalSize (Number) - the total size (in MB) of the AI model.
# $downloadedSize (Number) - the downloaded size (in MB) of the AI model. # $downloadedSize (Number) - the downloaded size (in MB) of the AI model.
# $percent (Number) - the percentage of the downloaded size. pdfjs-editor-new-alt-text-ai-model-downloading-progress = Λήψη μοντέλου ΤΝ εναλλακτικού κειμένου ({ $downloadedSize } από { $totalSize } MB)
pdfjs-editor-new-alt-text-ai-model-downloading-progress = Λήψη μοντέλου AI εναλλακτικού κειμένου ({ $downloadedSize } από { $totalSize } MB) .aria-valuetext = Λήψη μοντέλου ΤΝ εναλλακτικού κειμένου ({ $downloadedSize } από { $totalSize } MB)
.aria-valuetext = Λήψη μοντέλου AI εναλλακτικού κειμένου ({ $downloadedSize } από { $totalSize } MB)
# This is a button that users can click to edit the alt text they have already added. # This is a button that users can click to edit the alt text they have already added.
pdfjs-editor-new-alt-text-added-button = pdfjs-editor-new-alt-text-added-button =
.aria-label = Προστέθηκε εναλλακτικό κείμενο .aria-label = Προστέθηκε εναλλακτικό κείμενο
@ -484,7 +509,7 @@ pdfjs-editor-alt-text-settings-create-model-button-label = Αυτόματη δη
pdfjs-editor-alt-text-settings-create-model-description = Προτείνει περιγραφές για άτομα που δεν μπορούν να δουν την εικόνα ή όταν η εικόνα δεν φορτώνεται. pdfjs-editor-alt-text-settings-create-model-description = Προτείνει περιγραφές για άτομα που δεν μπορούν να δουν την εικόνα ή όταν η εικόνα δεν φορτώνεται.
# Variables: # Variables:
# $totalSize (Number) - the total size (in MB) of the AI model. # $totalSize (Number) - the total size (in MB) of the AI model.
pdfjs-editor-alt-text-settings-download-model-label = Μοντέλο AI εναλλακτικού κειμένου ({ $totalSize } MB) pdfjs-editor-alt-text-settings-download-model-label = Μοντέλο ΤΝ εναλλακτικού κειμένου ({ $totalSize } MB)
pdfjs-editor-alt-text-settings-ai-model-description = Εκτελείται τοπικά στη συσκευή σας, ώστε τα δεδομένα σας να παραμένουν ιδιωτικά. Απαιτείται για τη δημιουργία του αυτόματου εναλλακτικού κειμένου. pdfjs-editor-alt-text-settings-ai-model-description = Εκτελείται τοπικά στη συσκευή σας, ώστε τα δεδομένα σας να παραμένουν ιδιωτικά. Απαιτείται για τη δημιουργία του αυτόματου εναλλακτικού κειμένου.
pdfjs-editor-alt-text-settings-delete-model-button = Διαγραφή pdfjs-editor-alt-text-settings-delete-model-button = Διαγραφή
pdfjs-editor-alt-text-settings-download-model-button = Λήψη pdfjs-editor-alt-text-settings-download-model-button = Λήψη
@ -493,3 +518,133 @@ pdfjs-editor-alt-text-settings-editor-title = Επεξεργασία εναλλ
pdfjs-editor-alt-text-settings-show-dialog-button-label = Άμεση εμφάνιση της επεξεργασίας εναλλακτικού κειμένου κατά την προσθήκη εικόνας pdfjs-editor-alt-text-settings-show-dialog-button-label = Άμεση εμφάνιση της επεξεργασίας εναλλακτικού κειμένου κατά την προσθήκη εικόνας
pdfjs-editor-alt-text-settings-show-dialog-description = Σας βοηθά να βεβαιωθείτε ότι όλες οι εικόνες σας έχουν εναλλακτικό κείμενο. pdfjs-editor-alt-text-settings-show-dialog-description = Σας βοηθά να βεβαιωθείτε ότι όλες οι εικόνες σας έχουν εναλλακτικό κείμενο.
pdfjs-editor-alt-text-settings-close-button = Κλείσιμο pdfjs-editor-alt-text-settings-close-button = Κλείσιμο
## Accessibility labels (announced by screen readers) for objects added to the editor.
pdfjs-editor-highlight-added-alert = Προστέθηκε επισήμανση
pdfjs-editor-freetext-added-alert = Προστέθηκε κείμενο
pdfjs-editor-ink-added-alert = Προστέθηκε σχέδιο
pdfjs-editor-stamp-added-alert = Προστέθηκε εικόνα
pdfjs-editor-signature-added-alert = Προστέθηκε υπογραφή
## "Annotations removed" bar
pdfjs-editor-undo-bar-message-highlight = Η επισήμανση αφαιρέθηκε
pdfjs-editor-undo-bar-message-freetext = Το κείμενο αφαιρέθηκε
pdfjs-editor-undo-bar-message-ink = Το σχέδιο αφαιρέθηκε
pdfjs-editor-undo-bar-message-stamp = Η εικόνα αφαιρέθηκε
pdfjs-editor-undo-bar-message-signature = Η υπογραφή αφαιρέθηκε
# Variables:
# $count (Number) - the number of removed annotations.
pdfjs-editor-undo-bar-message-multiple =
{ $count ->
[one] Αφαιρέθηκε { $count } σχολιασμός
*[other] Αφαιρέθηκαν { $count } σχολιασμοί
}
pdfjs-editor-undo-bar-undo-button =
.title = Αναίρεση
pdfjs-editor-undo-bar-undo-button-label = Αναίρεση
pdfjs-editor-undo-bar-close-button =
.title = Κλείσιμο
pdfjs-editor-undo-bar-close-button-label = Κλείσιμο
## Add a signature dialog
pdfjs-editor-add-signature-dialog-label = Αυτό το παράθυρο διαλόγου επιτρέπει στον χρήστη να δημιουργήσει μια υπογραφή για να την προσθέσει σε ένα έγγραφο PDF. Ο χρήστης μπορεί να επεξεργαστεί το όνομα (το οποίο χρησιμεύει και ως εναλλακτικό κείμενο) και, προαιρετικά, να αποθηκεύσει την υπογραφή για επαναλαμβανόμενη χρήση.
pdfjs-editor-add-signature-dialog-title = Προσθήκη υπογραφής
## Tab names
# Type is a verb (you can type your name as signature)
pdfjs-editor-add-signature-type-button = Πληκτρολόγηση
.title = Πληκτρολόγηση
# Draw is a verb (you can draw your signature)
pdfjs-editor-add-signature-draw-button = Σχέδιο
.title = Σχέδιο
pdfjs-editor-add-signature-image-button = Εικόνα
.title = Εικόνα
## Tab panels
pdfjs-editor-add-signature-type-input =
.aria-label = Πληκτρολογήστε την υπογραφή σας
.placeholder = Πληκτρολογήστε την υπογραφή σας
pdfjs-editor-add-signature-draw-placeholder = Σχεδιάστε την υπογραφή σας
pdfjs-editor-add-signature-draw-thickness-range-label = Πάχος
# Variables:
# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.
pdfjs-editor-add-signature-draw-thickness-range =
.title = Πάχος σχεδίου: { $thickness }
pdfjs-editor-add-signature-image-placeholder = Σύρετε ένα αρχείο εδώ για μεταφόρτωση
pdfjs-editor-add-signature-image-browse-link =
{ PLATFORM() ->
[macos] Ή επιλέξτε αρχεία εικόνας
*[other] Ή περιηγηθείτε σε αρχεία εικόνας
}
## Controls
pdfjs-editor-add-signature-description-label = Περιγραφή (εναλλακτικό κείμενο)
pdfjs-editor-add-signature-description-input =
.title = Περιγραφή (εναλλακτικό κείμενο)
pdfjs-editor-add-signature-description-default-when-drawing = Υπογραφή
pdfjs-editor-add-signature-clear-button-label = Απαλοιφή υπογραφής
pdfjs-editor-add-signature-clear-button =
.title = Απαλοιφή υπογραφής
pdfjs-editor-add-signature-save-checkbox = Αποθήκευση υπογραφής
pdfjs-editor-add-signature-save-warning-message = Έχετε φτάσει το όριο των 5 αποθηκευμένων υπογραφών. Αφαιρέστε μία για να αποθηκεύσετε περισσότερες.
pdfjs-editor-add-signature-image-upload-error-title = Δεν ήταν δυνατή η μεταφόρτωση της εικόνας
pdfjs-editor-add-signature-image-upload-error-description = Ελέγξτε τη σύνδεση δικτύου σας ή δοκιμάστε μια άλλη εικόνα.
pdfjs-editor-add-signature-image-no-data-error-title = Δεν είναι δυνατή η μετατροπή αυτής της εικόνας σε υπογραφή
pdfjs-editor-add-signature-image-no-data-error-description = Δοκιμάστε να μεταφορτώσετε μια άλλη εικόνα.
pdfjs-editor-add-signature-error-close-button = Κλείσιμο
## Dialog buttons
pdfjs-editor-add-signature-cancel-button = Ακύρωση
pdfjs-editor-add-signature-add-button = Προσθήκη
pdfjs-editor-edit-signature-update-button = Ενημέρωση
## Comment popup
pdfjs-editor-edit-comment-popup-button-label = Επεξεργασία σχολίου
pdfjs-editor-edit-comment-popup-button =
.title = Επεξεργασία σχολίου
pdfjs-editor-delete-comment-popup-button-label = Αφαίρεση σχολίου
pdfjs-editor-delete-comment-popup-button =
.title = Αφαίρεση σχολίου
pdfjs-show-comment-button =
.title = Εμφάνιση σχολίου
## Edit a comment dialog
# An existing comment is edited
pdfjs-editor-edit-comment-dialog-title-when-editing = Επεξεργασία σχολίου
pdfjs-editor-edit-comment-dialog-save-button-when-editing = Ενημέρωση
# No existing comment
pdfjs-editor-edit-comment-dialog-title-when-adding = Προσθήκη σχολίου
pdfjs-editor-edit-comment-dialog-save-button-when-adding = Προσθήκη
pdfjs-editor-edit-comment-dialog-text-input =
.placeholder = Ξεκινήστε να πληκτρολογείτε…
pdfjs-editor-edit-comment-dialog-cancel-button = Ακύρωση
## Edit a comment button in the editor toolbar
pdfjs-editor-edit-comment-button =
.title = Επεξεργασία σχολίου
pdfjs-editor-add-comment-button =
.title = Προσθήκη σχολίου
## Main menu for adding/removing signatures
pdfjs-editor-delete-signature-button1 =
.title = Αφαίρεση αποθηκευμένης υπογραφής
pdfjs-editor-delete-signature-button-label1 = Αφαίρεση αποθηκευμένης υπογραφής
## Editor toolbar
pdfjs-editor-add-signature-edit-button-label = Επεξεργασία περιγραφής
## Edit signature description dialog
pdfjs-editor-edit-signature-dialog-title = Επεξεργασία περιγραφής

View File

@ -112,14 +112,6 @@ pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) }
# $mb (Number) - the PDF file size in megabytes # $mb (Number) - the PDF file size in megabytes
# $b (Number) - the PDF file size in bytes # $b (Number) - the PDF file size in bytes
pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes) pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes)
# Variables:
# $size_kb (Number) - the PDF file size in kilobytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-kb = { $size_kb } kB ({ $size_b } bytes)
# Variables:
# $size_mb (Number) - the PDF file size in megabytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-mb = { $size_mb } MB ({ $size_b } bytes)
pdfjs-document-properties-title = Title: pdfjs-document-properties-title = Title:
pdfjs-document-properties-author = Author: pdfjs-document-properties-author = Author:
pdfjs-document-properties-subject = Subject: pdfjs-document-properties-subject = Subject:
@ -129,10 +121,6 @@ pdfjs-document-properties-modification-date = Modification Date:
# Variables: # Variables:
# $dateObj (Date) - the creation/modification date and time of the PDF file # $dateObj (Date) - the creation/modification date and time of the PDF file
pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") } pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
# Variables:
# $date (Date) - the creation/modification date of the PDF file
# $time (Time) - the creation/modification time of the PDF file
pdfjs-document-properties-date-string = { $date }, { $time }
pdfjs-document-properties-creator = Creator: pdfjs-document-properties-creator = Creator:
pdfjs-document-properties-producer = PDF Producer: pdfjs-document-properties-producer = PDF Producer:
pdfjs-document-properties-version = PDF Version: pdfjs-document-properties-version = PDF Version:
@ -275,10 +263,6 @@ pdfjs-rendering-error = An error occurred while rendering the page.
## Annotations ## Annotations
# Variables:
# $date (Date) - the modification date of the annotation
# $time (Time) - the modification time of the annotation
pdfjs-annotation-date-string = { $date }, { $time }
# .alt: This is used as a tooltip. # .alt: This is used as a tooltip.
# Variables: # Variables:
# $type (String) - an annotation type from a list defined in the PDF spec # $type (String) - an annotation type from a list defined in the PDF spec
@ -302,9 +286,13 @@ pdfjs-web-fonts-disabled = Web fonts are disabled: unable to use embedded PDF fo
pdfjs-editor-free-text-button = pdfjs-editor-free-text-button =
.title = Text .title = Text
pdfjs-editor-color-picker-free-text-input =
.title = Change text colour
pdfjs-editor-free-text-button-label = Text pdfjs-editor-free-text-button-label = Text
pdfjs-editor-ink-button = pdfjs-editor-ink-button =
.title = Draw .title = Draw
pdfjs-editor-color-picker-ink-input =
.title = Change drawing colour
pdfjs-editor-ink-button-label = Draw pdfjs-editor-ink-button-label = Draw
pdfjs-editor-stamp-button = pdfjs-editor-stamp-button =
.title = Add or edit images .title = Add or edit images
@ -316,6 +304,33 @@ pdfjs-highlight-floating-button1 =
.title = Highlight .title = Highlight
.aria-label = Highlight .aria-label = Highlight
pdfjs-highlight-floating-button-label = Highlight pdfjs-highlight-floating-button-label = Highlight
pdfjs-comment-floating-button =
.title = Comment
.aria-label = Comment
pdfjs-comment-floating-button-label = Comment
pdfjs-editor-comment-button =
.title = Comment
.aria-label = Comment
pdfjs-editor-comment-button-label = Comment
pdfjs-editor-signature-button =
.title = Add signature
pdfjs-editor-signature-button-label = Add signature
## Default editor aria labels
# “Highlight” is a noun, the string is used on the editor for highlights.
pdfjs-editor-highlight-editor =
.aria-label = Highlight editor
# “Drawing” is a noun, the string is used on the editor for drawings.
pdfjs-editor-ink-editor =
.aria-label = Drawing editor
# Used when a signature editor is selected/hovered.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-signature-editor1 =
.aria-description = Signature editor: { $description }
pdfjs-editor-stamp-editor =
.aria-label = Image editor
## Remove button for the various kind of editor. ## Remove button for the various kind of editor.
@ -327,6 +342,8 @@ pdfjs-editor-remove-stamp-button =
.title = Remove image .title = Remove image
pdfjs-editor-remove-highlight-button = pdfjs-editor-remove-highlight-button =
.title = Remove highlight .title = Remove highlight
pdfjs-editor-remove-signature-button =
.title = Remove signature
## ##
@ -343,19 +360,41 @@ pdfjs-editor-stamp-add-image-button-label = Add image
pdfjs-editor-free-highlight-thickness-input = Thickness pdfjs-editor-free-highlight-thickness-input = Thickness
pdfjs-editor-free-highlight-thickness-title = pdfjs-editor-free-highlight-thickness-title =
.title = Change thickness when highlighting items other than text .title = Change thickness when highlighting items other than text
pdfjs-free-text = pdfjs-editor-add-signature-container =
.aria-label = Signature controls and saved signatures
pdfjs-editor-signature-add-signature-button =
.title = Add new signature
pdfjs-editor-signature-add-signature-button-label = Add new signature
# Used on the button to use an already saved signature.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-add-saved-signature-button =
.title = Saved signature: { $description }
# .default-content is used as a placeholder in an empty text editor.
pdfjs-free-text2 =
.aria-label = Text Editor .aria-label = Text Editor
pdfjs-free-text-default-content = Start typing… .default-content = Start typing…
pdfjs-ink = # Used to show how many comments are present in the pdf file.
.aria-label = Draw Editor # Variables:
pdfjs-ink-canvas = # $count (Number) - the number of comments.
.aria-label = User-created image pdfjs-editor-comments-sidebar-title =
{ $count ->
[one] Comment
*[other] Comments
}
pdfjs-editor-comments-sidebar-close-button =
.title = Close the sidebar
.aria-label = Close the sidebar
pdfjs-editor-comments-sidebar-close-button-label = Close the sidebar
# Instructional copy to add a comment by selecting text or an annotations.
pdfjs-editor-comments-sidebar-no-comments1 = See something noteworthy? Highlight it and leave a comment.
pdfjs-editor-comments-sidebar-no-comments-link = Learn more
## Alt-text dialog ## Alt-text dialog
# Alternative text (alt text) helps when people can't see the image.
pdfjs-editor-alt-text-button-label = Alt text pdfjs-editor-alt-text-button-label = Alt text
pdfjs-editor-alt-text-edit-button-label = Edit alt text pdfjs-editor-alt-text-edit-button =
.aria-label = Edit alt text
pdfjs-editor-alt-text-dialog-label = Choose an option pdfjs-editor-alt-text-dialog-label = Choose an option
pdfjs-editor-alt-text-dialog-description = Alt text (alternative text) helps when people cant see the image or when it doesnt load. pdfjs-editor-alt-text-dialog-description = Alt text (alternative text) helps when people cant see the image or when it doesnt load.
pdfjs-editor-alt-text-add-description-label = Add a description pdfjs-editor-alt-text-add-description-label = Add a description
@ -368,18 +407,13 @@ pdfjs-editor-alt-text-decorative-tooltip = Marked as decorative
# .placeholder: This is a placeholder for the alt text input area # .placeholder: This is a placeholder for the alt text input area
pdfjs-editor-alt-text-textarea = pdfjs-editor-alt-text-textarea =
.placeholder = For example, “A young man sits down at a table to eat a meal” .placeholder = For example, “A young man sits down at a table to eat a meal”
# Alternative text (alt text) helps when people can't see the image.
pdfjs-editor-alt-text-button =
.aria-label = Alt text
## Editor resizers ## Editor resizers
## This is used in an aria label to help to understand the role of the resizer. ## This is used in an aria label to help to understand the role of the resizer.
pdfjs-editor-resizer-label-top-left = Top left corner — resize
pdfjs-editor-resizer-label-top-middle = Top middle — resize
pdfjs-editor-resizer-label-top-right = Top right corner — resize
pdfjs-editor-resizer-label-middle-right = Middle right — resize
pdfjs-editor-resizer-label-bottom-right = Bottom right corner — resize
pdfjs-editor-resizer-label-bottom-middle = Bottom middle — resize
pdfjs-editor-resizer-label-bottom-left = Bottom left corner — resize
pdfjs-editor-resizer-label-middle-left = Middle left — resize
pdfjs-editor-resizer-top-left = pdfjs-editor-resizer-top-left =
.aria-label = Top left corner — resize .aria-label = Top left corner — resize
pdfjs-editor-resizer-top-middle = pdfjs-editor-resizer-top-middle =
@ -445,14 +479,19 @@ pdfjs-editor-new-alt-text-error-close-button = Close
# Variables: # Variables:
# $totalSize (Number) - the total size (in MB) of the AI model. # $totalSize (Number) - the total size (in MB) of the AI model.
# $downloadedSize (Number) - the downloaded size (in MB) of the AI model. # $downloadedSize (Number) - the downloaded size (in MB) of the AI model.
# $percent (Number) - the percentage of the downloaded size.
pdfjs-editor-new-alt-text-ai-model-downloading-progress = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB) pdfjs-editor-new-alt-text-ai-model-downloading-progress = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB)
.aria-valuetext = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB) .aria-valuetext = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB)
# This is a button that users can click to edit the alt text they have already added. # This is a button that users can click to edit the alt text they have already added.
pdfjs-editor-new-alt-text-added-button =
.aria-label = Alt text added
pdfjs-editor-new-alt-text-added-button-label = Alt text added pdfjs-editor-new-alt-text-added-button-label = Alt text added
# This is a button that users can click to open the alt text editor and add alt text when it is not present. # This is a button that users can click to open the alt text editor and add alt text when it is not present.
pdfjs-editor-new-alt-text-missing-button =
.aria-label = Missing alt text
pdfjs-editor-new-alt-text-missing-button-label = Missing alt text pdfjs-editor-new-alt-text-missing-button-label = Missing alt text
# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.
pdfjs-editor-new-alt-text-to-review-button =
.aria-label = Review alt text
pdfjs-editor-new-alt-text-to-review-button-label = Review alt text pdfjs-editor-new-alt-text-to-review-button-label = Review alt text
# "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.
# Variables: # Variables:
@ -479,3 +518,127 @@ pdfjs-editor-alt-text-settings-editor-title = Alt text editor
pdfjs-editor-alt-text-settings-show-dialog-button-label = Show alt text editor right away when adding an image pdfjs-editor-alt-text-settings-show-dialog-button-label = Show alt text editor right away when adding an image
pdfjs-editor-alt-text-settings-show-dialog-description = Helps you make sure all your images have alt text. pdfjs-editor-alt-text-settings-show-dialog-description = Helps you make sure all your images have alt text.
pdfjs-editor-alt-text-settings-close-button = Close pdfjs-editor-alt-text-settings-close-button = Close
## Accessibility labels (announced by screen readers) for objects added to the editor.
pdfjs-editor-highlight-added-alert = Highlight added
pdfjs-editor-freetext-added-alert = Text added
pdfjs-editor-ink-added-alert = Drawing added
pdfjs-editor-stamp-added-alert = Image added
pdfjs-editor-signature-added-alert = Signature added
## "Annotations removed" bar
pdfjs-editor-undo-bar-message-highlight = Highlight removed
pdfjs-editor-undo-bar-message-freetext = Text removed
pdfjs-editor-undo-bar-message-ink = Drawing removed
pdfjs-editor-undo-bar-message-stamp = Image removed
pdfjs-editor-undo-bar-message-signature = Signature removed
# Variables:
# $count (Number) - the number of removed annotations.
pdfjs-editor-undo-bar-message-multiple =
{ $count ->
[one] { $count } annotation removed
*[other] { $count } annotations removed
}
pdfjs-editor-undo-bar-undo-button =
.title = Undo
pdfjs-editor-undo-bar-undo-button-label = Undo
pdfjs-editor-undo-bar-close-button =
.title = Close
pdfjs-editor-undo-bar-close-button-label = Close
## Add a signature dialog
pdfjs-editor-add-signature-dialog-label = This modal allows the user to create a signature to add to a PDF document. The user can edit the name (which also serves as the alt text), and optionally save the signature for repeated use.
pdfjs-editor-add-signature-dialog-title = Add a signature
## Tab names
# Type is a verb (you can type your name as signature)
pdfjs-editor-add-signature-type-button = Type
.title = Type
# Draw is a verb (you can draw your signature)
pdfjs-editor-add-signature-draw-button = Draw
.title = Draw
pdfjs-editor-add-signature-image-button = Image
.title = Image
## Tab panels
pdfjs-editor-add-signature-type-input =
.aria-label = Type your signature
.placeholder = Type your signature
pdfjs-editor-add-signature-draw-placeholder = Draw your signature
pdfjs-editor-add-signature-draw-thickness-range-label = Thickness
# Variables:
# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.
pdfjs-editor-add-signature-draw-thickness-range =
.title = Drawing thickness: { $thickness }
pdfjs-editor-add-signature-image-placeholder = Drag a file here to upload
pdfjs-editor-add-signature-image-browse-link =
{ PLATFORM() ->
[macos] Or choose image files
*[other] Or browse image files
}
## Controls
pdfjs-editor-add-signature-description-label = Description (alt text)
pdfjs-editor-add-signature-description-input =
.title = Description (alt text)
pdfjs-editor-add-signature-description-default-when-drawing = Signature
pdfjs-editor-add-signature-clear-button-label = Clear signature
pdfjs-editor-add-signature-clear-button =
.title = Clear signature
pdfjs-editor-add-signature-save-checkbox = Save signature
pdfjs-editor-add-signature-save-warning-message = Youve reached the limit of 5 saved signatures. Remove one to save more.
pdfjs-editor-add-signature-image-upload-error-title = Couldnt upload image
pdfjs-editor-add-signature-image-upload-error-description = Check your network connection or try another image.
pdfjs-editor-add-signature-image-no-data-error-title = Cant convert this image into a signature
pdfjs-editor-add-signature-image-no-data-error-description = Please try uploading a different image.
pdfjs-editor-add-signature-error-close-button = Close
## Dialog buttons
pdfjs-editor-add-signature-cancel-button = Cancel
pdfjs-editor-add-signature-add-button = Add
pdfjs-editor-edit-signature-update-button = Update
## Comment popup
pdfjs-editor-edit-comment-popup-button-label = Edit comment
pdfjs-editor-edit-comment-popup-button =
.title = Edit comment
pdfjs-editor-delete-comment-popup-button-label = Remove comment
pdfjs-editor-delete-comment-popup-button =
.title = Remove comment
## Edit a comment dialog
# An existing comment is edited
pdfjs-editor-edit-comment-dialog-title-when-editing = Edit comment
# No existing comment
pdfjs-editor-edit-comment-dialog-title-when-adding = Add comment
pdfjs-editor-edit-comment-dialog-text-input =
.placeholder = Start typing…
pdfjs-editor-edit-comment-dialog-cancel-button = Cancel
## Edit a comment button in the editor toolbar
pdfjs-editor-edit-comment-button =
.title = Edit comment
## Main menu for adding/removing signatures
pdfjs-editor-delete-signature-button1 =
.title = Remove saved signature
pdfjs-editor-delete-signature-button-label1 = Remove saved signature
## Editor toolbar
pdfjs-editor-add-signature-edit-button-label = Edit description
## Edit signature description dialog
pdfjs-editor-edit-signature-dialog-title = Edit description

View File

@ -112,14 +112,6 @@ pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) }
# $mb (Number) - the PDF file size in megabytes # $mb (Number) - the PDF file size in megabytes
# $b (Number) - the PDF file size in bytes # $b (Number) - the PDF file size in bytes
pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes) pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes)
# Variables:
# $size_kb (Number) - the PDF file size in kilobytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-kb = { $size_kb } kB ({ $size_b } bytes)
# Variables:
# $size_mb (Number) - the PDF file size in megabytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-mb = { $size_mb } MB ({ $size_b } bytes)
pdfjs-document-properties-title = Title: pdfjs-document-properties-title = Title:
pdfjs-document-properties-author = Author: pdfjs-document-properties-author = Author:
pdfjs-document-properties-subject = Subject: pdfjs-document-properties-subject = Subject:
@ -129,10 +121,6 @@ pdfjs-document-properties-modification-date = Modification Date:
# Variables: # Variables:
# $dateObj (Date) - the creation/modification date and time of the PDF file # $dateObj (Date) - the creation/modification date and time of the PDF file
pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") } pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
# Variables:
# $date (Date) - the creation/modification date of the PDF file
# $time (Time) - the creation/modification time of the PDF file
pdfjs-document-properties-date-string = { $date }, { $time }
pdfjs-document-properties-creator = Creator: pdfjs-document-properties-creator = Creator:
pdfjs-document-properties-producer = PDF Producer: pdfjs-document-properties-producer = PDF Producer:
pdfjs-document-properties-version = PDF Version: pdfjs-document-properties-version = PDF Version:
@ -275,10 +263,6 @@ pdfjs-rendering-error = An error occurred while rendering the page.
## Annotations ## Annotations
# Variables:
# $date (Date) - the modification date of the annotation
# $time (Time) - the modification time of the annotation
pdfjs-annotation-date-string = { $date }, { $time }
# .alt: This is used as a tooltip. # .alt: This is used as a tooltip.
# Variables: # Variables:
# $type (String) - an annotation type from a list defined in the PDF spec # $type (String) - an annotation type from a list defined in the PDF spec
@ -302,9 +286,13 @@ pdfjs-web-fonts-disabled = Web fonts are disabled: unable to use embedded PDF fo
pdfjs-editor-free-text-button = pdfjs-editor-free-text-button =
.title = Text .title = Text
pdfjs-editor-color-picker-free-text-input =
.title = Change text colour
pdfjs-editor-free-text-button-label = Text pdfjs-editor-free-text-button-label = Text
pdfjs-editor-ink-button = pdfjs-editor-ink-button =
.title = Draw .title = Draw
pdfjs-editor-color-picker-ink-input =
.title = Change drawing colour
pdfjs-editor-ink-button-label = Draw pdfjs-editor-ink-button-label = Draw
pdfjs-editor-stamp-button = pdfjs-editor-stamp-button =
.title = Add or edit images .title = Add or edit images
@ -316,6 +304,33 @@ pdfjs-highlight-floating-button1 =
.title = Highlight .title = Highlight
.aria-label = Highlight .aria-label = Highlight
pdfjs-highlight-floating-button-label = Highlight pdfjs-highlight-floating-button-label = Highlight
pdfjs-comment-floating-button =
.title = Comment
.aria-label = Comment
pdfjs-comment-floating-button-label = Comment
pdfjs-editor-comment-button =
.title = Comment
.aria-label = Comment
pdfjs-editor-comment-button-label = Comment
pdfjs-editor-signature-button =
.title = Add signature
pdfjs-editor-signature-button-label = Add signature
## Default editor aria labels
# “Highlight” is a noun, the string is used on the editor for highlights.
pdfjs-editor-highlight-editor =
.aria-label = Highlight editor
# “Drawing” is a noun, the string is used on the editor for drawings.
pdfjs-editor-ink-editor =
.aria-label = Drawing editor
# Used when a signature editor is selected/hovered.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-signature-editor1 =
.aria-description = Signature editor: { $description }
pdfjs-editor-stamp-editor =
.aria-label = Image editor
## Remove button for the various kind of editor. ## Remove button for the various kind of editor.
@ -327,6 +342,8 @@ pdfjs-editor-remove-stamp-button =
.title = Remove image .title = Remove image
pdfjs-editor-remove-highlight-button = pdfjs-editor-remove-highlight-button =
.title = Remove highlight .title = Remove highlight
pdfjs-editor-remove-signature-button =
.title = Remove signature
## ##
@ -343,24 +360,41 @@ pdfjs-editor-stamp-add-image-button-label = Add image
pdfjs-editor-free-highlight-thickness-input = Thickness pdfjs-editor-free-highlight-thickness-input = Thickness
pdfjs-editor-free-highlight-thickness-title = pdfjs-editor-free-highlight-thickness-title =
.title = Change thickness when highlighting items other than text .title = Change thickness when highlighting items other than text
pdfjs-editor-add-signature-container =
.aria-label = Signature controls and saved signatures
pdfjs-editor-signature-add-signature-button =
.title = Add new signature
pdfjs-editor-signature-add-signature-button-label = Add new signature
# Used on the button to use an already saved signature.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-add-saved-signature-button =
.title = Saved signature: { $description }
# .default-content is used as a placeholder in an empty text editor. # .default-content is used as a placeholder in an empty text editor.
pdfjs-free-text2 = pdfjs-free-text2 =
.aria-label = Text Editor .aria-label = Text Editor
.default-content = Start typing… .default-content = Start typing…
pdfjs-free-text = # Used to show how many comments are present in the pdf file.
.aria-label = Text Editor # Variables:
pdfjs-free-text-default-content = Start typing… # $count (Number) - the number of comments.
pdfjs-ink = pdfjs-editor-comments-sidebar-title =
.aria-label = Draw Editor { $count ->
pdfjs-ink-canvas = [one] Comment
.aria-label = User-created image *[other] Comments
}
pdfjs-editor-comments-sidebar-close-button =
.title = Close the sidebar
.aria-label = Close the sidebar
pdfjs-editor-comments-sidebar-close-button-label = Close the sidebar
# Instructional copy to add a comment by selecting text or an annotations.
pdfjs-editor-comments-sidebar-no-comments1 = See something noteworthy? Highlight it and leave a comment.
pdfjs-editor-comments-sidebar-no-comments-link = Learn more
## Alt-text dialog ## Alt-text dialog
pdfjs-editor-alt-text-button-label = Alt text pdfjs-editor-alt-text-button-label = Alt text
pdfjs-editor-alt-text-edit-button = pdfjs-editor-alt-text-edit-button =
.aria-label = Edit alt text .aria-label = Edit alt text
pdfjs-editor-alt-text-edit-button-label = Edit alt text
pdfjs-editor-alt-text-dialog-label = Choose an option pdfjs-editor-alt-text-dialog-label = Choose an option
pdfjs-editor-alt-text-dialog-description = Alt text (alternative text) helps when people cant see the image or when it doesnt load. pdfjs-editor-alt-text-dialog-description = Alt text (alternative text) helps when people cant see the image or when it doesnt load.
pdfjs-editor-alt-text-add-description-label = Add a description pdfjs-editor-alt-text-add-description-label = Add a description
@ -380,14 +414,6 @@ pdfjs-editor-alt-text-button =
## Editor resizers ## Editor resizers
## This is used in an aria label to help to understand the role of the resizer. ## This is used in an aria label to help to understand the role of the resizer.
pdfjs-editor-resizer-label-top-left = Top left corner — resize
pdfjs-editor-resizer-label-top-middle = Top middle — resize
pdfjs-editor-resizer-label-top-right = Top right corner — resize
pdfjs-editor-resizer-label-middle-right = Middle right — resize
pdfjs-editor-resizer-label-bottom-right = Bottom right corner — resize
pdfjs-editor-resizer-label-bottom-middle = Bottom middle — resize
pdfjs-editor-resizer-label-bottom-left = Bottom left corner — resize
pdfjs-editor-resizer-label-middle-left = Middle left — resize
pdfjs-editor-resizer-top-left = pdfjs-editor-resizer-top-left =
.aria-label = Top left corner — resize .aria-label = Top left corner — resize
pdfjs-editor-resizer-top-middle = pdfjs-editor-resizer-top-middle =
@ -453,7 +479,6 @@ pdfjs-editor-new-alt-text-error-close-button = Close
# Variables: # Variables:
# $totalSize (Number) - the total size (in MB) of the AI model. # $totalSize (Number) - the total size (in MB) of the AI model.
# $downloadedSize (Number) - the downloaded size (in MB) of the AI model. # $downloadedSize (Number) - the downloaded size (in MB) of the AI model.
# $percent (Number) - the percentage of the downloaded size.
pdfjs-editor-new-alt-text-ai-model-downloading-progress = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB) pdfjs-editor-new-alt-text-ai-model-downloading-progress = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB)
.aria-valuetext = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB) .aria-valuetext = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB)
# This is a button that users can click to edit the alt text they have already added. # This is a button that users can click to edit the alt text they have already added.
@ -493,3 +518,133 @@ pdfjs-editor-alt-text-settings-editor-title = Alt text editor
pdfjs-editor-alt-text-settings-show-dialog-button-label = Show alt text editor right away when adding an image pdfjs-editor-alt-text-settings-show-dialog-button-label = Show alt text editor right away when adding an image
pdfjs-editor-alt-text-settings-show-dialog-description = Helps you make sure all your images have alt text. pdfjs-editor-alt-text-settings-show-dialog-description = Helps you make sure all your images have alt text.
pdfjs-editor-alt-text-settings-close-button = Close pdfjs-editor-alt-text-settings-close-button = Close
## Accessibility labels (announced by screen readers) for objects added to the editor.
pdfjs-editor-highlight-added-alert = Highlight added
pdfjs-editor-freetext-added-alert = Text added
pdfjs-editor-ink-added-alert = Drawing added
pdfjs-editor-stamp-added-alert = Image added
pdfjs-editor-signature-added-alert = Signature added
## "Annotations removed" bar
pdfjs-editor-undo-bar-message-highlight = Highlight removed
pdfjs-editor-undo-bar-message-freetext = Text removed
pdfjs-editor-undo-bar-message-ink = Drawing removed
pdfjs-editor-undo-bar-message-stamp = Image removed
pdfjs-editor-undo-bar-message-signature = Signature removed
# Variables:
# $count (Number) - the number of removed annotations.
pdfjs-editor-undo-bar-message-multiple =
{ $count ->
[one] { $count } annotation removed
*[other] { $count } annotations removed
}
pdfjs-editor-undo-bar-undo-button =
.title = Undo
pdfjs-editor-undo-bar-undo-button-label = Undo
pdfjs-editor-undo-bar-close-button =
.title = Close
pdfjs-editor-undo-bar-close-button-label = Close
## Add a signature dialog
pdfjs-editor-add-signature-dialog-label = This modal allows the user to create a signature to add to a PDF document. The user can edit the name (which also serves as the alt text), and optionally save the signature for repeated use.
pdfjs-editor-add-signature-dialog-title = Add a signature
## Tab names
# Type is a verb (you can type your name as signature)
pdfjs-editor-add-signature-type-button = Type
.title = Type
# Draw is a verb (you can draw your signature)
pdfjs-editor-add-signature-draw-button = Draw
.title = Draw
pdfjs-editor-add-signature-image-button = Image
.title = Image
## Tab panels
pdfjs-editor-add-signature-type-input =
.aria-label = Type your signature
.placeholder = Type your signature
pdfjs-editor-add-signature-draw-placeholder = Draw your signature
pdfjs-editor-add-signature-draw-thickness-range-label = Thickness
# Variables:
# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.
pdfjs-editor-add-signature-draw-thickness-range =
.title = Drawing thickness: { $thickness }
pdfjs-editor-add-signature-image-placeholder = Drag a file here to upload
pdfjs-editor-add-signature-image-browse-link =
{ PLATFORM() ->
[macos] Or choose image files
*[other] Or browse image files
}
## Controls
pdfjs-editor-add-signature-description-label = Description (alt text)
pdfjs-editor-add-signature-description-input =
.title = Description (alt text)
pdfjs-editor-add-signature-description-default-when-drawing = Signature
pdfjs-editor-add-signature-clear-button-label = Clear signature
pdfjs-editor-add-signature-clear-button =
.title = Clear signature
pdfjs-editor-add-signature-save-checkbox = Save signature
pdfjs-editor-add-signature-save-warning-message = Youve reached the limit of 5 saved signatures. Remove one to save more.
pdfjs-editor-add-signature-image-upload-error-title = Couldnt upload image
pdfjs-editor-add-signature-image-upload-error-description = Check your network connection or try another image.
pdfjs-editor-add-signature-image-no-data-error-title = Cant convert this image into a signature
pdfjs-editor-add-signature-image-no-data-error-description = Please try uploading a different image.
pdfjs-editor-add-signature-error-close-button = Close
## Dialog buttons
pdfjs-editor-add-signature-cancel-button = Cancel
pdfjs-editor-add-signature-add-button = Add
pdfjs-editor-edit-signature-update-button = Update
## Comment popup
pdfjs-editor-edit-comment-popup-button-label = Edit comment
pdfjs-editor-edit-comment-popup-button =
.title = Edit comment
pdfjs-editor-delete-comment-popup-button-label = Remove comment
pdfjs-editor-delete-comment-popup-button =
.title = Remove comment
pdfjs-show-comment-button =
.title = Show comment
## Edit a comment dialog
# An existing comment is edited
pdfjs-editor-edit-comment-dialog-title-when-editing = Edit comment
pdfjs-editor-edit-comment-dialog-save-button-when-editing = Update
# No existing comment
pdfjs-editor-edit-comment-dialog-title-when-adding = Add comment
pdfjs-editor-edit-comment-dialog-save-button-when-adding = Add
pdfjs-editor-edit-comment-dialog-text-input =
.placeholder = Start typing…
pdfjs-editor-edit-comment-dialog-cancel-button = Cancel
## Edit a comment button in the editor toolbar
pdfjs-editor-edit-comment-button =
.title = Edit comment
pdfjs-editor-add-comment-button =
.title = Add comment
## Main menu for adding/removing signatures
pdfjs-editor-delete-signature-button1 =
.title = Remove saved signature
pdfjs-editor-delete-signature-button-label1 = Remove saved signature
## Editor toolbar
pdfjs-editor-add-signature-edit-button-label = Edit description
## Edit signature description dialog
pdfjs-editor-edit-signature-dialog-title = Edit description

View File

@ -306,9 +306,13 @@ pdfjs-web-fonts-disabled = Web fonts are disabled: unable to use embedded PDF fo
pdfjs-editor-free-text-button = pdfjs-editor-free-text-button =
.title = Text .title = Text
pdfjs-editor-color-picker-free-text-input =
.title = Change text color
pdfjs-editor-free-text-button-label = Text pdfjs-editor-free-text-button-label = Text
pdfjs-editor-ink-button = pdfjs-editor-ink-button =
.title = Draw .title = Draw
pdfjs-editor-color-picker-ink-input =
.title = Change drawing color
pdfjs-editor-ink-button-label = Draw pdfjs-editor-ink-button-label = Draw
pdfjs-editor-stamp-button = pdfjs-editor-stamp-button =
.title = Add or edit images .title = Add or edit images
@ -320,6 +324,35 @@ pdfjs-highlight-floating-button1 =
.title = Highlight .title = Highlight
.aria-label = Highlight .aria-label = Highlight
pdfjs-highlight-floating-button-label = Highlight pdfjs-highlight-floating-button-label = Highlight
pdfjs-comment-floating-button =
.title = Comment
.aria-label = Comment
pdfjs-comment-floating-button-label = Comment
pdfjs-editor-comment-button =
.title = Comment
.aria-label = Comment
pdfjs-editor-comment-button-label = Comment
pdfjs-editor-signature-button =
.title = Add signature
pdfjs-editor-signature-button-label = Add signature
## Default editor aria labels
# “Highlight” is a noun, the string is used on the editor for highlights.
pdfjs-editor-highlight-editor =
.aria-label = Highlight editor
# “Drawing” is a noun, the string is used on the editor for drawings.
pdfjs-editor-ink-editor =
.aria-label = Drawing editor
# Used when a signature editor is selected/hovered.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-signature-editor1 =
.aria-description = Signature editor: { $description }
pdfjs-editor-stamp-editor =
.aria-label = Image editor
## Remove button for the various kind of editor. ## Remove button for the various kind of editor.
@ -331,6 +364,8 @@ pdfjs-editor-remove-stamp-button =
.title = Remove image .title = Remove image
pdfjs-editor-remove-highlight-button = pdfjs-editor-remove-highlight-button =
.title = Remove highlight .title = Remove highlight
pdfjs-editor-remove-signature-button =
.title = Remove signature
## ##
@ -347,15 +382,40 @@ pdfjs-editor-stamp-add-image-button-label = Add image
pdfjs-editor-free-highlight-thickness-input = Thickness pdfjs-editor-free-highlight-thickness-input = Thickness
pdfjs-editor-free-highlight-thickness-title = pdfjs-editor-free-highlight-thickness-title =
.title = Change thickness when highlighting items other than text .title = Change thickness when highlighting items other than text
pdfjs-editor-add-signature-container =
.aria-label = Signature controls and saved signatures
pdfjs-editor-signature-add-signature-button =
.title = Add new signature
pdfjs-editor-signature-add-signature-button-label = Add new signature
# Used on the button to use an already saved signature.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-add-saved-signature-button =
.title = Saved signature: { $description }
# .default-content is used as a placeholder in an empty text editor. # .default-content is used as a placeholder in an empty text editor.
pdfjs-free-text2 = pdfjs-free-text2 =
.aria-label = Text Editor .aria-label = Text Editor
.default-content = Start typing… .default-content = Start typing…
pdfjs-ink =
.aria-label = Draw Editor # Used to show how many comments are present in the pdf file.
pdfjs-ink-canvas = # Variables:
.aria-label = User-created image # $count (Number) - the number of comments.
pdfjs-editor-comments-sidebar-title =
{ $count ->
[one] Comment
*[other] Comments
}
pdfjs-editor-comments-sidebar-close-button =
.title = Close the sidebar
.aria-label = Close the sidebar
pdfjs-editor-comments-sidebar-close-button-label = Close the sidebar
# Instructional copy to add a comment by selecting text or an annotations.
pdfjs-editor-comments-sidebar-no-comments1 = See something noteworthy? Highlight it and leave a comment.
pdfjs-editor-comments-sidebar-no-comments-link = Learn more
## Alt-text dialog ## Alt-text dialog
@ -455,7 +515,6 @@ pdfjs-editor-new-alt-text-error-close-button = Close
# Variables: # Variables:
# $totalSize (Number) - the total size (in MB) of the AI model. # $totalSize (Number) - the total size (in MB) of the AI model.
# $downloadedSize (Number) - the downloaded size (in MB) of the AI model. # $downloadedSize (Number) - the downloaded size (in MB) of the AI model.
# $percent (Number) - the percentage of the downloaded size.
pdfjs-editor-new-alt-text-ai-model-downloading-progress = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB) pdfjs-editor-new-alt-text-ai-model-downloading-progress = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB)
.aria-valuetext = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB) .aria-valuetext = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB)
@ -503,3 +562,143 @@ pdfjs-editor-alt-text-settings-editor-title = Alt text editor
pdfjs-editor-alt-text-settings-show-dialog-button-label = Show alt text editor right away when adding an image pdfjs-editor-alt-text-settings-show-dialog-button-label = Show alt text editor right away when adding an image
pdfjs-editor-alt-text-settings-show-dialog-description = Helps you make sure all your images have alt text. pdfjs-editor-alt-text-settings-show-dialog-description = Helps you make sure all your images have alt text.
pdfjs-editor-alt-text-settings-close-button = Close pdfjs-editor-alt-text-settings-close-button = Close
## Accessibility labels (announced by screen readers) for objects added to the editor.
pdfjs-editor-highlight-added-alert = Highlight added
pdfjs-editor-freetext-added-alert = Text added
pdfjs-editor-ink-added-alert = Drawing added
pdfjs-editor-stamp-added-alert = Image added
pdfjs-editor-signature-added-alert = Signature added
## "Annotations removed" bar
pdfjs-editor-undo-bar-message-highlight = Highlight removed
pdfjs-editor-undo-bar-message-freetext = Text removed
pdfjs-editor-undo-bar-message-ink = Drawing removed
pdfjs-editor-undo-bar-message-stamp = Image removed
pdfjs-editor-undo-bar-message-signature = Signature removed
# Variables:
# $count (Number) - the number of removed annotations.
pdfjs-editor-undo-bar-message-multiple =
{ $count ->
[one] { $count } annotation removed
*[other] { $count } annotations removed
}
pdfjs-editor-undo-bar-undo-button =
.title = Undo
pdfjs-editor-undo-bar-undo-button-label = Undo
pdfjs-editor-undo-bar-close-button =
.title = Close
pdfjs-editor-undo-bar-close-button-label = Close
## Add a signature dialog
pdfjs-editor-add-signature-dialog-label = This modal allows the user to create a signature to add to a PDF document. The user can edit the name (which also serves as the alt text), and optionally save the signature for repeated use.
pdfjs-editor-add-signature-dialog-title = Add a signature
## Tab names
# Type is a verb (you can type your name as signature)
pdfjs-editor-add-signature-type-button = Type
.title = Type
# Draw is a verb (you can draw your signature)
pdfjs-editor-add-signature-draw-button = Draw
.title = Draw
pdfjs-editor-add-signature-image-button = Image
.title = Image
## Tab panels
pdfjs-editor-add-signature-type-input =
.aria-label = Type your signature
.placeholder = Type your signature
pdfjs-editor-add-signature-draw-placeholder = Draw your signature
pdfjs-editor-add-signature-draw-thickness-range-label = Thickness
# Variables:
# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.
pdfjs-editor-add-signature-draw-thickness-range =
.title = Drawing thickness: { $thickness }
pdfjs-editor-add-signature-image-placeholder = Drag a file here to upload
pdfjs-editor-add-signature-image-browse-link =
{ PLATFORM() ->
[macos] Or choose image files
*[other] Or browse image files
}
## Controls
pdfjs-editor-add-signature-description-label = Description (alt text)
pdfjs-editor-add-signature-description-input =
.title = Description (alt text)
pdfjs-editor-add-signature-description-default-when-drawing = Signature
pdfjs-editor-add-signature-clear-button-label = Clear signature
pdfjs-editor-add-signature-clear-button =
.title = Clear signature
pdfjs-editor-add-signature-save-checkbox = Save signature
pdfjs-editor-add-signature-save-warning-message = Youve reached the limit of 5 saved signatures. Remove one to save more.
pdfjs-editor-add-signature-image-upload-error-title = Couldnt upload image
pdfjs-editor-add-signature-image-upload-error-description = Check your network connection or try another image.
pdfjs-editor-add-signature-image-no-data-error-title = Cant convert this image into a signature
pdfjs-editor-add-signature-image-no-data-error-description = Please try uploading a different image.
pdfjs-editor-add-signature-error-close-button = Close
## Dialog buttons
pdfjs-editor-add-signature-cancel-button = Cancel
pdfjs-editor-add-signature-add-button = Add
## Main menu for adding/removing signatures
pdfjs-editor-delete-signature-button1 =
.title = Remove saved signature
pdfjs-editor-delete-signature-button-label1 = Remove saved signature
## Editor toolbar
pdfjs-editor-add-signature-edit-button-label = Edit description
## Edit signature description dialog
pdfjs-editor-edit-signature-dialog-title = Edit description
## Dialog buttons
pdfjs-editor-edit-signature-update-button = Update
## Comment popup
pdfjs-show-comment-button =
.title = Show comment
pdfjs-editor-edit-comment-popup-button-label = Edit comment
pdfjs-editor-edit-comment-popup-button =
.title = Edit comment
pdfjs-editor-delete-comment-popup-button-label = Remove comment
pdfjs-editor-delete-comment-popup-button =
.title = Remove comment
## Edit a comment dialog
# An existing comment is edited
pdfjs-editor-edit-comment-dialog-title-when-editing = Edit comment
pdfjs-editor-edit-comment-dialog-save-button-when-editing = Update
# No existing comment
pdfjs-editor-edit-comment-dialog-title-when-adding = Add comment
pdfjs-editor-edit-comment-dialog-save-button-when-adding = Add
pdfjs-editor-edit-comment-dialog-text-input =
.placeholder = Start typing…
pdfjs-editor-edit-comment-dialog-cancel-button = Cancel
## Edit a comment button in the editor toolbar
pdfjs-editor-add-comment-button =
.title = Add comment

View File

@ -112,14 +112,6 @@ pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) }
# $mb (Number) - the PDF file size in megabytes # $mb (Number) - the PDF file size in megabytes
# $b (Number) - the PDF file size in bytes # $b (Number) - the PDF file size in bytes
pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } Mo ({ $b } oktetoj) pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } Mo ({ $b } oktetoj)
# Variables:
# $size_kb (Number) - the PDF file size in kilobytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-kb = { $size_kb } KO ({ $size_b } oktetoj)
# Variables:
# $size_mb (Number) - the PDF file size in megabytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-mb = { $size_mb } MO ({ $size_b } oktetoj)
pdfjs-document-properties-title = Titolo: pdfjs-document-properties-title = Titolo:
pdfjs-document-properties-author = Aŭtoro: pdfjs-document-properties-author = Aŭtoro:
pdfjs-document-properties-subject = Temo: pdfjs-document-properties-subject = Temo:
@ -129,10 +121,6 @@ pdfjs-document-properties-modification-date = Dato de modifo:
# Variables: # Variables:
# $dateObj (Date) - the creation/modification date and time of the PDF file # $dateObj (Date) - the creation/modification date and time of the PDF file
pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") } pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
# Variables:
# $date (Date) - the creation/modification date of the PDF file
# $time (Time) - the creation/modification time of the PDF file
pdfjs-document-properties-date-string = { $date }, { $time }
pdfjs-document-properties-creator = Kreinto: pdfjs-document-properties-creator = Kreinto:
pdfjs-document-properties-producer = Produktinto de PDF: pdfjs-document-properties-producer = Produktinto de PDF:
pdfjs-document-properties-version = Versio de PDF: pdfjs-document-properties-version = Versio de PDF:
@ -275,10 +263,6 @@ pdfjs-rendering-error = Okazis eraro dum la montro de la paĝo.
## Annotations ## Annotations
# Variables:
# $date (Date) - the modification date of the annotation
# $time (Time) - the modification time of the annotation
pdfjs-annotation-date-string = { $date }, { $time }
# .alt: This is used as a tooltip. # .alt: This is used as a tooltip.
# Variables: # Variables:
# $type (String) - an annotation type from a list defined in the PDF spec # $type (String) - an annotation type from a list defined in the PDF spec
@ -302,9 +286,13 @@ pdfjs-web-fonts-disabled = Neaktivaj teksaĵaj tiparoj: ne elbas uzi enmetitajn
pdfjs-editor-free-text-button = pdfjs-editor-free-text-button =
.title = Teksto .title = Teksto
pdfjs-editor-color-picker-free-text-input =
.title = Ŝanĝi koloron de teksto
pdfjs-editor-free-text-button-label = Teksto pdfjs-editor-free-text-button-label = Teksto
pdfjs-editor-ink-button = pdfjs-editor-ink-button =
.title = Desegni .title = Desegni
pdfjs-editor-color-picker-ink-input =
.title = Ŝanĝi desegnan koloron
pdfjs-editor-ink-button-label = Desegni pdfjs-editor-ink-button-label = Desegni
pdfjs-editor-stamp-button = pdfjs-editor-stamp-button =
.title = Aldoni aŭ modifi bildojn .title = Aldoni aŭ modifi bildojn
@ -316,6 +304,33 @@ pdfjs-highlight-floating-button1 =
.title = Elstarigi .title = Elstarigi
.aria-label = Elstarigi .aria-label = Elstarigi
pdfjs-highlight-floating-button-label = Elstarigi pdfjs-highlight-floating-button-label = Elstarigi
pdfjs-comment-floating-button =
.title = Komenti
.aria-label = Komenti
pdfjs-comment-floating-button-label = Komenti
pdfjs-editor-comment-button =
.title = Komenti
.aria-label = Komenti
pdfjs-editor-comment-button-label = Komenti
pdfjs-editor-signature-button =
.title = Aldoni subskribon
pdfjs-editor-signature-button-label = Aldoni subskribon
## Default editor aria labels
# “Highlight” is a noun, the string is used on the editor for highlights.
pdfjs-editor-highlight-editor =
.aria-label = Redaktilo de elstaraĵo
# “Drawing” is a noun, the string is used on the editor for drawings.
pdfjs-editor-ink-editor =
.aria-label = Redaktilo de desegno
# Used when a signature editor is selected/hovered.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-signature-editor1 =
.aria-description = Redaktilo de subskribo: { $description }
pdfjs-editor-stamp-editor =
.aria-label = Redaktilo de bildo
## Remove button for the various kind of editor. ## Remove button for the various kind of editor.
@ -327,6 +342,8 @@ pdfjs-editor-remove-stamp-button =
.title = Forigi bildon .title = Forigi bildon
pdfjs-editor-remove-highlight-button = pdfjs-editor-remove-highlight-button =
.title = Forigi elstaraĵon .title = Forigi elstaraĵon
pdfjs-editor-remove-signature-button =
.title = Forigi subskribon
## ##
@ -343,19 +360,41 @@ pdfjs-editor-stamp-add-image-button-label = Aldoni bildon
pdfjs-editor-free-highlight-thickness-input = Dikeco pdfjs-editor-free-highlight-thickness-input = Dikeco
pdfjs-editor-free-highlight-thickness-title = pdfjs-editor-free-highlight-thickness-title =
.title = Ŝanĝi dikecon dum elstarigo de netekstaj elementoj .title = Ŝanĝi dikecon dum elstarigo de netekstaj elementoj
pdfjs-free-text = pdfjs-editor-add-signature-container =
.aria-label = Tekstan redaktilon .aria-label = Kontrolado de subskriboj kaj konservitaj subskriboj
pdfjs-free-text-default-content = Ektajpi… pdfjs-editor-signature-add-signature-button =
pdfjs-ink = .title = Aldoni novan subskribon
.aria-label = Desegnan redaktilon pdfjs-editor-signature-add-signature-button-label = Aldoni novan subskribon
pdfjs-ink-canvas = # Used on the button to use an already saved signature.
.aria-label = Bildo kreita de uzanto # Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-add-saved-signature-button =
.title = Konservita subskribo: { $description }
# .default-content is used as a placeholder in an empty text editor.
pdfjs-free-text2 =
.aria-label = Teksta redaktilo
.default-content = Komencu tajpi…
# Used to show how many comments are present in the pdf file.
# Variables:
# $count (Number) - the number of comments.
pdfjs-editor-comments-sidebar-title =
{ $count ->
[one] Komenti
*[other] Komentoj
}
pdfjs-editor-comments-sidebar-close-button =
.title = Fermi la flankan strion
.aria-label = Fermi la flankan strion
pdfjs-editor-comments-sidebar-close-button-label = Fermi la flankan strion
# Instructional copy to add a comment by selecting text or an annotations.
pdfjs-editor-comments-sidebar-no-comments1 = Ĉu vi rimarkas ion interesan? Elstarigu tion kaj aldonu komenton.
pdfjs-editor-comments-sidebar-no-comments-link = Pli da informo
## Alt-text dialog ## Alt-text dialog
# Alternative text (alt text) helps when people can't see the image.
pdfjs-editor-alt-text-button-label = Alternativa teksto pdfjs-editor-alt-text-button-label = Alternativa teksto
pdfjs-editor-alt-text-edit-button-label = Redakti alternativan tekston pdfjs-editor-alt-text-edit-button =
.aria-label = Redakti alternativan tekston
pdfjs-editor-alt-text-dialog-label = Elektu eblon pdfjs-editor-alt-text-dialog-label = Elektu eblon
pdfjs-editor-alt-text-dialog-description = Alternativa teksto helpas personojn, en la okazoj kiam ili ne povas vidi aŭ ŝargi la bildon. pdfjs-editor-alt-text-dialog-description = Alternativa teksto helpas personojn, en la okazoj kiam ili ne povas vidi aŭ ŝargi la bildon.
pdfjs-editor-alt-text-add-description-label = Aldoni priskribon pdfjs-editor-alt-text-add-description-label = Aldoni priskribon
@ -368,18 +407,13 @@ pdfjs-editor-alt-text-decorative-tooltip = Markita kiel ornama
# .placeholder: This is a placeholder for the alt text input area # .placeholder: This is a placeholder for the alt text input area
pdfjs-editor-alt-text-textarea = pdfjs-editor-alt-text-textarea =
.placeholder = Ekzemple: “Juna persono sidiĝas ĉetable por ekmanĝi” .placeholder = Ekzemple: “Juna persono sidiĝas ĉetable por ekmanĝi”
# Alternative text (alt text) helps when people can't see the image.
pdfjs-editor-alt-text-button =
.aria-label = Alternativa teksto
## Editor resizers ## Editor resizers
## This is used in an aria label to help to understand the role of the resizer. ## This is used in an aria label to help to understand the role of the resizer.
pdfjs-editor-resizer-label-top-left = Supra maldekstra angulo — ŝangi grandon
pdfjs-editor-resizer-label-top-middle = Supra mezo — ŝanĝi grandon
pdfjs-editor-resizer-label-top-right = Supran dekstran angulon — ŝanĝi grandon
pdfjs-editor-resizer-label-middle-right = Dekstra mezo — ŝanĝi grandon
pdfjs-editor-resizer-label-bottom-right = Malsupra deksta angulo — ŝanĝi grandon
pdfjs-editor-resizer-label-bottom-middle = Malsupra mezo — ŝanĝi grandon
pdfjs-editor-resizer-label-bottom-left = Malsupra maldekstra angulo — ŝanĝi grandon
pdfjs-editor-resizer-label-middle-left = Maldekstra mezo — ŝanĝi grandon
pdfjs-editor-resizer-top-left = pdfjs-editor-resizer-top-left =
.aria-label = Supra maldekstra angulo — ŝangi grandon .aria-label = Supra maldekstra angulo — ŝangi grandon
pdfjs-editor-resizer-top-middle = pdfjs-editor-resizer-top-middle =
@ -445,14 +479,19 @@ pdfjs-editor-new-alt-text-error-close-button = Fermi
# Variables: # Variables:
# $totalSize (Number) - the total size (in MB) of the AI model. # $totalSize (Number) - the total size (in MB) of the AI model.
# $downloadedSize (Number) - the downloaded size (in MB) of the AI model. # $downloadedSize (Number) - the downloaded size (in MB) of the AI model.
# $percent (Number) - the percentage of the downloaded size.
pdfjs-editor-new-alt-text-ai-model-downloading-progress = Elŝuto de modelo de artefarita intelekto por alternativa teksto ({ $downloadedSize } el { $totalSize } MO) pdfjs-editor-new-alt-text-ai-model-downloading-progress = Elŝuto de modelo de artefarita intelekto por alternativa teksto ({ $downloadedSize } el { $totalSize } MO)
.aria-valuetext = Elŝuto de modelo de artefarita intelekto por alternativa teksto ({ $downloadedSize } el { $totalSize } MO) .aria-valuetext = Elŝuto de modelo de artefarita intelekto por alternativa teksto ({ $downloadedSize } el { $totalSize } MO)
# This is a button that users can click to edit the alt text they have already added. # This is a button that users can click to edit the alt text they have already added.
pdfjs-editor-new-alt-text-added-button =
.aria-label = Alternativa teksto aldonita
pdfjs-editor-new-alt-text-added-button-label = Alternativa teksto aldonita pdfjs-editor-new-alt-text-added-button-label = Alternativa teksto aldonita
# This is a button that users can click to open the alt text editor and add alt text when it is not present. # This is a button that users can click to open the alt text editor and add alt text when it is not present.
pdfjs-editor-new-alt-text-missing-button =
.aria-label = Mankas alternativa teksto
pdfjs-editor-new-alt-text-missing-button-label = Mankas alternativa teksto pdfjs-editor-new-alt-text-missing-button-label = Mankas alternativa teksto
# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.
pdfjs-editor-new-alt-text-to-review-button =
.aria-label = Kontroli alternativan tekston
pdfjs-editor-new-alt-text-to-review-button-label = Kontroli alternativan tekston pdfjs-editor-new-alt-text-to-review-button-label = Kontroli alternativan tekston
# "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.
# Variables: # Variables:
@ -479,3 +518,133 @@ pdfjs-editor-alt-text-settings-editor-title = Redaktilo de alternativa teksto
pdfjs-editor-alt-text-settings-show-dialog-button-label = Montri redaktilon de alternativa teksto tuj post aldono de bildo pdfjs-editor-alt-text-settings-show-dialog-button-label = Montri redaktilon de alternativa teksto tuj post aldono de bildo
pdfjs-editor-alt-text-settings-show-dialog-description = Tio ĉi helpas vin kontroli ĉu ĉiuj bildoj havas alternativan tekston. pdfjs-editor-alt-text-settings-show-dialog-description = Tio ĉi helpas vin kontroli ĉu ĉiuj bildoj havas alternativan tekston.
pdfjs-editor-alt-text-settings-close-button = Fermi pdfjs-editor-alt-text-settings-close-button = Fermi
## Accessibility labels (announced by screen readers) for objects added to the editor.
pdfjs-editor-highlight-added-alert = Elstarigo aldonita
pdfjs-editor-freetext-added-alert = Teksto aldonita
pdfjs-editor-ink-added-alert = Desegno aldonita
pdfjs-editor-stamp-added-alert = Bildo aldonita
pdfjs-editor-signature-added-alert = Subskribo aldonita
## "Annotations removed" bar
pdfjs-editor-undo-bar-message-highlight = Elstaraĵo forigita
pdfjs-editor-undo-bar-message-freetext = Teksto forigita
pdfjs-editor-undo-bar-message-ink = Desegno forigita
pdfjs-editor-undo-bar-message-stamp = Bildo forigita
pdfjs-editor-undo-bar-message-signature = Subskribo forigita
# Variables:
# $count (Number) - the number of removed annotations.
pdfjs-editor-undo-bar-message-multiple =
{ $count ->
[one] unu prinoto forigita
*[other] { $count } prinotoj forigitaj
}
pdfjs-editor-undo-bar-undo-button =
.title = Malfari
pdfjs-editor-undo-bar-undo-button-label = Malfari
pdfjs-editor-undo-bar-close-button =
.title = Fermi
pdfjs-editor-undo-bar-close-button-label = Fermi
## Add a signature dialog
pdfjs-editor-add-signature-dialog-label = Tiu ĉi fenestro permesas al la uzanto krei subskribon por aldoni al dokumento PDF. La uzanto povas modifi la nomon (kiu estas cetere la alternativa teksto) kaj havas la eblon konservi la subskribon por posta uzo.
pdfjs-editor-add-signature-dialog-title = Aldoni subskribon
## Tab names
# Type is a verb (you can type your name as signature)
pdfjs-editor-add-signature-type-button = Tajpi
.title = Tajpi
# Draw is a verb (you can draw your signature)
pdfjs-editor-add-signature-draw-button = Desegni
.title = Desegni
pdfjs-editor-add-signature-image-button = Bildo
.title = Bildo
## Tab panels
pdfjs-editor-add-signature-type-input =
.aria-label = Tajpu vian subskribon
.placeholder = Tajpu vian subskribon
pdfjs-editor-add-signature-draw-placeholder = Desegni vian subskribon
pdfjs-editor-add-signature-draw-thickness-range-label = Dikeco
# Variables:
# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.
pdfjs-editor-add-signature-draw-thickness-range =
.title = Dikeco de desegno: { $thickness }
pdfjs-editor-add-signature-image-placeholder = Trenu dosieron ĉi tien por alŝuti ĝin
pdfjs-editor-add-signature-image-browse-link =
{ PLATFORM() ->
[macos] Aŭ elektu bildan dosieron
*[other] Aŭ elektu bildan dosieron
}
## Controls
pdfjs-editor-add-signature-description-label = Priskribo (alternativa teksto)
pdfjs-editor-add-signature-description-input =
.title = Priskribo (alternativa teksto)
pdfjs-editor-add-signature-description-default-when-drawing = Subskribo
pdfjs-editor-add-signature-clear-button-label = Viŝi subskribon
pdfjs-editor-add-signature-clear-button =
.title = Viŝi subskribon
pdfjs-editor-add-signature-save-checkbox = Konservi subskribon
pdfjs-editor-add-signature-save-warning-message = Vi atingis la limon de kvin konservitaj subskriboj. Forigi unu por povi konservi pli da.
pdfjs-editor-add-signature-image-upload-error-title = Ne eblis alŝuti bildon
pdfjs-editor-add-signature-image-upload-error-description = Kontrolu vian retaliron aŭ provu alŝuti alian bildon.
pdfjs-editor-add-signature-image-no-data-error-title = Ne eblas konverti tiun ĉi bildon al subskribo
pdfjs-editor-add-signature-image-no-data-error-description = Bonvolu provi alŝuti novan bildon.
pdfjs-editor-add-signature-error-close-button = Fermi
## Dialog buttons
pdfjs-editor-add-signature-cancel-button = Nuligi
pdfjs-editor-add-signature-add-button = Aldoni
pdfjs-editor-edit-signature-update-button = Ĝisdatigi
## Comment popup
pdfjs-editor-edit-comment-popup-button-label = Modifi komenton
pdfjs-editor-edit-comment-popup-button =
.title = Modifi komenton
pdfjs-editor-delete-comment-popup-button-label = Forigi komenton
pdfjs-editor-delete-comment-popup-button =
.title = Forigi komenton
pdfjs-show-comment-button =
.title = Montri komenton
## Edit a comment dialog
# An existing comment is edited
pdfjs-editor-edit-comment-dialog-title-when-editing = Modifi komenton
pdfjs-editor-edit-comment-dialog-save-button-when-editing = Ĝisdatigi
# No existing comment
pdfjs-editor-edit-comment-dialog-title-when-adding = Aldoni komenton
pdfjs-editor-edit-comment-dialog-save-button-when-adding = Aldoni
pdfjs-editor-edit-comment-dialog-text-input =
.placeholder = Ektajpi…
pdfjs-editor-edit-comment-dialog-cancel-button = Nuligi
## Edit a comment button in the editor toolbar
pdfjs-editor-edit-comment-button =
.title = Modifi komenton
pdfjs-editor-add-comment-button =
.title = Aldoni komenton
## Main menu for adding/removing signatures
pdfjs-editor-delete-signature-button1 =
.title = Forigi konservitan subskribon
pdfjs-editor-delete-signature-button-label1 = Forigi konservitan subskribon
## Editor toolbar
pdfjs-editor-add-signature-edit-button-label = Modifi priskribon
## Edit signature description dialog
pdfjs-editor-edit-signature-dialog-title = Modifi priskribon

View File

@ -112,14 +112,6 @@ pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) }
# $mb (Number) - the PDF file size in megabytes # $mb (Number) - the PDF file size in megabytes
# $b (Number) - the PDF file size in bytes # $b (Number) - the PDF file size in bytes
pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes) pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes)
# Variables:
# $size_kb (Number) - the PDF file size in kilobytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bytes)
# Variables:
# $size_mb (Number) - the PDF file size in megabytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-mb = { $size_mb } MB ({ $size_b } bytes)
pdfjs-document-properties-title = Título: pdfjs-document-properties-title = Título:
pdfjs-document-properties-author = Autor: pdfjs-document-properties-author = Autor:
pdfjs-document-properties-subject = Asunto: pdfjs-document-properties-subject = Asunto:
@ -129,10 +121,6 @@ pdfjs-document-properties-modification-date = Fecha de modificación:
# Variables: # Variables:
# $dateObj (Date) - the creation/modification date and time of the PDF file # $dateObj (Date) - the creation/modification date and time of the PDF file
pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") } pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
# Variables:
# $date (Date) - the creation/modification date of the PDF file
# $time (Time) - the creation/modification time of the PDF file
pdfjs-document-properties-date-string = { $date }, { $time }
pdfjs-document-properties-creator = Creador: pdfjs-document-properties-creator = Creador:
pdfjs-document-properties-producer = PDF Productor: pdfjs-document-properties-producer = PDF Productor:
pdfjs-document-properties-version = Versión de PDF: pdfjs-document-properties-version = Versión de PDF:
@ -275,10 +263,6 @@ pdfjs-rendering-error = Ocurrió un error al dibujar la página.
## Annotations ## Annotations
# Variables:
# $date (Date) - the modification date of the annotation
# $time (Time) - the modification time of the annotation
pdfjs-annotation-date-string = { $date }, { $time }
# .alt: This is used as a tooltip. # .alt: This is used as a tooltip.
# Variables: # Variables:
# $type (String) - an annotation type from a list defined in the PDF spec # $type (String) - an annotation type from a list defined in the PDF spec
@ -302,9 +286,13 @@ pdfjs-web-fonts-disabled = Tipografía web deshabilitada: no se pueden usar tipo
pdfjs-editor-free-text-button = pdfjs-editor-free-text-button =
.title = Texto .title = Texto
pdfjs-editor-color-picker-free-text-input =
.title = Cambiar color del texto
pdfjs-editor-free-text-button-label = Texto pdfjs-editor-free-text-button-label = Texto
pdfjs-editor-ink-button = pdfjs-editor-ink-button =
.title = Dibujar .title = Dibujar
pdfjs-editor-color-picker-ink-input =
.title = Cambiar color del dibujo
pdfjs-editor-ink-button-label = Dibujar pdfjs-editor-ink-button-label = Dibujar
pdfjs-editor-stamp-button = pdfjs-editor-stamp-button =
.title = Agregar o editar imágenes .title = Agregar o editar imágenes
@ -316,6 +304,33 @@ pdfjs-highlight-floating-button1 =
.title = Resaltar .title = Resaltar
.aria-label = Resaltar .aria-label = Resaltar
pdfjs-highlight-floating-button-label = Resaltar pdfjs-highlight-floating-button-label = Resaltar
pdfjs-comment-floating-button =
.title = Comentar
.aria-label = Comentar
pdfjs-comment-floating-button-label = Comentar
pdfjs-editor-comment-button =
.title = Comentar
.aria-label = Comentar
pdfjs-editor-comment-button-label = Comentar
pdfjs-editor-signature-button =
.title = Agregar firma
pdfjs-editor-signature-button-label = Agregar firma
## Default editor aria labels
# “Highlight” is a noun, the string is used on the editor for highlights.
pdfjs-editor-highlight-editor =
.aria-label = Editor de resaltado
# “Drawing” is a noun, the string is used on the editor for drawings.
pdfjs-editor-ink-editor =
.aria-label = Editor de dibujos
# Used when a signature editor is selected/hovered.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-signature-editor1 =
.aria-description = Editor de firmas: { $description }
pdfjs-editor-stamp-editor =
.aria-label = Editor de imágenes
## Remove button for the various kind of editor. ## Remove button for the various kind of editor.
@ -327,6 +342,8 @@ pdfjs-editor-remove-stamp-button =
.title = Eliminar imagen .title = Eliminar imagen
pdfjs-editor-remove-highlight-button = pdfjs-editor-remove-highlight-button =
.title = Eliminar resaltado .title = Eliminar resaltado
pdfjs-editor-remove-signature-button =
.title = Eliminar firma
## ##
@ -343,24 +360,41 @@ pdfjs-editor-stamp-add-image-button-label = Agregar una imagen
pdfjs-editor-free-highlight-thickness-input = Grosor pdfjs-editor-free-highlight-thickness-input = Grosor
pdfjs-editor-free-highlight-thickness-title = pdfjs-editor-free-highlight-thickness-title =
.title = Cambiar el grosor al resaltar elementos que no sean texto .title = Cambiar el grosor al resaltar elementos que no sean texto
pdfjs-editor-add-signature-container =
.aria-label = Controles de firma y firmas guardadas
pdfjs-editor-signature-add-signature-button =
.title = Agregar nueva firma
pdfjs-editor-signature-add-signature-button-label = Agregar nueva firma
# Used on the button to use an already saved signature.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-add-saved-signature-button =
.title = Firma guardada: { $description }
# .default-content is used as a placeholder in an empty text editor. # .default-content is used as a placeholder in an empty text editor.
pdfjs-free-text2 = pdfjs-free-text2 =
.aria-label = Editor de texto .aria-label = Editor de texto
.default-content = Comenzar a tipear… .default-content = Comenzar a tipear…
pdfjs-free-text = # Used to show how many comments are present in the pdf file.
.aria-label = Editor de texto # Variables:
pdfjs-free-text-default-content = Empezar a tipear… # $count (Number) - the number of comments.
pdfjs-ink = pdfjs-editor-comments-sidebar-title =
.aria-label = Editor de dibujos { $count ->
pdfjs-ink-canvas = [one] Comentario
.aria-label = Imagen creada por el usuario *[other] Comentarios
}
pdfjs-editor-comments-sidebar-close-button =
.title = Cerrar la barra lateral
.aria-label = Cerrar la barra lateral
pdfjs-editor-comments-sidebar-close-button-label = Cerrar la barra lateral
# Instructional copy to add a comment by selecting text or an annotations.
pdfjs-editor-comments-sidebar-no-comments1 = ¿Ve algo digno de mención? Resáltelo y deje un comentario.
pdfjs-editor-comments-sidebar-no-comments-link = Conocer más
## Alt-text dialog ## Alt-text dialog
pdfjs-editor-alt-text-button-label = Texto alternativo pdfjs-editor-alt-text-button-label = Texto alternativo
pdfjs-editor-alt-text-edit-button = pdfjs-editor-alt-text-edit-button =
.aria-label = Editar texto alternativo .aria-label = Editar texto alternativo
pdfjs-editor-alt-text-edit-button-label = Editar el texto alternativo
pdfjs-editor-alt-text-dialog-label = Eligir una opción pdfjs-editor-alt-text-dialog-label = Eligir una opción
pdfjs-editor-alt-text-dialog-description = El texto alternativo (texto alternativo) ayuda cuando las personas no pueden ver la imagen o cuando no se carga. pdfjs-editor-alt-text-dialog-description = El texto alternativo (texto alternativo) ayuda cuando las personas no pueden ver la imagen o cuando no se carga.
pdfjs-editor-alt-text-add-description-label = Agregar una descripción pdfjs-editor-alt-text-add-description-label = Agregar una descripción
@ -380,14 +414,6 @@ pdfjs-editor-alt-text-button =
## Editor resizers ## Editor resizers
## This is used in an aria label to help to understand the role of the resizer. ## This is used in an aria label to help to understand the role of the resizer.
pdfjs-editor-resizer-label-top-left = Esquina superior izquierda — cambiar el tamaño
pdfjs-editor-resizer-label-top-middle = Arriba en el medio — cambiar el tamaño
pdfjs-editor-resizer-label-top-right = Esquina superior derecha — cambiar el tamaño
pdfjs-editor-resizer-label-middle-right = Al centro a la derecha — cambiar el tamaño
pdfjs-editor-resizer-label-bottom-right = Esquina inferior derecha — cambiar el tamaño
pdfjs-editor-resizer-label-bottom-middle = Abajo en el medio — cambiar el tamaño
pdfjs-editor-resizer-label-bottom-left = Esquina inferior izquierda — cambiar el tamaño
pdfjs-editor-resizer-label-middle-left = Al centro a la izquierda — cambiar el tamaño
pdfjs-editor-resizer-top-left = pdfjs-editor-resizer-top-left =
.aria-label = Esquina superior izquierda — cambiar el tamaño .aria-label = Esquina superior izquierda — cambiar el tamaño
pdfjs-editor-resizer-top-middle = pdfjs-editor-resizer-top-middle =
@ -453,7 +479,6 @@ pdfjs-editor-new-alt-text-error-close-button = Cerrar
# Variables: # Variables:
# $totalSize (Number) - the total size (in MB) of the AI model. # $totalSize (Number) - the total size (in MB) of the AI model.
# $downloadedSize (Number) - the downloaded size (in MB) of the AI model. # $downloadedSize (Number) - the downloaded size (in MB) of the AI model.
# $percent (Number) - the percentage of the downloaded size.
pdfjs-editor-new-alt-text-ai-model-downloading-progress = Descargando modelo de IA de texto alternativo ({ $downloadedSize } de { $totalSize } MB) pdfjs-editor-new-alt-text-ai-model-downloading-progress = Descargando modelo de IA de texto alternativo ({ $downloadedSize } de { $totalSize } MB)
.aria-valuetext = Descargando modelo de IA de texto alternativo ({ $downloadedSize } de { $totalSize } MB) .aria-valuetext = Descargando modelo de IA de texto alternativo ({ $downloadedSize } de { $totalSize } MB)
# This is a button that users can click to edit the alt text they have already added. # This is a button that users can click to edit the alt text they have already added.
@ -493,3 +518,133 @@ pdfjs-editor-alt-text-settings-editor-title = Editor de texto alternativo
pdfjs-editor-alt-text-settings-show-dialog-button-label = Mostrar el editor de texto alternativo inmediatamente al agregar una imagen pdfjs-editor-alt-text-settings-show-dialog-button-label = Mostrar el editor de texto alternativo inmediatamente al agregar una imagen
pdfjs-editor-alt-text-settings-show-dialog-description = Te ayuda a asegurarse de que todas las imágenes tengan texto alternativo. pdfjs-editor-alt-text-settings-show-dialog-description = Te ayuda a asegurarse de que todas las imágenes tengan texto alternativo.
pdfjs-editor-alt-text-settings-close-button = Cerrar pdfjs-editor-alt-text-settings-close-button = Cerrar
## Accessibility labels (announced by screen readers) for objects added to the editor.
pdfjs-editor-highlight-added-alert = Resaltado agregado
pdfjs-editor-freetext-added-alert = Texto agregado
pdfjs-editor-ink-added-alert = Dibujo agregado
pdfjs-editor-stamp-added-alert = Imagen agregada
pdfjs-editor-signature-added-alert = Firma agregada
## "Annotations removed" bar
pdfjs-editor-undo-bar-message-highlight = Resaltado eliminado
pdfjs-editor-undo-bar-message-freetext = Texto eliminado
pdfjs-editor-undo-bar-message-ink = Dibujo eliminado
pdfjs-editor-undo-bar-message-stamp = Imagen eliminado
pdfjs-editor-undo-bar-message-signature = Firma eliminada
# Variables:
# $count (Number) - the number of removed annotations.
pdfjs-editor-undo-bar-message-multiple =
{ $count ->
[one] { $count } anotación eliminada
*[other] { $count } anotaciones eliminadas
}
pdfjs-editor-undo-bar-undo-button =
.title = Deshacer
pdfjs-editor-undo-bar-undo-button-label = Deshacer
pdfjs-editor-undo-bar-close-button =
.title = Cerrar
pdfjs-editor-undo-bar-close-button-label = Cerrar
## Add a signature dialog
pdfjs-editor-add-signature-dialog-label = Este modal permite al usuario crear una firma para agregar a un documento PDF. El usuario puede editar el nombre (que también sirve como texto alternativo) y opcionalmente guardar la firma para un uso repetido.
pdfjs-editor-add-signature-dialog-title = Agregar una firma
## Tab names
# Type is a verb (you can type your name as signature)
pdfjs-editor-add-signature-type-button = Tipear
.title = Tipear
# Draw is a verb (you can draw your signature)
pdfjs-editor-add-signature-draw-button = Dibujar
.title = Dibujar
pdfjs-editor-add-signature-image-button = Imagen
.title = Imagen
## Tab panels
pdfjs-editor-add-signature-type-input =
.aria-label = Escribir la firma
.placeholder = Escribir la firma
pdfjs-editor-add-signature-draw-placeholder = Dibujar la firma
pdfjs-editor-add-signature-draw-thickness-range-label = Grosor
# Variables:
# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.
pdfjs-editor-add-signature-draw-thickness-range =
.title = Grosor del dibujo: { $thickness }
pdfjs-editor-add-signature-image-placeholder = Arrastrar un archivo acá para subirlo
pdfjs-editor-add-signature-image-browse-link =
{ PLATFORM() ->
[macos] O seleccionar archivos de imágenes
*[other] O seleccionar archivos de imágenes
}
## Controls
pdfjs-editor-add-signature-description-label = Descripción (texto alternativo)
pdfjs-editor-add-signature-description-input =
.title = Descripción (texto alternativo)
pdfjs-editor-add-signature-description-default-when-drawing = Firma
pdfjs-editor-add-signature-clear-button-label = Borrar firma
pdfjs-editor-add-signature-clear-button =
.title = Borrar firma
pdfjs-editor-add-signature-save-checkbox = Guardar firma
pdfjs-editor-add-signature-save-warning-message = Se alcanzó el límite de 5 firmas guardadas. Elimine una para guardar más.
pdfjs-editor-add-signature-image-upload-error-title = No se pudo subir la imagen
pdfjs-editor-add-signature-image-upload-error-description = Verifique la conexión de red o pruebe con otra imagen.
pdfjs-editor-add-signature-image-no-data-error-title = No se puede convertir esta imagen en una firma
pdfjs-editor-add-signature-image-no-data-error-description = Intente subir una imagen diferente.
pdfjs-editor-add-signature-error-close-button = Cerrar
## Dialog buttons
pdfjs-editor-add-signature-cancel-button = Cancelar
pdfjs-editor-add-signature-add-button = Agregar
pdfjs-editor-edit-signature-update-button = Actualizar
## Comment popup
pdfjs-editor-edit-comment-popup-button-label = Editar comentario
pdfjs-editor-edit-comment-popup-button =
.title = Editar comentario
pdfjs-editor-delete-comment-popup-button-label = Eliminar comentario
pdfjs-editor-delete-comment-popup-button =
.title = Eliminar comentario
pdfjs-show-comment-button =
.title = Mostrar comentario
## Edit a comment dialog
# An existing comment is edited
pdfjs-editor-edit-comment-dialog-title-when-editing = Editar comentario
pdfjs-editor-edit-comment-dialog-save-button-when-editing = Actualizar
# No existing comment
pdfjs-editor-edit-comment-dialog-title-when-adding = Agregar comentario
pdfjs-editor-edit-comment-dialog-save-button-when-adding = Agregar
pdfjs-editor-edit-comment-dialog-text-input =
.placeholder = Empezar a tipear…
pdfjs-editor-edit-comment-dialog-cancel-button = Cancelar
## Edit a comment button in the editor toolbar
pdfjs-editor-edit-comment-button =
.title = Editar comentario
pdfjs-editor-add-comment-button =
.title = Agregar comentario
## Main menu for adding/removing signatures
pdfjs-editor-delete-signature-button1 =
.title = Eliminar firma guardada
pdfjs-editor-delete-signature-button-label1 = Eliminar firma guardada
## Editor toolbar
pdfjs-editor-add-signature-edit-button-label = Editar descripción
## Edit signature description dialog
pdfjs-editor-edit-signature-dialog-title = Editar descripción

View File

@ -112,14 +112,6 @@ pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) }
# $mb (Number) - the PDF file size in megabytes # $mb (Number) - the PDF file size in megabytes
# $b (Number) - the PDF file size in bytes # $b (Number) - the PDF file size in bytes
pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes) pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes)
# Variables:
# $size_kb (Number) - the PDF file size in kilobytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bytes)
# Variables:
# $size_mb (Number) - the PDF file size in megabytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-mb = { $size_mb } MB ({ $size_b } bytes)
pdfjs-document-properties-title = Título: pdfjs-document-properties-title = Título:
pdfjs-document-properties-author = Autor: pdfjs-document-properties-author = Autor:
pdfjs-document-properties-subject = Asunto: pdfjs-document-properties-subject = Asunto:
@ -129,10 +121,6 @@ pdfjs-document-properties-modification-date = Fecha de modificación:
# Variables: # Variables:
# $dateObj (Date) - the creation/modification date and time of the PDF file # $dateObj (Date) - the creation/modification date and time of the PDF file
pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") } pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
# Variables:
# $date (Date) - the creation/modification date of the PDF file
# $time (Time) - the creation/modification time of the PDF file
pdfjs-document-properties-date-string = { $date }, { $time }
pdfjs-document-properties-creator = Creador: pdfjs-document-properties-creator = Creador:
pdfjs-document-properties-producer = Productor del PDF: pdfjs-document-properties-producer = Productor del PDF:
pdfjs-document-properties-version = Versión de PDF: pdfjs-document-properties-version = Versión de PDF:
@ -275,10 +263,6 @@ pdfjs-rendering-error = Ocurrió un error al renderizar la página.
## Annotations ## Annotations
# Variables:
# $date (Date) - the modification date of the annotation
# $time (Time) - the modification time of the annotation
pdfjs-annotation-date-string = { $date }, { $time }
# .alt: This is used as a tooltip. # .alt: This is used as a tooltip.
# Variables: # Variables:
# $type (String) - an annotation type from a list defined in the PDF spec # $type (String) - an annotation type from a list defined in the PDF spec
@ -292,7 +276,7 @@ pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: "short", tim
## Password ## Password
pdfjs-password-label = Ingrese la contraseña para abrir este archivo PDF. pdfjs-password-label = Ingresa la contraseña para abrir este archivo PDF.
pdfjs-password-invalid = Contraseña inválida. Por favor, vuelve a intentarlo. pdfjs-password-invalid = Contraseña inválida. Por favor, vuelve a intentarlo.
pdfjs-password-ok-button = Aceptar pdfjs-password-ok-button = Aceptar
pdfjs-password-cancel-button = Cancelar pdfjs-password-cancel-button = Cancelar
@ -302,9 +286,13 @@ pdfjs-web-fonts-disabled = Las tipografías web están desactivadas: imposible u
pdfjs-editor-free-text-button = pdfjs-editor-free-text-button =
.title = Texto .title = Texto
pdfjs-editor-color-picker-free-text-input =
.title = Cambiar color del texto
pdfjs-editor-free-text-button-label = Texto pdfjs-editor-free-text-button-label = Texto
pdfjs-editor-ink-button = pdfjs-editor-ink-button =
.title = Dibujar .title = Dibujar
pdfjs-editor-color-picker-ink-input =
.title = Cambiar color del dibujo
pdfjs-editor-ink-button-label = Dibujar pdfjs-editor-ink-button-label = Dibujar
pdfjs-editor-stamp-button = pdfjs-editor-stamp-button =
.title = Añadir o editar imágenes .title = Añadir o editar imágenes
@ -316,6 +304,33 @@ pdfjs-highlight-floating-button1 =
.title = Destacar .title = Destacar
.aria-label = Destacar .aria-label = Destacar
pdfjs-highlight-floating-button-label = Destacar pdfjs-highlight-floating-button-label = Destacar
pdfjs-comment-floating-button =
.title = Comentario
.aria-label = Comentario
pdfjs-comment-floating-button-label = Comentario
pdfjs-editor-comment-button =
.title = Comentar
.aria-label = Comentar
pdfjs-editor-comment-button-label = Comentar
pdfjs-editor-signature-button =
.title = Añadir firma
pdfjs-editor-signature-button-label = Añadir firma
## Default editor aria labels
# “Highlight” is a noun, the string is used on the editor for highlights.
pdfjs-editor-highlight-editor =
.aria-label = Editor de destacados
# “Drawing” is a noun, the string is used on the editor for drawings.
pdfjs-editor-ink-editor =
.aria-label = Editor de dibujos
# Used when a signature editor is selected/hovered.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-signature-editor1 =
.aria-description = Editor de firmas: { $description }
pdfjs-editor-stamp-editor =
.aria-label = Editor de imágenes
## Remove button for the various kind of editor. ## Remove button for the various kind of editor.
@ -327,6 +342,8 @@ pdfjs-editor-remove-stamp-button =
.title = Eliminar imagen .title = Eliminar imagen
pdfjs-editor-remove-highlight-button = pdfjs-editor-remove-highlight-button =
.title = Quitar resaltado .title = Quitar resaltado
pdfjs-editor-remove-signature-button =
.title = Eliminar firma
## ##
@ -343,24 +360,41 @@ pdfjs-editor-stamp-add-image-button-label = Añadir imagen
pdfjs-editor-free-highlight-thickness-input = Grosor pdfjs-editor-free-highlight-thickness-input = Grosor
pdfjs-editor-free-highlight-thickness-title = pdfjs-editor-free-highlight-thickness-title =
.title = Cambia el grosor al resaltar elementos que no sean texto .title = Cambia el grosor al resaltar elementos que no sean texto
pdfjs-editor-add-signature-container =
.aria-label = Controles de firma y firmas guardadas
pdfjs-editor-signature-add-signature-button =
.title = Añadir nueva firma
pdfjs-editor-signature-add-signature-button-label = Añadir nueva firma
# Used on the button to use an already saved signature.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-add-saved-signature-button =
.title = Firma guardada: { $description }
# .default-content is used as a placeholder in an empty text editor. # .default-content is used as a placeholder in an empty text editor.
pdfjs-free-text2 = pdfjs-free-text2 =
.aria-label = Editor de texto .aria-label = Editor de texto
.default-content = Empieza a escribir… .default-content = Empieza a escribir…
pdfjs-free-text = # Used to show how many comments are present in the pdf file.
.aria-label = Editor de texto # Variables:
pdfjs-free-text-default-content = Empieza a escribir… # $count (Number) - the number of comments.
pdfjs-ink = pdfjs-editor-comments-sidebar-title =
.aria-label = Editor de dibujos { $count ->
pdfjs-ink-canvas = [one] Comentario
.aria-label = Imagen creada por el usuario *[other] Comentarios
}
pdfjs-editor-comments-sidebar-close-button =
.title = Cerrar la barra lateral
.aria-label = Cerrar la barra lateral
pdfjs-editor-comments-sidebar-close-button-label = Cerrar la barra lateral
# Instructional copy to add a comment by selecting text or an annotations.
pdfjs-editor-comments-sidebar-no-comments1 = ¿Ves algo interesante? Resáltalo y deja un comentario.
pdfjs-editor-comments-sidebar-no-comments-link = Más información
## Alt-text dialog ## Alt-text dialog
pdfjs-editor-alt-text-button-label = Texto alternativo pdfjs-editor-alt-text-button-label = Texto alternativo
pdfjs-editor-alt-text-edit-button = pdfjs-editor-alt-text-edit-button =
.aria-label = Editar texto alternativo .aria-label = Editar texto alternativo
pdfjs-editor-alt-text-edit-button-label = Editar texto alternativo
pdfjs-editor-alt-text-dialog-label = Elige una opción pdfjs-editor-alt-text-dialog-label = Elige una opción
pdfjs-editor-alt-text-dialog-description = El texto alternativo (alt text) ayuda cuando las personas no pueden ver la imagen o cuando no se carga. pdfjs-editor-alt-text-dialog-description = El texto alternativo (alt text) ayuda cuando las personas no pueden ver la imagen o cuando no se carga.
pdfjs-editor-alt-text-add-description-label = Añade una descripción pdfjs-editor-alt-text-add-description-label = Añade una descripción
@ -380,14 +414,6 @@ pdfjs-editor-alt-text-button =
## Editor resizers ## Editor resizers
## This is used in an aria label to help to understand the role of the resizer. ## This is used in an aria label to help to understand the role of the resizer.
pdfjs-editor-resizer-label-top-left = Esquina superior izquierda — cambiar el tamaño
pdfjs-editor-resizer-label-top-middle = Borde superior en el medio — cambiar el tamaño
pdfjs-editor-resizer-label-top-right = Esquina superior derecha — cambiar el tamaño
pdfjs-editor-resizer-label-middle-right = Borde derecho en el medio — cambiar el tamaño
pdfjs-editor-resizer-label-bottom-right = Esquina inferior derecha — cambiar el tamaño
pdfjs-editor-resizer-label-bottom-middle = Borde inferior en el medio — cambiar el tamaño
pdfjs-editor-resizer-label-bottom-left = Esquina inferior izquierda — cambiar el tamaño
pdfjs-editor-resizer-label-middle-left = Borde izquierdo en el medio — cambiar el tamaño
pdfjs-editor-resizer-top-left = pdfjs-editor-resizer-top-left =
.aria-label = Esquina superior izquierda — cambiar el tamaño .aria-label = Esquina superior izquierda — cambiar el tamaño
pdfjs-editor-resizer-top-middle = pdfjs-editor-resizer-top-middle =
@ -453,7 +479,6 @@ pdfjs-editor-new-alt-text-error-close-button = Cerrar
# Variables: # Variables:
# $totalSize (Number) - the total size (in MB) of the AI model. # $totalSize (Number) - the total size (in MB) of the AI model.
# $downloadedSize (Number) - the downloaded size (in MB) of the AI model. # $downloadedSize (Number) - the downloaded size (in MB) of the AI model.
# $percent (Number) - the percentage of the downloaded size.
pdfjs-editor-new-alt-text-ai-model-downloading-progress = Descargando el modelo de IA de texto alternativo ({ $downloadedSize } de { $totalSize } MB) pdfjs-editor-new-alt-text-ai-model-downloading-progress = Descargando el modelo de IA de texto alternativo ({ $downloadedSize } de { $totalSize } MB)
.aria-valuetext = Descargando el modelo de IA de texto alternativo ({ $downloadedSize } de { $totalSize } MB) .aria-valuetext = Descargando el modelo de IA de texto alternativo ({ $downloadedSize } de { $totalSize } MB)
# This is a button that users can click to edit the alt text they have already added. # This is a button that users can click to edit the alt text they have already added.
@ -493,3 +518,133 @@ pdfjs-editor-alt-text-settings-editor-title = Editor de texto alternativo
pdfjs-editor-alt-text-settings-show-dialog-button-label = Mostrar el editor de texto alternativo inmediatamente al añadir una imagen pdfjs-editor-alt-text-settings-show-dialog-button-label = Mostrar el editor de texto alternativo inmediatamente al añadir una imagen
pdfjs-editor-alt-text-settings-show-dialog-description = Te ayuda a asegurarte de que todas tus imágenes tengan texto alternativo. pdfjs-editor-alt-text-settings-show-dialog-description = Te ayuda a asegurarte de que todas tus imágenes tengan texto alternativo.
pdfjs-editor-alt-text-settings-close-button = Cerrar pdfjs-editor-alt-text-settings-close-button = Cerrar
## Accessibility labels (announced by screen readers) for objects added to the editor.
pdfjs-editor-highlight-added-alert = Destacado añadido
pdfjs-editor-freetext-added-alert = Texto añadido
pdfjs-editor-ink-added-alert = Dibujo añadido
pdfjs-editor-stamp-added-alert = Imagen añadida
pdfjs-editor-signature-added-alert = Firma añadida
## "Annotations removed" bar
pdfjs-editor-undo-bar-message-highlight = Resaltado eliminado
pdfjs-editor-undo-bar-message-freetext = Texto eliminado
pdfjs-editor-undo-bar-message-ink = Dibujo eliminado
pdfjs-editor-undo-bar-message-stamp = Imagen eliminada
pdfjs-editor-undo-bar-message-signature = Firma eliminada
# Variables:
# $count (Number) - the number of removed annotations.
pdfjs-editor-undo-bar-message-multiple =
{ $count ->
[one] { $count } anotación eliminada
*[other] { $count } anotaciones eliminadas
}
pdfjs-editor-undo-bar-undo-button =
.title = Deshacer
pdfjs-editor-undo-bar-undo-button-label = Deshacer
pdfjs-editor-undo-bar-close-button =
.title = Cerrar
pdfjs-editor-undo-bar-close-button-label = Cerrar
## Add a signature dialog
pdfjs-editor-add-signature-dialog-label = Este modal permite al usuario crear una firma para agregarla a un documento PDF. El usuario puede editar el nombre (que también sirve como texto alternativo) y, opcionalmente, guardar la firma para usarla nuevamente.
pdfjs-editor-add-signature-dialog-title = Añadir una firma
## Tab names
# Type is a verb (you can type your name as signature)
pdfjs-editor-add-signature-type-button = Escribir
.title = Escribir
# Draw is a verb (you can draw your signature)
pdfjs-editor-add-signature-draw-button = Dibujar
.title = Dibujar
pdfjs-editor-add-signature-image-button = Imagen
.title = Imagen
## Tab panels
pdfjs-editor-add-signature-type-input =
.aria-label = Escribe tu firma
.placeholder = Escribe tu firma
pdfjs-editor-add-signature-draw-placeholder = Dibuja tu firma
pdfjs-editor-add-signature-draw-thickness-range-label = Grosor
# Variables:
# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.
pdfjs-editor-add-signature-draw-thickness-range =
.title = Grosor del dibujo: { $thickness }
pdfjs-editor-add-signature-image-placeholder = Arrastre un archivo aquí para cargarlo
pdfjs-editor-add-signature-image-browse-link =
{ PLATFORM() ->
[macos] O elige archivos de imagen
*[other] O busca archivos de imagen
}
## Controls
pdfjs-editor-add-signature-description-label = Descripción (texto alternativo)
pdfjs-editor-add-signature-description-input =
.title = Descripción (texto alternativo)
pdfjs-editor-add-signature-description-default-when-drawing = Firma
pdfjs-editor-add-signature-clear-button-label = Limpiar firma
pdfjs-editor-add-signature-clear-button =
.title = Limpiar firma
pdfjs-editor-add-signature-save-checkbox = Guardar firma
pdfjs-editor-add-signature-save-warning-message = Has alcanzado el límite de 5 firmas guardadas. Elimina una para guardar más.
pdfjs-editor-add-signature-image-upload-error-title = No se pudo subir la imagen
pdfjs-editor-add-signature-image-upload-error-description = Verifica tu conexión de red o prueba con otra imagen.
pdfjs-editor-add-signature-image-no-data-error-title = No se puede convertir esta imagen en una firma
pdfjs-editor-add-signature-image-no-data-error-description = Por favor, intenta cargar una imagen diferente.
pdfjs-editor-add-signature-error-close-button = Cerrar
## Dialog buttons
pdfjs-editor-add-signature-cancel-button = Cancelar
pdfjs-editor-add-signature-add-button = Añadir
pdfjs-editor-edit-signature-update-button = Actualizar
## Comment popup
pdfjs-editor-edit-comment-popup-button-label = Editar comentario
pdfjs-editor-edit-comment-popup-button =
.title = Editar comentario
pdfjs-editor-delete-comment-popup-button-label = Eliminar comentario
pdfjs-editor-delete-comment-popup-button =
.title = Eliminar comentario
pdfjs-show-comment-button =
.title = Mostrar comentario
## Edit a comment dialog
# An existing comment is edited
pdfjs-editor-edit-comment-dialog-title-when-editing = Editar comentario
pdfjs-editor-edit-comment-dialog-save-button-when-editing = Actualizar
# No existing comment
pdfjs-editor-edit-comment-dialog-title-when-adding = Añadir comentario
pdfjs-editor-edit-comment-dialog-save-button-when-adding = Añadir
pdfjs-editor-edit-comment-dialog-text-input =
.placeholder = Empieza a escribir…
pdfjs-editor-edit-comment-dialog-cancel-button = Cancelar
## Edit a comment button in the editor toolbar
pdfjs-editor-edit-comment-button =
.title = Editar comentario
pdfjs-editor-add-comment-button =
.title = Añadir comentario
## Main menu for adding/removing signatures
pdfjs-editor-delete-signature-button1 =
.title = Eliminar firma guardada
pdfjs-editor-delete-signature-button-label1 = Eliminar firma guardada
## Editor toolbar
pdfjs-editor-add-signature-edit-button-label = Editar descripción
## Edit signature description dialog
pdfjs-editor-edit-signature-dialog-title = Editar descripción

View File

@ -112,14 +112,6 @@ pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) }
# $mb (Number) - the PDF file size in megabytes # $mb (Number) - the PDF file size in megabytes
# $b (Number) - the PDF file size in bytes # $b (Number) - the PDF file size in bytes
pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes) pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes)
# Variables:
# $size_kb (Number) - the PDF file size in kilobytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bytes)
# Variables:
# $size_mb (Number) - the PDF file size in megabytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-mb = { $size_mb } MB ({ $size_b } bytes)
pdfjs-document-properties-title = Título: pdfjs-document-properties-title = Título:
pdfjs-document-properties-author = Autor: pdfjs-document-properties-author = Autor:
pdfjs-document-properties-subject = Asunto: pdfjs-document-properties-subject = Asunto:
@ -129,10 +121,6 @@ pdfjs-document-properties-modification-date = Fecha de modificación:
# Variables: # Variables:
# $dateObj (Date) - the creation/modification date and time of the PDF file # $dateObj (Date) - the creation/modification date and time of the PDF file
pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") } pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
# Variables:
# $date (Date) - the creation/modification date of the PDF file
# $time (Time) - the creation/modification time of the PDF file
pdfjs-document-properties-date-string = { $date }, { $time }
pdfjs-document-properties-creator = Creador: pdfjs-document-properties-creator = Creador:
pdfjs-document-properties-producer = Productor PDF: pdfjs-document-properties-producer = Productor PDF:
pdfjs-document-properties-version = Versión PDF: pdfjs-document-properties-version = Versión PDF:
@ -275,10 +263,6 @@ pdfjs-rendering-error = Ocurrió un error al renderizar la página.
## Annotations ## Annotations
# Variables:
# $date (Date) - the modification date of the annotation
# $time (Time) - the modification time of the annotation
pdfjs-annotation-date-string = { $date }, { $time }
# .alt: This is used as a tooltip. # .alt: This is used as a tooltip.
# Variables: # Variables:
# $type (String) - an annotation type from a list defined in the PDF spec # $type (String) - an annotation type from a list defined in the PDF spec
@ -302,9 +286,13 @@ pdfjs-web-fonts-disabled = Las tipografías web están desactivadas: es imposibl
pdfjs-editor-free-text-button = pdfjs-editor-free-text-button =
.title = Texto .title = Texto
pdfjs-editor-color-picker-free-text-input =
.title = Cambiar el color del texto
pdfjs-editor-free-text-button-label = Texto pdfjs-editor-free-text-button-label = Texto
pdfjs-editor-ink-button = pdfjs-editor-ink-button =
.title = Dibujar .title = Dibujar
pdfjs-editor-color-picker-ink-input =
.title = Cambiar el color del dibujo
pdfjs-editor-ink-button-label = Dibujar pdfjs-editor-ink-button-label = Dibujar
pdfjs-editor-stamp-button = pdfjs-editor-stamp-button =
.title = Añadir o editar imágenes .title = Añadir o editar imágenes
@ -316,6 +304,33 @@ pdfjs-highlight-floating-button1 =
.title = Resaltar .title = Resaltar
.aria-label = Resaltar .aria-label = Resaltar
pdfjs-highlight-floating-button-label = Resaltar pdfjs-highlight-floating-button-label = Resaltar
pdfjs-comment-floating-button =
.title = Comentario
.aria-label = Comentario
pdfjs-comment-floating-button-label = Comentario
pdfjs-editor-comment-button =
.title = Comentario
.aria-label = Comentario
pdfjs-editor-comment-button-label = Comentario
pdfjs-editor-signature-button =
.title = Añadir firma
pdfjs-editor-signature-button-label = Añadir firma
## Default editor aria labels
# “Highlight” is a noun, the string is used on the editor for highlights.
pdfjs-editor-highlight-editor =
.aria-label = Editor de resaltado
# “Drawing” is a noun, the string is used on the editor for drawings.
pdfjs-editor-ink-editor =
.aria-label = Editor de dibujos
# Used when a signature editor is selected/hovered.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-signature-editor1 =
.aria-description = Editor de firmas: { $description }
pdfjs-editor-stamp-editor =
.aria-label = Editor de imágenes
## Remove button for the various kind of editor. ## Remove button for the various kind of editor.
@ -327,6 +342,8 @@ pdfjs-editor-remove-stamp-button =
.title = Eliminar imagen .title = Eliminar imagen
pdfjs-editor-remove-highlight-button = pdfjs-editor-remove-highlight-button =
.title = Quitar resaltado .title = Quitar resaltado
pdfjs-editor-remove-signature-button =
.title = Eliminar firma
## ##
@ -343,24 +360,41 @@ pdfjs-editor-stamp-add-image-button-label = Añadir imagen
pdfjs-editor-free-highlight-thickness-input = Grosor pdfjs-editor-free-highlight-thickness-input = Grosor
pdfjs-editor-free-highlight-thickness-title = pdfjs-editor-free-highlight-thickness-title =
.title = Cambiar el grosor al resaltar elementos que no sean texto .title = Cambiar el grosor al resaltar elementos que no sean texto
pdfjs-editor-add-signature-container =
.aria-label = Controles de firma y firmas guardadas
pdfjs-editor-signature-add-signature-button =
.title = Añadir nueva firma
pdfjs-editor-signature-add-signature-button-label = Añadir nueva firma
# Used on the button to use an already saved signature.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-add-saved-signature-button =
.title = Firma guardada: { $description }
# .default-content is used as a placeholder in an empty text editor. # .default-content is used as a placeholder in an empty text editor.
pdfjs-free-text2 = pdfjs-free-text2 =
.aria-label = Editor de texto .aria-label = Editor de texto
.default-content = Empiece a escribir… .default-content = Empiece a escribir…
pdfjs-free-text = # Used to show how many comments are present in the pdf file.
.aria-label = Editor de texto # Variables:
pdfjs-free-text-default-content = Empezar a escribir… # $count (Number) - the number of comments.
pdfjs-ink = pdfjs-editor-comments-sidebar-title =
.aria-label = Editor de dibujos { $count ->
pdfjs-ink-canvas = [one] Comentario
.aria-label = Imagen creada por el usuario *[other] Comentarios
}
pdfjs-editor-comments-sidebar-close-button =
.title = Cerrar la barra lateral
.aria-label = Cerrar la barra lateral
pdfjs-editor-comments-sidebar-close-button-label = Cerrar la barra lateral
# Instructional copy to add a comment by selecting text or an annotations.
pdfjs-editor-comments-sidebar-no-comments1 = ¿Ve algo interesante? Resáltelo y deje un comentario.
pdfjs-editor-comments-sidebar-no-comments-link = Saber más
## Alt-text dialog ## Alt-text dialog
pdfjs-editor-alt-text-button-label = Texto alternativo pdfjs-editor-alt-text-button-label = Texto alternativo
pdfjs-editor-alt-text-edit-button = pdfjs-editor-alt-text-edit-button =
.aria-label = Editar el texto alternativo .aria-label = Editar el texto alternativo
pdfjs-editor-alt-text-edit-button-label = Editar el texto alternativo
pdfjs-editor-alt-text-dialog-label = Eligir una opción pdfjs-editor-alt-text-dialog-label = Eligir una opción
pdfjs-editor-alt-text-dialog-description = El texto alternativo (texto alternativo) ayuda cuando las personas no pueden ver la imagen o cuando no se carga. pdfjs-editor-alt-text-dialog-description = El texto alternativo (texto alternativo) ayuda cuando las personas no pueden ver la imagen o cuando no se carga.
pdfjs-editor-alt-text-add-description-label = Añadir una descripción pdfjs-editor-alt-text-add-description-label = Añadir una descripción
@ -380,14 +414,6 @@ pdfjs-editor-alt-text-button =
## Editor resizers ## Editor resizers
## This is used in an aria label to help to understand the role of the resizer. ## This is used in an aria label to help to understand the role of the resizer.
pdfjs-editor-resizer-label-top-left = Esquina superior izquierda — redimensionar
pdfjs-editor-resizer-label-top-middle = Borde superior en el medio — redimensionar
pdfjs-editor-resizer-label-top-right = Esquina superior derecha — redimensionar
pdfjs-editor-resizer-label-middle-right = Borde derecho en el medio — redimensionar
pdfjs-editor-resizer-label-bottom-right = Esquina inferior derecha — redimensionar
pdfjs-editor-resizer-label-bottom-middle = Borde inferior en el medio — redimensionar
pdfjs-editor-resizer-label-bottom-left = Esquina inferior izquierda — redimensionar
pdfjs-editor-resizer-label-middle-left = Borde izquierdo en el medio — redimensionar
pdfjs-editor-resizer-top-left = pdfjs-editor-resizer-top-left =
.aria-label = Esquina superior izquierda — redimensionar .aria-label = Esquina superior izquierda — redimensionar
pdfjs-editor-resizer-top-middle = pdfjs-editor-resizer-top-middle =
@ -453,7 +479,6 @@ pdfjs-editor-new-alt-text-error-close-button = Cerrar
# Variables: # Variables:
# $totalSize (Number) - the total size (in MB) of the AI model. # $totalSize (Number) - the total size (in MB) of the AI model.
# $downloadedSize (Number) - the downloaded size (in MB) of the AI model. # $downloadedSize (Number) - the downloaded size (in MB) of the AI model.
# $percent (Number) - the percentage of the downloaded size.
pdfjs-editor-new-alt-text-ai-model-downloading-progress = Descargando el modelo de IA de texto alternativo ({ $downloadedSize } de { $totalSize } MB) pdfjs-editor-new-alt-text-ai-model-downloading-progress = Descargando el modelo de IA de texto alternativo ({ $downloadedSize } de { $totalSize } MB)
.aria-valuetext = Descargando el modelo de IA de texto alternativo ({ $downloadedSize } de { $totalSize } MB) .aria-valuetext = Descargando el modelo de IA de texto alternativo ({ $downloadedSize } de { $totalSize } MB)
# This is a button that users can click to edit the alt text they have already added. # This is a button that users can click to edit the alt text they have already added.
@ -493,3 +518,133 @@ pdfjs-editor-alt-text-settings-editor-title = Editor de texto alternativo
pdfjs-editor-alt-text-settings-show-dialog-button-label = Mostrar el editor de texto alternativo inmediatamente al añadir una imagen pdfjs-editor-alt-text-settings-show-dialog-button-label = Mostrar el editor de texto alternativo inmediatamente al añadir una imagen
pdfjs-editor-alt-text-settings-show-dialog-description = Le ayuda a asegurarse de que todas sus imágenes tengan texto alternativo. pdfjs-editor-alt-text-settings-show-dialog-description = Le ayuda a asegurarse de que todas sus imágenes tengan texto alternativo.
pdfjs-editor-alt-text-settings-close-button = Cerrar pdfjs-editor-alt-text-settings-close-button = Cerrar
## Accessibility labels (announced by screen readers) for objects added to the editor.
pdfjs-editor-highlight-added-alert = Resaltado añadido
pdfjs-editor-freetext-added-alert = Texto añadido
pdfjs-editor-ink-added-alert = Dibujo añadido
pdfjs-editor-stamp-added-alert = Imagen añadida
pdfjs-editor-signature-added-alert = Firma añadida
## "Annotations removed" bar
pdfjs-editor-undo-bar-message-highlight = Resaltado eliminado
pdfjs-editor-undo-bar-message-freetext = Texto eliminado
pdfjs-editor-undo-bar-message-ink = Dibujo eliminado
pdfjs-editor-undo-bar-message-stamp = Imagen eliminada
pdfjs-editor-undo-bar-message-signature = Firma eliminada
# Variables:
# $count (Number) - the number of removed annotations.
pdfjs-editor-undo-bar-message-multiple =
{ $count ->
[one] { $count } anotación eliminada
*[other] { $count } anotaciones eliminadas
}
pdfjs-editor-undo-bar-undo-button =
.title = Deshacer
pdfjs-editor-undo-bar-undo-button-label = Deshacer
pdfjs-editor-undo-bar-close-button =
.title = Cerrar
pdfjs-editor-undo-bar-close-button-label = Cerrar
## Add a signature dialog
pdfjs-editor-add-signature-dialog-label = Este modal permite al usuario crear una firma para añadirla a un documento PDF. El usuario puede editar el nombre (que también sirve como texto alternativo) y, opcionalmente, guardar la firma para usarla nuevamente.
pdfjs-editor-add-signature-dialog-title = Añadir una firma
## Tab names
# Type is a verb (you can type your name as signature)
pdfjs-editor-add-signature-type-button = Escribir
.title = Escribir
# Draw is a verb (you can draw your signature)
pdfjs-editor-add-signature-draw-button = Dibujar
.title = Dibujar
pdfjs-editor-add-signature-image-button = Imagen
.title = Imagen
## Tab panels
pdfjs-editor-add-signature-type-input =
.aria-label = Escriba su firma
.placeholder = Escriba su firma
pdfjs-editor-add-signature-draw-placeholder = Dibuje su firma
pdfjs-editor-add-signature-draw-thickness-range-label = Grosor
# Variables:
# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.
pdfjs-editor-add-signature-draw-thickness-range =
.title = Grosor del dibujo: { $thickness }
pdfjs-editor-add-signature-image-placeholder = Arrastre un archivo aquí para cargarlo
pdfjs-editor-add-signature-image-browse-link =
{ PLATFORM() ->
[macos] O seleccione archivos de imágenes
*[other] O seleccione archivos de imágenes
}
## Controls
pdfjs-editor-add-signature-description-label = Descripción (texto alternativo)
pdfjs-editor-add-signature-description-input =
.title = Descripción (texto alternativo)
pdfjs-editor-add-signature-description-default-when-drawing = Firma
pdfjs-editor-add-signature-clear-button-label = Borrar firma
pdfjs-editor-add-signature-clear-button =
.title = Borrar firma
pdfjs-editor-add-signature-save-checkbox = Guardar firma
pdfjs-editor-add-signature-save-warning-message = Ha alcanzado el límite de 5 firmas guardadas. Elimine una para guardar más.
pdfjs-editor-add-signature-image-upload-error-title = No se ha podido subir la imagen
pdfjs-editor-add-signature-image-upload-error-description = Compruebe su conexión de red o pruebe con otra imagen.
pdfjs-editor-add-signature-image-no-data-error-title = No se puede convertir esta imagen en una firma
pdfjs-editor-add-signature-image-no-data-error-description = Por favor, intente cargar una imagen diferente.
pdfjs-editor-add-signature-error-close-button = Cerrar
## Dialog buttons
pdfjs-editor-add-signature-cancel-button = Cancelar
pdfjs-editor-add-signature-add-button = Añadir
pdfjs-editor-edit-signature-update-button = Actualizar
## Comment popup
pdfjs-editor-edit-comment-popup-button-label = Editar comentario
pdfjs-editor-edit-comment-popup-button =
.title = Editar comentario
pdfjs-editor-delete-comment-popup-button-label = Eliminar comentario
pdfjs-editor-delete-comment-popup-button =
.title = Eliminar comentario
pdfjs-show-comment-button =
.title = Mostrar comentario
## Edit a comment dialog
# An existing comment is edited
pdfjs-editor-edit-comment-dialog-title-when-editing = Editar comentario
pdfjs-editor-edit-comment-dialog-save-button-when-editing = Actualizar
# No existing comment
pdfjs-editor-edit-comment-dialog-title-when-adding = Añadir comentario
pdfjs-editor-edit-comment-dialog-save-button-when-adding = Añadir
pdfjs-editor-edit-comment-dialog-text-input =
.placeholder = Empezar a escribir…
pdfjs-editor-edit-comment-dialog-cancel-button = Cancelar
## Edit a comment button in the editor toolbar
pdfjs-editor-edit-comment-button =
.title = Editar comentario
pdfjs-editor-add-comment-button =
.title = Añadir comentario
## Main menu for adding/removing signatures
pdfjs-editor-delete-signature-button1 =
.title = Eliminar firma guardada
pdfjs-editor-delete-signature-button-label1 = Eliminar firma guardada
## Editor toolbar
pdfjs-editor-add-signature-edit-button-label = Editar descripción
## Edit signature description dialog
pdfjs-editor-edit-signature-dialog-title = Editar descripción

View File

@ -105,13 +105,13 @@ pdfjs-document-properties-button-label = Propiedades del documento…
pdfjs-document-properties-file-name = Nombre del archivo: pdfjs-document-properties-file-name = Nombre del archivo:
pdfjs-document-properties-file-size = Tamaño del archivo: pdfjs-document-properties-file-size = Tamaño del archivo:
# Variables: # Variables:
# $size_kb (Number) - the PDF file size in kilobytes # $kb (Number) - the PDF file size in kilobytes
# $size_b (Number) - the PDF file size in bytes # $b (Number) - the PDF file size in bytes
pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bytes) pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } bytes)
# Variables: # Variables:
# $size_mb (Number) - the PDF file size in megabytes # $mb (Number) - the PDF file size in megabytes
# $size_b (Number) - the PDF file size in bytes # $b (Number) - the PDF file size in bytes
pdfjs-document-properties-mb = { $size_mb } MB ({ $size_b } bytes) pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes)
pdfjs-document-properties-title = Título: pdfjs-document-properties-title = Título:
pdfjs-document-properties-author = Autor: pdfjs-document-properties-author = Autor:
pdfjs-document-properties-subject = Asunto: pdfjs-document-properties-subject = Asunto:
@ -119,9 +119,8 @@ pdfjs-document-properties-keywords = Palabras claves:
pdfjs-document-properties-creation-date = Fecha de creación: pdfjs-document-properties-creation-date = Fecha de creación:
pdfjs-document-properties-modification-date = Fecha de modificación: pdfjs-document-properties-modification-date = Fecha de modificación:
# Variables: # Variables:
# $date (Date) - the creation/modification date of the PDF file # $dateObj (Date) - the creation/modification date and time of the PDF file
# $time (Time) - the creation/modification time of the PDF file pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
pdfjs-document-properties-date-string = { $date }, { $time }
pdfjs-document-properties-creator = Creador: pdfjs-document-properties-creator = Creador:
pdfjs-document-properties-producer = Productor PDF: pdfjs-document-properties-producer = Productor PDF:
pdfjs-document-properties-version = Versión PDF: pdfjs-document-properties-version = Versión PDF:
@ -264,10 +263,6 @@ pdfjs-rendering-error = Un error ocurrió al renderizar la página.
## Annotations ## Annotations
# Variables:
# $date (Date) - the modification date of the annotation
# $time (Time) - the modification time of the annotation
pdfjs-annotation-date-string = { $date }, { $time }
# .alt: This is used as a tooltip. # .alt: This is used as a tooltip.
# Variables: # Variables:
# $type (String) - an annotation type from a list defined in the PDF spec # $type (String) - an annotation type from a list defined in the PDF spec
@ -275,6 +270,9 @@ pdfjs-annotation-date-string = { $date }, { $time }
# Some common types are e.g.: "Check", "Text", "Comment", "Note" # Some common types are e.g.: "Check", "Text", "Comment", "Note"
pdfjs-text-annotation-type = pdfjs-text-annotation-type =
.alt = [{ $type } anotación] .alt = [{ $type } anotación]
# Variables:
# $dateObj (Date) - the modification date and time of the annotation
pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
## Password ## Password
@ -288,9 +286,13 @@ pdfjs-web-fonts-disabled = Las fuentes web están desactivadas: es imposible usa
pdfjs-editor-free-text-button = pdfjs-editor-free-text-button =
.title = Texto .title = Texto
pdfjs-editor-color-picker-free-text-input =
.title = Cambiar el color del texto
pdfjs-editor-free-text-button-label = Texto pdfjs-editor-free-text-button-label = Texto
pdfjs-editor-ink-button = pdfjs-editor-ink-button =
.title = Dibujar .title = Dibujar
pdfjs-editor-color-picker-ink-input =
.title = Cambiar el color del dibujo
pdfjs-editor-ink-button-label = Dibujar pdfjs-editor-ink-button-label = Dibujar
pdfjs-editor-stamp-button = pdfjs-editor-stamp-button =
.title = Agregar o editar imágenes .title = Agregar o editar imágenes
@ -302,6 +304,33 @@ pdfjs-highlight-floating-button1 =
.title = Destacados .title = Destacados
.aria-label = Destacados .aria-label = Destacados
pdfjs-highlight-floating-button-label = Destacados pdfjs-highlight-floating-button-label = Destacados
pdfjs-comment-floating-button =
.title = Comentario
.aria-label = Comentario
pdfjs-comment-floating-button-label = Comentario
pdfjs-editor-comment-button =
.title = Comentario
.aria-label = Comentario
pdfjs-editor-comment-button-label = Comentario
pdfjs-editor-signature-button =
.title = Agregar firma
pdfjs-editor-signature-button-label = Añadir firma
## Default editor aria labels
# “Highlight” is a noun, the string is used on the editor for highlights.
pdfjs-editor-highlight-editor =
.aria-label = Editor de destacados
# “Drawing” is a noun, the string is used on the editor for drawings.
pdfjs-editor-ink-editor =
.aria-label = Editor de dibujos
# Used when a signature editor is selected/hovered.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-signature-editor1 =
.aria-description = Editor de firmas: { $description }
pdfjs-editor-stamp-editor =
.aria-label = Editor de imágenes
## Remove button for the various kind of editor. ## Remove button for the various kind of editor.
@ -313,6 +342,8 @@ pdfjs-editor-remove-stamp-button =
.title = Eliminar imagen .title = Eliminar imagen
pdfjs-editor-remove-highlight-button = pdfjs-editor-remove-highlight-button =
.title = Eliminar destacado .title = Eliminar destacado
pdfjs-editor-remove-signature-button =
.title = Eliminar firma
## ##
@ -329,19 +360,41 @@ pdfjs-editor-stamp-add-image-button-label = Agregar imagen
pdfjs-editor-free-highlight-thickness-input = Espesor pdfjs-editor-free-highlight-thickness-input = Espesor
pdfjs-editor-free-highlight-thickness-title = pdfjs-editor-free-highlight-thickness-title =
.title = Cambiar el grosor al resaltar elementos que no sean texto .title = Cambiar el grosor al resaltar elementos que no sean texto
pdfjs-free-text = pdfjs-editor-add-signature-container =
.aria-label = Controles de firma y firmas guardadas
pdfjs-editor-signature-add-signature-button =
.title = Agregar nueva firma
pdfjs-editor-signature-add-signature-button-label = Agregar nueva firma
# Used on the button to use an already saved signature.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-add-saved-signature-button =
.title = Firma guardada: { $description }
# .default-content is used as a placeholder in an empty text editor.
pdfjs-free-text2 =
.aria-label = Editor de texto .aria-label = Editor de texto
pdfjs-free-text-default-content = Empieza a escribir… .default-content = Comenzar a escribir…
pdfjs-ink = # Used to show how many comments are present in the pdf file.
.aria-label = Editor de dibujo # Variables:
pdfjs-ink-canvas = # $count (Number) - the number of comments.
.aria-label = Imagen creada por el usuario pdfjs-editor-comments-sidebar-title =
{ $count ->
[one] Comentario
*[other] Comentarios
}
pdfjs-editor-comments-sidebar-close-button =
.title = Cerrar la barra lateral
.aria-label = Cerrar la barra lateral
pdfjs-editor-comments-sidebar-close-button-label = Cerrar la barra lateral
# Instructional copy to add a comment by selecting text or an annotations.
pdfjs-editor-comments-sidebar-no-comments1 = ¿Ves algo interesante? Resáltalo y deja un comentario.
pdfjs-editor-comments-sidebar-no-comments-link = Saber más
## Alt-text dialog ## Alt-text dialog
# Alternative text (alt text) helps when people can't see the image.
pdfjs-editor-alt-text-button-label = Texto alternativo pdfjs-editor-alt-text-button-label = Texto alternativo
pdfjs-editor-alt-text-edit-button-label = Editar texto alternativo pdfjs-editor-alt-text-edit-button =
.aria-label = Editar texto alternativo
pdfjs-editor-alt-text-dialog-label = Elige una opción pdfjs-editor-alt-text-dialog-label = Elige una opción
pdfjs-editor-alt-text-dialog-description = El texto alternativo (texto alternativo) ayuda cuando las personas no pueden ver la imagen o cuando no se carga. pdfjs-editor-alt-text-dialog-description = El texto alternativo (texto alternativo) ayuda cuando las personas no pueden ver la imagen o cuando no se carga.
pdfjs-editor-alt-text-add-description-label = Añadir una descripción pdfjs-editor-alt-text-add-description-label = Añadir una descripción
@ -354,18 +407,29 @@ pdfjs-editor-alt-text-decorative-tooltip = Marcado como decorativo
# .placeholder: This is a placeholder for the alt text input area # .placeholder: This is a placeholder for the alt text input area
pdfjs-editor-alt-text-textarea = pdfjs-editor-alt-text-textarea =
.placeholder = Por ejemplo: “Un joven se sienta a la mesa a comer” .placeholder = Por ejemplo: “Un joven se sienta a la mesa a comer”
# Alternative text (alt text) helps when people can't see the image.
pdfjs-editor-alt-text-button =
.aria-label = Texto alternativo
## Editor resizers ## Editor resizers
## This is used in an aria label to help to understand the role of the resizer. ## This is used in an aria label to help to understand the role of the resizer.
pdfjs-editor-resizer-label-top-left = Esquina superior izquierda: cambiar el tamaño pdfjs-editor-resizer-top-left =
pdfjs-editor-resizer-label-top-middle = Arriba en el medio: cambiar el tamaño .aria-label = Esquina superior izquierda — redimensionar
pdfjs-editor-resizer-label-top-right = Esquina superior derecha: cambiar el tamaño pdfjs-editor-resizer-top-middle =
pdfjs-editor-resizer-label-middle-right = Centro derecha: cambiar el tamaño .aria-label = Borde superior en el medio — redimensionar
pdfjs-editor-resizer-label-bottom-right = Esquina inferior derecha: cambiar el tamaño pdfjs-editor-resizer-top-right =
pdfjs-editor-resizer-label-bottom-middle = Abajo en el medio: cambiar el tamaño .aria-label = Esquina superior derecha — redimensionar
pdfjs-editor-resizer-label-bottom-left = Esquina inferior izquierda: cambiar el tamaño pdfjs-editor-resizer-middle-right =
pdfjs-editor-resizer-label-middle-left = Centro izquierda: cambiar el tamaño .aria-label = Borde derecho en el medio — redimensionar
pdfjs-editor-resizer-bottom-right =
.aria-label = Esquina inferior derecha — redimensionar
pdfjs-editor-resizer-bottom-middle =
.aria-label = Borde inferior en el medio — redimensionar
pdfjs-editor-resizer-bottom-left =
.aria-label = Esquina inferior izquierda — redimensionar
pdfjs-editor-resizer-middle-left =
.aria-label = Borde izquierdo en el medio — redimensionar
## Color picker ## Color picker
@ -396,6 +460,191 @@ pdfjs-editor-highlight-show-all-button =
## New alt-text dialog ## New alt-text dialog
## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. ## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.
# Modal header positioned above a text box where users can edit the alt text.
pdfjs-editor-new-alt-text-dialog-edit-label = Editar texto alternativo (descripción de la imagen)
# Modal header positioned above a text box where users can add the alt text.
pdfjs-editor-new-alt-text-dialog-add-label = Agregar texto alternativo (descripción de la imagen)
pdfjs-editor-new-alt-text-textarea =
.placeholder = Escribe tu descripción aquí…
# This text refers to the alt text box above this description. It offers a definition of alt text.
pdfjs-editor-new-alt-text-description = Breve descripción para las personas que no pueden ver la imagen o cuando la imagen no se carga.
# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.
pdfjs-editor-new-alt-text-disclaimer1 = Este texto alternativo fue creado automáticamente y puede ser inexacto.
pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Saber más
pdfjs-editor-new-alt-text-create-automatically-button-label = Crear texto alternativo automáticamente
pdfjs-editor-new-alt-text-not-now-button = Ahora no
pdfjs-editor-new-alt-text-error-title = No se pudo crear el texto alternativo automáticamente
pdfjs-editor-new-alt-text-error-description = Escribe tu propio texto alternativo o inténtalo de nuevo más tarde.
pdfjs-editor-new-alt-text-error-close-button = Cerrar
# Variables:
# $totalSize (Number) - the total size (in MB) of the AI model.
# $downloadedSize (Number) - the downloaded size (in MB) of the AI model.
pdfjs-editor-new-alt-text-ai-model-downloading-progress = Descargando el modelo de IA de texto alternativo ({ $downloadedSize } de { $totalSize } MB)
.aria-valuetext = Descargando el modelo de IA de texto alternativo ({ $downloadedSize } de { $totalSize } MB)
# This is a button that users can click to edit the alt text they have already added.
pdfjs-editor-new-alt-text-added-button =
.aria-label = Se agregó el texto alternativo
pdfjs-editor-new-alt-text-added-button-label = Se agregó el texto alternativo
# This is a button that users can click to open the alt text editor and add alt text when it is not present.
pdfjs-editor-new-alt-text-missing-button =
.aria-label = Falta el texto alternativo
pdfjs-editor-new-alt-text-missing-button-label = Falta texto alternativo
# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.
pdfjs-editor-new-alt-text-to-review-button =
.aria-label = Revisar el texto alternativo
pdfjs-editor-new-alt-text-to-review-button-label = Revisar el texto alternativo
# "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.
# Variables:
# $generatedAltText (String) - the generated alt-text.
pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Creado automáticamente: { $generatedAltText }
## Image alt-text settings ## Image alt-text settings
pdfjs-image-alt-text-settings-button =
.title = Ajustes del texto alternativo de la imagen
pdfjs-image-alt-text-settings-button-label = Ajustes del texto alternativo de la imagen
pdfjs-editor-alt-text-settings-dialog-label = Ajustes del texto alternativo de la imagen
pdfjs-editor-alt-text-settings-automatic-title = Texto alternativo automático
pdfjs-editor-alt-text-settings-create-model-button-label = Crear texto alternativo automáticamente
pdfjs-editor-alt-text-settings-create-model-description = Sugiere descripciones para ayudar a las personas que no pueden ver la imagen o cuando la imagen no se carga.
# Variables:
# $totalSize (Number) - the total size (in MB) of the AI model.
pdfjs-editor-alt-text-settings-download-model-label = Modelo de IA de texto alternativo ({ $totalSize } MB)
pdfjs-editor-alt-text-settings-ai-model-description = Se ejecuta localmente en el dispositivo para que los datos se mantengan privados. Requerido para texto alternativo automático.
pdfjs-editor-alt-text-settings-delete-model-button = Eliminar
pdfjs-editor-alt-text-settings-download-model-button = Descargar
pdfjs-editor-alt-text-settings-downloading-model-button = Descargando…
pdfjs-editor-alt-text-settings-editor-title = Editor de texto alternativo
pdfjs-editor-alt-text-settings-show-dialog-button-label = Mostrar el editor de texto alternativo inmediatamente al añadir una imagen
pdfjs-editor-alt-text-settings-show-dialog-description = Te ayuda a asegurarte de que todas tus imágenes tengan texto alternativo.
pdfjs-editor-alt-text-settings-close-button = Cerrar
## Accessibility labels (announced by screen readers) for objects added to the editor.
pdfjs-editor-highlight-added-alert = Destacado añadido
pdfjs-editor-freetext-added-alert = Texto agregado
pdfjs-editor-ink-added-alert = Dibujo agregado
pdfjs-editor-stamp-added-alert = Imagen agregada
pdfjs-editor-signature-added-alert = Firma agregada
## "Annotations removed" bar
pdfjs-editor-undo-bar-message-highlight = Resaltado eliminado
pdfjs-editor-undo-bar-message-freetext = Texto eliminado
pdfjs-editor-undo-bar-message-ink = Dibujo eliminado
pdfjs-editor-undo-bar-message-stamp = Imagen eliminada
pdfjs-editor-undo-bar-message-signature = Firma eliminada
# Variables:
# $count (Number) - the number of removed annotations.
pdfjs-editor-undo-bar-message-multiple =
{ $count ->
[one] { $count } anotación eliminada
*[other] { $count } anotaciones eliminadas
}
pdfjs-editor-undo-bar-undo-button =
.title = Deshacer
pdfjs-editor-undo-bar-undo-button-label = Deshacer
pdfjs-editor-undo-bar-close-button =
.title = Cerrar
pdfjs-editor-undo-bar-close-button-label = Cerrar
## Add a signature dialog
pdfjs-editor-add-signature-dialog-label = Este modal permite al usuario crear una firma para añadirla a un documento PDF. El usuario puede editar el nombre (que también sirve como texto alternativo) y, opcionalmente, guardar la firma para utilizarla en otras ocasiones.
pdfjs-editor-add-signature-dialog-title = Agregar una firma
## Tab names
# Type is a verb (you can type your name as signature)
pdfjs-editor-add-signature-type-button = Tipo
.title = Tipo
# Draw is a verb (you can draw your signature)
pdfjs-editor-add-signature-draw-button = Dibujar
.title = Dibujar
pdfjs-editor-add-signature-image-button = Imagen
.title = Imagen
## Tab panels
pdfjs-editor-add-signature-type-input =
.aria-label = Escribe tu firma
.placeholder = Escribe tu firma
pdfjs-editor-add-signature-draw-placeholder = Dibuja tu firma
pdfjs-editor-add-signature-draw-thickness-range-label = Grossor
# Variables:
# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.
pdfjs-editor-add-signature-draw-thickness-range =
.title = Grosor del dibujo: { $thickness }
pdfjs-editor-add-signature-image-placeholder = Arrastra un archivo aquí para cargarlo
pdfjs-editor-add-signature-image-browse-link =
{ PLATFORM() ->
[macos] O elegir archivos de imagen
*[other] O buscar archivos de imagen
}
## Controls
pdfjs-editor-add-signature-description-label = Descripción (texto alternativo)
pdfjs-editor-add-signature-description-input =
.title = Descripción (texto alternativo)
pdfjs-editor-add-signature-description-default-when-drawing = Firma
pdfjs-editor-add-signature-clear-button-label = Limpiar firma
pdfjs-editor-add-signature-clear-button =
.title = Limpiar firma
pdfjs-editor-add-signature-save-checkbox = Guardar firma
pdfjs-editor-add-signature-save-warning-message = Has alcanzado el límite de 5 firmas guardadas. Elimina una para guardar más.
pdfjs-editor-add-signature-image-upload-error-title = No se pudo cargar la imagen
pdfjs-editor-add-signature-image-upload-error-description = Verifica tu conexión de red o prueba con otra imagen.
pdfjs-editor-add-signature-image-no-data-error-title = No se puede convertir esta imagen en una firma
pdfjs-editor-add-signature-image-no-data-error-description = Intenta cargar una imagen diferente.
pdfjs-editor-add-signature-error-close-button = Cerrar
## Dialog buttons
pdfjs-editor-add-signature-cancel-button = Cancelar
pdfjs-editor-add-signature-add-button = Agregar
pdfjs-editor-edit-signature-update-button = Actualizar
## Comment popup
pdfjs-editor-edit-comment-popup-button-label = Editar comentario
pdfjs-editor-edit-comment-popup-button =
.title = Editar comentario
pdfjs-editor-delete-comment-popup-button-label = Eliminar comentario
pdfjs-editor-delete-comment-popup-button =
.title = Eliminar comentario
pdfjs-show-comment-button =
.title = Mostrar comentario
## Edit a comment dialog
# An existing comment is edited
pdfjs-editor-edit-comment-dialog-title-when-editing = Editar comentario
pdfjs-editor-edit-comment-dialog-save-button-when-editing = Actualizar
# No existing comment
pdfjs-editor-edit-comment-dialog-title-when-adding = Agregar comentario
pdfjs-editor-edit-comment-dialog-save-button-when-adding = Agregar
pdfjs-editor-edit-comment-dialog-text-input =
.placeholder = Empieza a escribir…
pdfjs-editor-edit-comment-dialog-cancel-button = Cancelar
## Edit a comment button in the editor toolbar
pdfjs-editor-edit-comment-button =
.title = Editar comentario
pdfjs-editor-add-comment-button =
.title = Añadir comentario
## Main menu for adding/removing signatures
pdfjs-editor-delete-signature-button1 =
.title = Eliminar la firma guardada
pdfjs-editor-delete-signature-button-label1 = Eliminar la firma guardada
## Editor toolbar
pdfjs-editor-add-signature-edit-button-label = Editar descripción
## Edit signature description dialog
pdfjs-editor-edit-signature-dialog-title = Editar descripción

View File

@ -92,24 +92,12 @@ pdfjs-document-properties-button =
pdfjs-document-properties-button-label = Dokumendi omadused… pdfjs-document-properties-button-label = Dokumendi omadused…
pdfjs-document-properties-file-name = Faili nimi: pdfjs-document-properties-file-name = Faili nimi:
pdfjs-document-properties-file-size = Faili suurus: pdfjs-document-properties-file-size = Faili suurus:
# Variables:
# $size_kb (Number) - the PDF file size in kilobytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-kb = { $size_kb } KiB ({ $size_b } baiti)
# Variables:
# $size_mb (Number) - the PDF file size in megabytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-mb = { $size_mb } MiB ({ $size_b } baiti)
pdfjs-document-properties-title = Pealkiri: pdfjs-document-properties-title = Pealkiri:
pdfjs-document-properties-author = Autor: pdfjs-document-properties-author = Autor:
pdfjs-document-properties-subject = Teema: pdfjs-document-properties-subject = Teema:
pdfjs-document-properties-keywords = Märksõnad: pdfjs-document-properties-keywords = Märksõnad:
pdfjs-document-properties-creation-date = Loodud: pdfjs-document-properties-creation-date = Loodud:
pdfjs-document-properties-modification-date = Muudetud: pdfjs-document-properties-modification-date = Muudetud:
# Variables:
# $date (Date) - the creation/modification date of the PDF file
# $time (Time) - the creation/modification time of the PDF file
pdfjs-document-properties-date-string = { $date } { $time }
pdfjs-document-properties-creator = Looja: pdfjs-document-properties-creator = Looja:
pdfjs-document-properties-producer = Generaator: pdfjs-document-properties-producer = Generaator:
pdfjs-document-properties-version = Generaatori versioon: pdfjs-document-properties-version = Generaatori versioon:
@ -237,10 +225,6 @@ pdfjs-rendering-error = Lehe renderdamisel esines viga.
## Annotations ## Annotations
# Variables:
# $date (Date) - the modification date of the annotation
# $time (Time) - the modification time of the annotation
pdfjs-annotation-date-string = { $date } { $time }
# .alt: This is used as a tooltip. # .alt: This is used as a tooltip.
# Variables: # Variables:
# $type (String) - an annotation type from a list defined in the PDF spec # $type (String) - an annotation type from a list defined in the PDF spec
@ -257,12 +241,6 @@ pdfjs-password-ok-button = Sobib
pdfjs-password-cancel-button = Loobu pdfjs-password-cancel-button = Loobu
pdfjs-web-fonts-disabled = Veebifondid on keelatud: PDFiga kaasatud fonte pole võimalik kasutada. pdfjs-web-fonts-disabled = Veebifondid on keelatud: PDFiga kaasatud fonte pole võimalik kasutada.
## Editing ## Image alt-text settings
## Alt-text dialog
## Editor resizers
## This is used in an aria label to help to understand the role of the resizer.
pdfjs-editor-alt-text-settings-delete-model-button = Kustuta

View File

@ -112,14 +112,6 @@ pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) }
# $mb (Number) - the PDF file size in megabytes # $mb (Number) - the PDF file size in megabytes
# $b (Number) - the PDF file size in bytes # $b (Number) - the PDF file size in bytes
pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } byte) pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } byte)
# Variables:
# $size_kb (Number) - the PDF file size in kilobytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } byte)
# Variables:
# $size_mb (Number) - the PDF file size in megabytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-mb = { $size_mb } MB ({ $size_b } byte)
pdfjs-document-properties-title = Izenburua: pdfjs-document-properties-title = Izenburua:
pdfjs-document-properties-author = Egilea: pdfjs-document-properties-author = Egilea:
pdfjs-document-properties-subject = Gaia: pdfjs-document-properties-subject = Gaia:
@ -129,10 +121,6 @@ pdfjs-document-properties-modification-date = Aldatze-data:
# Variables: # Variables:
# $dateObj (Date) - the creation/modification date and time of the PDF file # $dateObj (Date) - the creation/modification date and time of the PDF file
pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") } pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
# Variables:
# $date (Date) - the creation/modification date of the PDF file
# $time (Time) - the creation/modification time of the PDF file
pdfjs-document-properties-date-string = { $date }, { $time }
pdfjs-document-properties-creator = Sortzailea: pdfjs-document-properties-creator = Sortzailea:
pdfjs-document-properties-producer = PDFaren ekoizlea: pdfjs-document-properties-producer = PDFaren ekoizlea:
pdfjs-document-properties-version = PDF bertsioa: pdfjs-document-properties-version = PDF bertsioa:
@ -275,10 +263,6 @@ pdfjs-rendering-error = Errorea gertatu da orria errendatzean.
## Annotations ## Annotations
# Variables:
# $date (Date) - the modification date of the annotation
# $time (Time) - the modification time of the annotation
pdfjs-annotation-date-string = { $date }, { $time }
# .alt: This is used as a tooltip. # .alt: This is used as a tooltip.
# Variables: # Variables:
# $type (String) - an annotation type from a list defined in the PDF spec # $type (String) - an annotation type from a list defined in the PDF spec
@ -302,9 +286,13 @@ pdfjs-web-fonts-disabled = Webeko letra-tipoak desgaituta daude: ezin dira kapsu
pdfjs-editor-free-text-button = pdfjs-editor-free-text-button =
.title = Testua .title = Testua
pdfjs-editor-color-picker-free-text-input =
.title = Aldatu testuaren kolorea
pdfjs-editor-free-text-button-label = Testua pdfjs-editor-free-text-button-label = Testua
pdfjs-editor-ink-button = pdfjs-editor-ink-button =
.title = Marrazkia .title = Marrazkia
pdfjs-editor-color-picker-ink-input =
.title = Aldatu marrazteko kolorea
pdfjs-editor-ink-button-label = Marrazkia pdfjs-editor-ink-button-label = Marrazkia
pdfjs-editor-stamp-button = pdfjs-editor-stamp-button =
.title = Gehitu edo editatu irudiak .title = Gehitu edo editatu irudiak
@ -316,6 +304,33 @@ pdfjs-highlight-floating-button1 =
.title = Nabarmendu .title = Nabarmendu
.aria-label = Nabarmendu .aria-label = Nabarmendu
pdfjs-highlight-floating-button-label = Nabarmendu pdfjs-highlight-floating-button-label = Nabarmendu
pdfjs-comment-floating-button =
.title = Iruzkina
.aria-label = Iruzkina
pdfjs-comment-floating-button-label = Iruzkina
pdfjs-editor-comment-button =
.title = Iruzkina
.aria-label = Iruzkina
pdfjs-editor-comment-button-label = Iruzkina
pdfjs-editor-signature-button =
.title = Gehitu sinadura
pdfjs-editor-signature-button-label = Gehitu sinadura
## Default editor aria labels
# “Highlight” is a noun, the string is used on the editor for highlights.
pdfjs-editor-highlight-editor =
.aria-label = Nabarmendutakoen editorea
# “Drawing” is a noun, the string is used on the editor for drawings.
pdfjs-editor-ink-editor =
.aria-label = Marrazkien editorea
# Used when a signature editor is selected/hovered.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-signature-editor1 =
.aria-description = Sinaduren editorea: { $description }
pdfjs-editor-stamp-editor =
.aria-label = Irudien editorea
## Remove button for the various kind of editor. ## Remove button for the various kind of editor.
@ -327,6 +342,8 @@ pdfjs-editor-remove-stamp-button =
.title = Kendu irudia .title = Kendu irudia
pdfjs-editor-remove-highlight-button = pdfjs-editor-remove-highlight-button =
.title = Kendu nabarmentzea .title = Kendu nabarmentzea
pdfjs-editor-remove-signature-button =
.title = Kendu sinadura
## ##
@ -343,24 +360,41 @@ pdfjs-editor-stamp-add-image-button-label = Gehitu irudia
pdfjs-editor-free-highlight-thickness-input = Loditasuna pdfjs-editor-free-highlight-thickness-input = Loditasuna
pdfjs-editor-free-highlight-thickness-title = pdfjs-editor-free-highlight-thickness-title =
.title = Aldatu loditasuna testua ez beste elementuak nabarmentzean .title = Aldatu loditasuna testua ez beste elementuak nabarmentzean
pdfjs-editor-add-signature-container =
.aria-label = Sinaduren kontrolak eta gordetako sinadurak
pdfjs-editor-signature-add-signature-button =
.title = Gehitu sinadura berria
pdfjs-editor-signature-add-signature-button-label = Gehitu sinadura berria
# Used on the button to use an already saved signature.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-add-saved-signature-button =
.title = Gordetako sinadura: { $description }
# .default-content is used as a placeholder in an empty text editor. # .default-content is used as a placeholder in an empty text editor.
pdfjs-free-text2 = pdfjs-free-text2 =
.aria-label = Testu-editorea .aria-label = Testu-editorea
.default-content = Hasi idazten… .default-content = Hasi idazten…
pdfjs-free-text = # Used to show how many comments are present in the pdf file.
.aria-label = Testu-editorea # Variables:
pdfjs-free-text-default-content = Hasi idazten… # $count (Number) - the number of comments.
pdfjs-ink = pdfjs-editor-comments-sidebar-title =
.aria-label = Marrazki-editorea { $count ->
pdfjs-ink-canvas = [one] Iruzkina
.aria-label = Erabiltzaileak sortutako irudia *[other] Iruzkinak
}
pdfjs-editor-comments-sidebar-close-button =
.title = Itxi alboko barra
.aria-label = Itxi alboko barra
pdfjs-editor-comments-sidebar-close-button-label = Itxi alboko barra
# Instructional copy to add a comment by selecting text or an annotations.
pdfjs-editor-comments-sidebar-no-comments1 = Azpimarratzeko zerbait ikusi duzu? Nabarmen ezazu eta utzi iruzkina.
pdfjs-editor-comments-sidebar-no-comments-link = Argibide gehiago
## Alt-text dialog ## Alt-text dialog
pdfjs-editor-alt-text-button-label = Testu alternatiboa pdfjs-editor-alt-text-button-label = Testu alternatiboa
pdfjs-editor-alt-text-edit-button = pdfjs-editor-alt-text-edit-button =
.aria-label = Editatu testu alternatiboa .aria-label = Editatu testu alternatiboa
pdfjs-editor-alt-text-edit-button-label = Editatu testu alternatiboa
pdfjs-editor-alt-text-dialog-label = Aukeratu aukera pdfjs-editor-alt-text-dialog-label = Aukeratu aukera
pdfjs-editor-alt-text-dialog-description = Testu alternatiboak laguntzen du jendeak ezin duenean irudia ikusi edo ez denean kargatzen. pdfjs-editor-alt-text-dialog-description = Testu alternatiboak laguntzen du jendeak ezin duenean irudia ikusi edo ez denean kargatzen.
pdfjs-editor-alt-text-add-description-label = Gehitu azalpena pdfjs-editor-alt-text-add-description-label = Gehitu azalpena
@ -380,14 +414,6 @@ pdfjs-editor-alt-text-button =
## Editor resizers ## Editor resizers
## This is used in an aria label to help to understand the role of the resizer. ## This is used in an aria label to help to understand the role of the resizer.
pdfjs-editor-resizer-label-top-left = Goiko ezkerreko izkina — aldatu tamaina
pdfjs-editor-resizer-label-top-middle = Goian erdian — aldatu tamaina
pdfjs-editor-resizer-label-top-right = Goiko eskuineko izkina — aldatu tamaina
pdfjs-editor-resizer-label-middle-right = Erdian eskuinean — aldatu tamaina
pdfjs-editor-resizer-label-bottom-right = Beheko eskuineko izkina — aldatu tamaina
pdfjs-editor-resizer-label-bottom-middle = Behean erdian — aldatu tamaina
pdfjs-editor-resizer-label-bottom-left = Beheko ezkerreko izkina — aldatu tamaina
pdfjs-editor-resizer-label-middle-left = Erdian ezkerrean — aldatu tamaina
pdfjs-editor-resizer-top-left = pdfjs-editor-resizer-top-left =
.aria-label = Goiko ezkerreko izkina — aldatu tamaina .aria-label = Goiko ezkerreko izkina — aldatu tamaina
pdfjs-editor-resizer-top-middle = pdfjs-editor-resizer-top-middle =
@ -453,7 +479,6 @@ pdfjs-editor-new-alt-text-error-close-button = Itxi
# Variables: # Variables:
# $totalSize (Number) - the total size (in MB) of the AI model. # $totalSize (Number) - the total size (in MB) of the AI model.
# $downloadedSize (Number) - the downloaded size (in MB) of the AI model. # $downloadedSize (Number) - the downloaded size (in MB) of the AI model.
# $percent (Number) - the percentage of the downloaded size.
pdfjs-editor-new-alt-text-ai-model-downloading-progress = Testu alternatiboaren AA modeloa deskargatzen ({ $totalSize }/{ $downloadedSize } MB) pdfjs-editor-new-alt-text-ai-model-downloading-progress = Testu alternatiboaren AA modeloa deskargatzen ({ $totalSize }/{ $downloadedSize } MB)
.aria-valuetext = Testu alternatiboaren AA modeloa deskargatzen ({ $totalSize }/{ $downloadedSize } MB) .aria-valuetext = Testu alternatiboaren AA modeloa deskargatzen ({ $totalSize }/{ $downloadedSize } MB)
# This is a button that users can click to edit the alt text they have already added. # This is a button that users can click to edit the alt text they have already added.
@ -493,3 +518,137 @@ pdfjs-editor-alt-text-settings-editor-title = Testu alternatiboaren editorea
pdfjs-editor-alt-text-settings-show-dialog-button-label = Erakutsi testu alternatiboa irudi bat gehitzean berehala pdfjs-editor-alt-text-settings-show-dialog-button-label = Erakutsi testu alternatiboa irudi bat gehitzean berehala
pdfjs-editor-alt-text-settings-show-dialog-description = Zure irudiek testu alternatiboa duela ziurtatzen laguntzen dizu. pdfjs-editor-alt-text-settings-show-dialog-description = Zure irudiek testu alternatiboa duela ziurtatzen laguntzen dizu.
pdfjs-editor-alt-text-settings-close-button = Itxi pdfjs-editor-alt-text-settings-close-button = Itxi
## Accessibility labels (announced by screen readers) for objects added to the editor.
pdfjs-editor-highlight-added-alert = Nabarmentzea gehituta
pdfjs-editor-freetext-added-alert = Testua gehituta
pdfjs-editor-ink-added-alert = Marrazkia gehituta
pdfjs-editor-stamp-added-alert = Irudia gehituta
pdfjs-editor-signature-added-alert = Sinadura gehituta
## "Annotations removed" bar
pdfjs-editor-undo-bar-message-highlight = Nabarmentzea kenduta
pdfjs-editor-undo-bar-message-freetext = Testua kenduta
pdfjs-editor-undo-bar-message-ink = Marrazkia kenduta
pdfjs-editor-undo-bar-message-stamp = Irudia kenduta
pdfjs-editor-undo-bar-message-signature = Sinadura kenduta
# Variables:
# $count (Number) - the number of removed annotations.
pdfjs-editor-undo-bar-message-multiple =
{ $count ->
[one] Esku-ohar bat kenduta
*[other] { $count } esku-ohar kenduta
}
pdfjs-editor-undo-bar-undo-button =
.title = Desegin
pdfjs-editor-undo-bar-undo-button-label = Desegin
pdfjs-editor-undo-bar-close-button =
.title = Itxi
pdfjs-editor-undo-bar-close-button-label = Itxi
## Add a signature dialog
pdfjs-editor-add-signature-dialog-label =
Leiho modal honek PDF dokumentu batera gehitzeko sinadurak
sortzea ahalbidetzen dio erabiltzaileari. Erabiltzaileak izena edita
dezake (testu alternatibo modura ere erabiltzen dena) eta sinadura
gordetzeko aukera du gehiagotan erabili ahal izateko.
pdfjs-editor-add-signature-dialog-title = Gehitu sinadura
## Tab names
# Type is a verb (you can type your name as signature)
pdfjs-editor-add-signature-type-button = Idatzi
.title = Idatzi
# Draw is a verb (you can draw your signature)
pdfjs-editor-add-signature-draw-button = Marraztu
.title = Marraztu
pdfjs-editor-add-signature-image-button = Irudia
.title = Irudia
## Tab panels
pdfjs-editor-add-signature-type-input =
.aria-label = Idatzi zure sinadura
.placeholder = Idatzi zure sinadura
pdfjs-editor-add-signature-draw-placeholder = Marraztu zure sinadura
pdfjs-editor-add-signature-draw-thickness-range-label = Loditasuna
# Variables:
# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.
pdfjs-editor-add-signature-draw-thickness-range =
.title = Marrazteko loditasuna: { $thickness }
pdfjs-editor-add-signature-image-placeholder = Igotzeko, jaregin fitxategia hemen
pdfjs-editor-add-signature-image-browse-link =
{ PLATFORM() ->
[macos] Edo aukeratu irudi-fitxategiak
*[other] Edo arakatu irudi-fitxategiak
}
## Controls
pdfjs-editor-add-signature-description-label = Azalpena (testu alternatiboa)
pdfjs-editor-add-signature-description-input =
.title = Azalpena (testu alternatiboa)
pdfjs-editor-add-signature-description-default-when-drawing = Sinadura
pdfjs-editor-add-signature-clear-button-label = Garbitu sinadura
pdfjs-editor-add-signature-clear-button =
.title = Garbitu sinadura
pdfjs-editor-add-signature-save-checkbox = Gorde sinadura
pdfjs-editor-add-signature-save-warning-message = Gordetako sinadura kopuruaren mugara heldu zara (5). Gehiago gorde ahal izateko, ken ezazu bat.
pdfjs-editor-add-signature-image-upload-error-title = Ezin da irudia igo
pdfjs-editor-add-signature-image-upload-error-description = Egiaztatu zure sareko konexioa edo saiatu beste irudi batekin.
pdfjs-editor-add-signature-image-no-data-error-title = Ezin da irudia sinaduran bihurtu
pdfjs-editor-add-signature-image-no-data-error-description = Saiatu beste irudi bat igotzen.
pdfjs-editor-add-signature-error-close-button = Itxi
## Dialog buttons
pdfjs-editor-add-signature-cancel-button = Utzi
pdfjs-editor-add-signature-add-button = Gehitu
pdfjs-editor-edit-signature-update-button = Eguneratu
## Comment popup
pdfjs-editor-edit-comment-popup-button-label = Editatu iruzkina
pdfjs-editor-edit-comment-popup-button =
.title = Editatu iruzkina
pdfjs-editor-delete-comment-popup-button-label = Kendu iruzkina
pdfjs-editor-delete-comment-popup-button =
.title = Kendu iruzkina
pdfjs-show-comment-button =
.title = Erakutsi iruzkina
## Edit a comment dialog
# An existing comment is edited
pdfjs-editor-edit-comment-dialog-title-when-editing = Editatu iruzkina
pdfjs-editor-edit-comment-dialog-save-button-when-editing = Eguneratu
# No existing comment
pdfjs-editor-edit-comment-dialog-title-when-adding = Gehitu iruzkina
pdfjs-editor-edit-comment-dialog-save-button-when-adding = Gehitu
pdfjs-editor-edit-comment-dialog-text-input =
.placeholder = Hasi idazten…
pdfjs-editor-edit-comment-dialog-cancel-button = Utzi
## Edit a comment button in the editor toolbar
pdfjs-editor-edit-comment-button =
.title = Editatu iruzkina
pdfjs-editor-add-comment-button =
.title = Gehitu iruzkina
## Main menu for adding/removing signatures
pdfjs-editor-delete-signature-button1 =
.title = Kendu gordetako sinadura
pdfjs-editor-delete-signature-button-label1 = Kendu gordetako sinadura
## Editor toolbar
pdfjs-editor-add-signature-edit-button-label = Editatu azalpena
## Edit signature description dialog
pdfjs-editor-edit-signature-dialog-title = Editatu azalpena

View File

@ -39,7 +39,18 @@ pdfjs-open-file-button-label = باز کردن
pdfjs-print-button = pdfjs-print-button =
.title = چاپ .title = چاپ
pdfjs-print-button-label = چاپ pdfjs-print-button-label = چاپ
pdfjs-save-button =
.title = ذخیره
pdfjs-save-button-label = ذخیره pdfjs-save-button-label = ذخیره
# Used in Firefox for Android as a tooltip for the download button (“download” is a verb).
pdfjs-download-button =
.title = دریافت
# Used in Firefox for Android as a label for the download button (“download” is a verb).
# Length of the translation matters since we are in a mobile context, with limited screen estate.
pdfjs-download-button-label = دریافت
pdfjs-bookmark-button =
.title = صفحه فعلی (مشاهده نشانی اینترنتی از صفحه فعلی)
pdfjs-bookmark-button-label = صفحه فعلی
## Secondary toolbar and context menu ## Secondary toolbar and context menu
@ -64,28 +75,34 @@ pdfjs-cursor-text-select-tool-button-label = ابزارِ انتخابِ متن
pdfjs-cursor-hand-tool-button = pdfjs-cursor-hand-tool-button =
.title = فعال کردن ابزارِ دست .title = فعال کردن ابزارِ دست
pdfjs-cursor-hand-tool-button-label = ابزار دست pdfjs-cursor-hand-tool-button-label = ابزار دست
pdfjs-scroll-page-button =
.title = استفاده از پیمایش صفحه
pdfjs-scroll-page-button-label = پیمایش صفحه
pdfjs-scroll-vertical-button = pdfjs-scroll-vertical-button =
.title = استفاده از پیمایش عمودی .title = استفاده از پیمایش عمودی
pdfjs-scroll-vertical-button-label = پیمایش عمودی pdfjs-scroll-vertical-button-label = پیمایش عمودی
pdfjs-scroll-horizontal-button = pdfjs-scroll-horizontal-button =
.title = استفاده از پیمایش افقی .title = استفاده از پیمایش افقی
pdfjs-scroll-horizontal-button-label = پیمایش افقی pdfjs-scroll-horizontal-button-label = پیمایش افقی
pdfjs-spread-none-button =
.title = صفحات پیوسته را یکی نکنید
pdfjs-spread-none-button-label = بدون صفحات پیوسته
## Document properties dialog ## Document properties dialog
pdfjs-document-properties-button = pdfjs-document-properties-button =
.title = خصوصیات سند... .title = خصوصیات سند...
pdfjs-document-properties-button-label = خصوصیات سند... pdfjs-document-properties-button-label = خصوصیات سند...
pdfjs-document-properties-file-name = نام فایل: pdfjs-document-properties-file-name = نام پرونده:
pdfjs-document-properties-file-size = حجم پرونده: pdfjs-document-properties-file-size = حجم پرونده:
# Variables: # Variables:
# $size_kb (Number) - the PDF file size in kilobytes # $kb (Number) - the PDF file size in kilobytes
# $size_b (Number) - the PDF file size in bytes # $b (Number) - the PDF file size in bytes
pdfjs-document-properties-kb = { $size_kb } کیلوبایت ({ $size_b } بایت) pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } کیلوبایت ({ $b } بایت)
# Variables: # Variables:
# $size_mb (Number) - the PDF file size in megabytes # $mb (Number) - the PDF file size in megabytes
# $size_b (Number) - the PDF file size in bytes # $b (Number) - the PDF file size in bytes
pdfjs-document-properties-mb = { $size_mb } مگابایت ({ $size_b } بایت) pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } مگابایت ({ $b } بایت)
pdfjs-document-properties-title = عنوان: pdfjs-document-properties-title = عنوان:
pdfjs-document-properties-author = نویسنده: pdfjs-document-properties-author = نویسنده:
pdfjs-document-properties-subject = موضوع: pdfjs-document-properties-subject = موضوع:
@ -93,9 +110,8 @@ pdfjs-document-properties-keywords = کلیدواژه‌ها:
pdfjs-document-properties-creation-date = تاریخ ایجاد: pdfjs-document-properties-creation-date = تاریخ ایجاد:
pdfjs-document-properties-modification-date = تاریخ ویرایش: pdfjs-document-properties-modification-date = تاریخ ویرایش:
# Variables: # Variables:
# $date (Date) - the creation/modification date of the PDF file # $dateObj (Date) - the creation/modification date and time of the PDF file
# $time (Time) - the creation/modification time of the PDF file pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
pdfjs-document-properties-date-string = { $date }، { $time }
pdfjs-document-properties-creator = ایجاد کننده: pdfjs-document-properties-creator = ایجاد کننده:
pdfjs-document-properties-producer = ایجاد کننده PDF: pdfjs-document-properties-producer = ایجاد کننده PDF:
pdfjs-document-properties-version = نسخه PDF: pdfjs-document-properties-version = نسخه PDF:
@ -216,6 +232,9 @@ pdfjs-rendering-error = هنگام بارگیری صفحه خطایی رخ دا
# Some common types are e.g.: "Check", "Text", "Comment", "Note" # Some common types are e.g.: "Check", "Text", "Comment", "Note"
pdfjs-text-annotation-type = pdfjs-text-annotation-type =
.alt = [{ $type } Annotation] .alt = [{ $type } Annotation]
# Variables:
# $dateObj (Date) - the modification date and time of the annotation
pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
## Password ## Password
@ -233,14 +252,71 @@ pdfjs-editor-free-text-button-label = متن
pdfjs-editor-ink-button = pdfjs-editor-ink-button =
.title = کشیدن .title = کشیدن
pdfjs-editor-ink-button-label = کشیدن pdfjs-editor-ink-button-label = کشیدن
pdfjs-editor-stamp-button =
.title = افزودن یا ویرایش تصاویر
pdfjs-editor-stamp-button-label = افزودن یا ویرایش تصاویر
pdfjs-editor-highlight-button =
.title = برجسته کردن
pdfjs-editor-highlight-button-label = برجسته کردن
pdfjs-highlight-floating-button1 =
.title = برجسته کردن
.aria-label = برجسته کردن
pdfjs-highlight-floating-button-label = برجسته کردن
##
# Editor Parameters # Editor Parameters
pdfjs-editor-free-text-color-input = رنگ pdfjs-editor-free-text-color-input = رنگ
pdfjs-editor-free-text-size-input = اندازه pdfjs-editor-free-text-size-input = اندازه
pdfjs-editor-ink-color-input = رنگ pdfjs-editor-ink-color-input = رنگ
pdfjs-editor-stamp-add-image-button =
.title = افزودن تصویر
pdfjs-editor-stamp-add-image-button-label = افزودن تصویر
# .default-content is used as a placeholder in an empty text editor.
pdfjs-free-text2 =
.aria-label = ویرایشگر متن
.default-content = شروع به نوشتن کنید…
## Alt-text dialog ## Alt-text dialog
pdfjs-editor-alt-text-add-description-label = افزودن توضیحات
pdfjs-editor-alt-text-cancel-button = انصراف
pdfjs-editor-alt-text-save-button = ذخیره
## Editor resizers ## Color picker
## This is used in an aria label to help to understand the role of the resizer.
pdfjs-editor-colorpicker-button =
.title = تغییر رنگ
pdfjs-editor-colorpicker-dropdown =
.aria-label = انتخاب رنگ
pdfjs-editor-colorpicker-yellow =
.title = زرد
pdfjs-editor-colorpicker-green =
.title = سبز
pdfjs-editor-colorpicker-blue =
.title = آبی
pdfjs-editor-colorpicker-pink =
.title = صورتی
pdfjs-editor-colorpicker-red =
.title = قرمز
## Show all highlights
## This is a toggle button to show/hide all the highlights.
pdfjs-editor-highlight-show-all-button-label = نمایش همه
pdfjs-editor-highlight-show-all-button =
.title = نمایش همه
## New alt-text dialog
## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.
pdfjs-editor-new-alt-text-disclaimer-learn-more-url = بیشتر بدانید
pdfjs-editor-new-alt-text-not-now-button = اکنون نه
pdfjs-editor-new-alt-text-error-close-button = بستن
## Image alt-text settings
pdfjs-editor-alt-text-settings-delete-model-button = حذف
pdfjs-editor-alt-text-settings-download-model-button = دریافت
pdfjs-editor-alt-text-settings-downloading-model-button = در حال دریافت…
pdfjs-editor-alt-text-settings-close-button = بستن

View File

@ -89,24 +89,12 @@ pdfjs-document-properties-button =
pdfjs-document-properties-button-label = Keeroraaɗi Winndannde… pdfjs-document-properties-button-label = Keeroraaɗi Winndannde…
pdfjs-document-properties-file-name = Innde fiilde: pdfjs-document-properties-file-name = Innde fiilde:
pdfjs-document-properties-file-size = Ɓetol fiilde: pdfjs-document-properties-file-size = Ɓetol fiilde:
# Variables:
# $size_kb (Number) - the PDF file size in kilobytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bite)
# Variables:
# $size_mb (Number) - the PDF file size in megabytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-mb = { $size_mb } MB ({ $size_b } bite)
pdfjs-document-properties-title = Tiitoonde: pdfjs-document-properties-title = Tiitoonde:
pdfjs-document-properties-author = Binnduɗo: pdfjs-document-properties-author = Binnduɗo:
pdfjs-document-properties-subject = Toɓɓere: pdfjs-document-properties-subject = Toɓɓere:
pdfjs-document-properties-keywords = Kelmekele jiytirɗe: pdfjs-document-properties-keywords = Kelmekele jiytirɗe:
pdfjs-document-properties-creation-date = Ñalnde Sosaa: pdfjs-document-properties-creation-date = Ñalnde Sosaa:
pdfjs-document-properties-modification-date = Ñalnde Waylaa: pdfjs-document-properties-modification-date = Ñalnde Waylaa:
# Variables:
# $date (Date) - the creation/modification date of the PDF file
# $time (Time) - the creation/modification time of the PDF file
pdfjs-document-properties-date-string = { $date }, { $time }
pdfjs-document-properties-creator = Cosɗo: pdfjs-document-properties-creator = Cosɗo:
pdfjs-document-properties-producer = Paggiiɗo PDF: pdfjs-document-properties-producer = Paggiiɗo PDF:
pdfjs-document-properties-version = Yamre PDF: pdfjs-document-properties-version = Yamre PDF:
@ -207,9 +195,6 @@ pdfjs-page-scale-actual = Ɓetol Jaati
# $scale (Number) - percent value for page scale # $scale (Number) - percent value for page scale
pdfjs-page-scale-percent = { $scale }% pdfjs-page-scale-percent = { $scale }%
## PDF page
## Loading indicator messages ## Loading indicator messages
pdfjs-loading-error = Juumre waɗii tuma nde loowata PDF oo. pdfjs-loading-error = Juumre waɗii tuma nde loowata PDF oo.
@ -235,13 +220,3 @@ pdfjs-password-invalid = Finnde moƴƴaani. Tiiɗno eto kadi.
pdfjs-password-ok-button = OK pdfjs-password-ok-button = OK
pdfjs-password-cancel-button = Haaytu pdfjs-password-cancel-button = Haaytu
pdfjs-web-fonts-disabled = Ponte geese ko daaƴaaɗe: horiima huutoraade ponte PDF coomtoraaɗe. pdfjs-web-fonts-disabled = Ponte geese ko daaƴaaɗe: horiima huutoraade ponte PDF coomtoraaɗe.
## Editing
## Alt-text dialog
## Editor resizers
## This is used in an aria label to help to understand the role of the resizer.

View File

@ -112,14 +112,6 @@ pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) }
# $mb (Number) - the PDF file size in megabytes # $mb (Number) - the PDF file size in megabytes
# $b (Number) - the PDF file size in bytes # $b (Number) - the PDF file size in bytes
pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } Mt ({ $b } tavua) pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } Mt ({ $b } tavua)
# Variables:
# $size_kb (Number) - the PDF file size in kilobytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-kb = { $size_kb } kt ({ $size_b } tavua)
# Variables:
# $size_mb (Number) - the PDF file size in megabytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-mb = { $size_mb } Mt ({ $size_b } tavua)
pdfjs-document-properties-title = Otsikko: pdfjs-document-properties-title = Otsikko:
pdfjs-document-properties-author = Tekijä: pdfjs-document-properties-author = Tekijä:
pdfjs-document-properties-subject = Aihe: pdfjs-document-properties-subject = Aihe:
@ -129,10 +121,6 @@ pdfjs-document-properties-modification-date = Muokkauspäivämäärä:
# Variables: # Variables:
# $dateObj (Date) - the creation/modification date and time of the PDF file # $dateObj (Date) - the creation/modification date and time of the PDF file
pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") } pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
# Variables:
# $date (Date) - the creation/modification date of the PDF file
# $time (Time) - the creation/modification time of the PDF file
pdfjs-document-properties-date-string = { $date }, { $time }
pdfjs-document-properties-creator = Luoja: pdfjs-document-properties-creator = Luoja:
pdfjs-document-properties-producer = PDF-tuottaja: pdfjs-document-properties-producer = PDF-tuottaja:
pdfjs-document-properties-version = PDF-versio: pdfjs-document-properties-version = PDF-versio:
@ -275,10 +263,6 @@ pdfjs-rendering-error = Tapahtui virhe piirrettäessä sivua.
## Annotations ## Annotations
# Variables:
# $date (Date) - the modification date of the annotation
# $time (Time) - the modification time of the annotation
pdfjs-annotation-date-string = { $date }, { $time }
# .alt: This is used as a tooltip. # .alt: This is used as a tooltip.
# Variables: # Variables:
# $type (String) - an annotation type from a list defined in the PDF spec # $type (String) - an annotation type from a list defined in the PDF spec
@ -302,9 +286,13 @@ pdfjs-web-fonts-disabled = Verkkosivujen omat kirjasinlajit on estetty: ei voida
pdfjs-editor-free-text-button = pdfjs-editor-free-text-button =
.title = Teksti .title = Teksti
pdfjs-editor-color-picker-free-text-input =
.title = Muuta tekstin väriä
pdfjs-editor-free-text-button-label = Teksti pdfjs-editor-free-text-button-label = Teksti
pdfjs-editor-ink-button = pdfjs-editor-ink-button =
.title = Piirros .title = Piirros
pdfjs-editor-color-picker-ink-input =
.title = Vaihda piirustuksen väriä
pdfjs-editor-ink-button-label = Piirros pdfjs-editor-ink-button-label = Piirros
pdfjs-editor-stamp-button = pdfjs-editor-stamp-button =
.title = Lisää tai muokkaa kuvia .title = Lisää tai muokkaa kuvia
@ -316,6 +304,33 @@ pdfjs-highlight-floating-button1 =
.title = Korostus .title = Korostus
.aria-label = Korostus .aria-label = Korostus
pdfjs-highlight-floating-button-label = Korostus pdfjs-highlight-floating-button-label = Korostus
pdfjs-comment-floating-button =
.title = Kommentti
.aria-label = Kommentti
pdfjs-comment-floating-button-label = Kommentti
pdfjs-editor-comment-button =
.title = Kommentti
.aria-label = Kommentti
pdfjs-editor-comment-button-label = Kommentti
pdfjs-editor-signature-button =
.title = Lisää allekirjoitus
pdfjs-editor-signature-button-label = Lisää allekirjoitus
## Default editor aria labels
# “Highlight” is a noun, the string is used on the editor for highlights.
pdfjs-editor-highlight-editor =
.aria-label = Korostusmuokkain
# “Drawing” is a noun, the string is used on the editor for drawings.
pdfjs-editor-ink-editor =
.aria-label = Piirustusmuokkain
# Used when a signature editor is selected/hovered.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-signature-editor1 =
.aria-description = Allekirjoituksen muokkain: { $description }
pdfjs-editor-stamp-editor =
.aria-label = Kuvamuokkain
## Remove button for the various kind of editor. ## Remove button for the various kind of editor.
@ -327,6 +342,8 @@ pdfjs-editor-remove-stamp-button =
.title = Poista kuva .title = Poista kuva
pdfjs-editor-remove-highlight-button = pdfjs-editor-remove-highlight-button =
.title = Poista korostus .title = Poista korostus
pdfjs-editor-remove-signature-button =
.title = Poista allekirjoitus
## ##
@ -343,24 +360,41 @@ pdfjs-editor-stamp-add-image-button-label = Lisää kuva
pdfjs-editor-free-highlight-thickness-input = Paksuus pdfjs-editor-free-highlight-thickness-input = Paksuus
pdfjs-editor-free-highlight-thickness-title = pdfjs-editor-free-highlight-thickness-title =
.title = Muuta paksuutta korostaessasi muita kohteita kuin tekstiä .title = Muuta paksuutta korostaessasi muita kohteita kuin tekstiä
pdfjs-editor-add-signature-container =
.aria-label = Allekirjoitussäätimet ja tallennetut allekirjoitukset
pdfjs-editor-signature-add-signature-button =
.title = Lisää uusi allekirjoitus
pdfjs-editor-signature-add-signature-button-label = Lisää uusi allekirjoitus
# Used on the button to use an already saved signature.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-add-saved-signature-button =
.title = Tallennettu allekirjoitus: { $description }
# .default-content is used as a placeholder in an empty text editor. # .default-content is used as a placeholder in an empty text editor.
pdfjs-free-text2 = pdfjs-free-text2 =
.aria-label = Tekstimuokkain .aria-label = Tekstimuokkain
.default-content = Aloita kirjoittaminen… .default-content = Aloita kirjoittaminen…
pdfjs-free-text = # Used to show how many comments are present in the pdf file.
.aria-label = Tekstimuokkain # Variables:
pdfjs-free-text-default-content = Aloita kirjoittaminen… # $count (Number) - the number of comments.
pdfjs-ink = pdfjs-editor-comments-sidebar-title =
.aria-label = Piirrustusmuokkain { $count ->
pdfjs-ink-canvas = [one] Kommentti
.aria-label = Käyttäjän luoma kuva *[other] Kommenttia
}
pdfjs-editor-comments-sidebar-close-button =
.title = Sulje sivupaneeli
.aria-label = Sulje sivupaneeli
pdfjs-editor-comments-sidebar-close-button-label = Sulje sivupaneeli
# Instructional copy to add a comment by selecting text or an annotations.
pdfjs-editor-comments-sidebar-no-comments1 = Näetkö jotain huomionarvoista? Korosta se ja jätä kommentti.
pdfjs-editor-comments-sidebar-no-comments-link = Lue lisää
## Alt-text dialog ## Alt-text dialog
pdfjs-editor-alt-text-button-label = Vaihtoehtoinen teksti pdfjs-editor-alt-text-button-label = Vaihtoehtoinen teksti
pdfjs-editor-alt-text-edit-button = pdfjs-editor-alt-text-edit-button =
.aria-label = Muokkaa vaihtoehtoista tekstiä .aria-label = Muokkaa vaihtoehtoista tekstiä
pdfjs-editor-alt-text-edit-button-label = Muokkaa vaihtoehtoista tekstiä
pdfjs-editor-alt-text-dialog-label = Valitse vaihtoehto pdfjs-editor-alt-text-dialog-label = Valitse vaihtoehto
pdfjs-editor-alt-text-dialog-description = Vaihtoehtoinen teksti ("alt-teksti") auttaa ihmisiä, jotka eivät näe kuvaa tai kun kuva ei lataudu. pdfjs-editor-alt-text-dialog-description = Vaihtoehtoinen teksti ("alt-teksti") auttaa ihmisiä, jotka eivät näe kuvaa tai kun kuva ei lataudu.
pdfjs-editor-alt-text-add-description-label = Lisää kuvaus pdfjs-editor-alt-text-add-description-label = Lisää kuvaus
@ -380,14 +414,6 @@ pdfjs-editor-alt-text-button =
## Editor resizers ## Editor resizers
## This is used in an aria label to help to understand the role of the resizer. ## This is used in an aria label to help to understand the role of the resizer.
pdfjs-editor-resizer-label-top-left = Vasen yläkulma - muuta kokoa
pdfjs-editor-resizer-label-top-middle = Ylhäällä keskellä - muuta kokoa
pdfjs-editor-resizer-label-top-right = Oikea yläkulma - muuta kokoa
pdfjs-editor-resizer-label-middle-right = Keskellä oikealla - muuta kokoa
pdfjs-editor-resizer-label-bottom-right = Oikea alakulma - muuta kokoa
pdfjs-editor-resizer-label-bottom-middle = Alhaalla keskellä - muuta kokoa
pdfjs-editor-resizer-label-bottom-left = Vasen alakulma - muuta kokoa
pdfjs-editor-resizer-label-middle-left = Keskellä vasemmalla - muuta kokoa
pdfjs-editor-resizer-top-left = pdfjs-editor-resizer-top-left =
.aria-label = Vasen yläkulma - muuta kokoa .aria-label = Vasen yläkulma - muuta kokoa
pdfjs-editor-resizer-top-middle = pdfjs-editor-resizer-top-middle =
@ -453,7 +479,6 @@ pdfjs-editor-new-alt-text-error-close-button = Sulje
# Variables: # Variables:
# $totalSize (Number) - the total size (in MB) of the AI model. # $totalSize (Number) - the total size (in MB) of the AI model.
# $downloadedSize (Number) - the downloaded size (in MB) of the AI model. # $downloadedSize (Number) - the downloaded size (in MB) of the AI model.
# $percent (Number) - the percentage of the downloaded size.
pdfjs-editor-new-alt-text-ai-model-downloading-progress = Ladataan vaihtoehtoisen tekstin tekoälymallia ({ $downloadedSize } / { $totalSize } Mt) pdfjs-editor-new-alt-text-ai-model-downloading-progress = Ladataan vaihtoehtoisen tekstin tekoälymallia ({ $downloadedSize } / { $totalSize } Mt)
.aria-valuetext = Ladataan vaihtoehtoisen tekstin tekoälymallia ({ $downloadedSize } / { $totalSize } Mt) .aria-valuetext = Ladataan vaihtoehtoisen tekstin tekoälymallia ({ $downloadedSize } / { $totalSize } Mt)
# This is a button that users can click to edit the alt text they have already added. # This is a button that users can click to edit the alt text they have already added.
@ -493,3 +518,133 @@ pdfjs-editor-alt-text-settings-editor-title = Vaihtoehtoisen tekstin muokkain
pdfjs-editor-alt-text-settings-show-dialog-button-label = Näytä vaihtoehtoisen tekstin muokkain heti, kun lisäät kuvan pdfjs-editor-alt-text-settings-show-dialog-button-label = Näytä vaihtoehtoisen tekstin muokkain heti, kun lisäät kuvan
pdfjs-editor-alt-text-settings-show-dialog-description = Auttaa varmistamaan, että kaikissa kuvissasi on vaihtoehtoinen teksti. pdfjs-editor-alt-text-settings-show-dialog-description = Auttaa varmistamaan, että kaikissa kuvissasi on vaihtoehtoinen teksti.
pdfjs-editor-alt-text-settings-close-button = Sulje pdfjs-editor-alt-text-settings-close-button = Sulje
## Accessibility labels (announced by screen readers) for objects added to the editor.
pdfjs-editor-highlight-added-alert = Korostus lisätty
pdfjs-editor-freetext-added-alert = Teksti lisätty
pdfjs-editor-ink-added-alert = Piirustus lisätty
pdfjs-editor-stamp-added-alert = Kuva lisätty
pdfjs-editor-signature-added-alert = Allekirjoitus lisätty
## "Annotations removed" bar
pdfjs-editor-undo-bar-message-highlight = Korostus poistettu
pdfjs-editor-undo-bar-message-freetext = Teksti poistettu
pdfjs-editor-undo-bar-message-ink = Piirustus poistettu
pdfjs-editor-undo-bar-message-stamp = Kuva poistettu
pdfjs-editor-undo-bar-message-signature = Allekirjoitus poistettu
# Variables:
# $count (Number) - the number of removed annotations.
pdfjs-editor-undo-bar-message-multiple =
{ $count ->
[one] { $count } merkintä poistettu
*[other] { $count } merkintää poistettu
}
pdfjs-editor-undo-bar-undo-button =
.title = Kumoa
pdfjs-editor-undo-bar-undo-button-label = Kumoa
pdfjs-editor-undo-bar-close-button =
.title = Sulje
pdfjs-editor-undo-bar-close-button-label = Sulje
## Add a signature dialog
pdfjs-editor-add-signature-dialog-label = Tämän ikkunan avulla käyttäjä voi luoda allekirjoituksen PDF-asiakirjaan lisättäväksi. Käyttäjä voi muokata nimeä (joka toimii myös vaihtoehtoisena tekstinä) ja valinnaisesti tallentaa allekirjoituksen toistuvaa käyttöä varten.
pdfjs-editor-add-signature-dialog-title = Lisää allekirjoitus
## Tab names
# Type is a verb (you can type your name as signature)
pdfjs-editor-add-signature-type-button = Kirjoita
.title = Kirjoita
# Draw is a verb (you can draw your signature)
pdfjs-editor-add-signature-draw-button = Piirrä
.title = Piirrä
pdfjs-editor-add-signature-image-button = Kuva
.title = Kuva
## Tab panels
pdfjs-editor-add-signature-type-input =
.aria-label = Kirjoita allekirjoituksesi
.placeholder = Kirjoita allekirjoituksesi
pdfjs-editor-add-signature-draw-placeholder = Piirrä allekirjoituksesi
pdfjs-editor-add-signature-draw-thickness-range-label = Paksuus
# Variables:
# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.
pdfjs-editor-add-signature-draw-thickness-range =
.title = Piirustuksen paksuus: { $thickness }
pdfjs-editor-add-signature-image-placeholder = Lähetä tiedosto vetämällä se tähän
pdfjs-editor-add-signature-image-browse-link =
{ PLATFORM() ->
[macos] Tai selaa kuvatiedostoja
*[other] Tai selaa kuvatiedostoja
}
## Controls
pdfjs-editor-add-signature-description-label = Kuvaus (vaihtoehtoinen teksti)
pdfjs-editor-add-signature-description-input =
.title = Kuvaus (vaihtoehtoinen teksti)
pdfjs-editor-add-signature-description-default-when-drawing = Allekirjoitus
pdfjs-editor-add-signature-clear-button-label = Tyhjennä allekirjoitus
pdfjs-editor-add-signature-clear-button =
.title = Tyhjennä allekirjoitus
pdfjs-editor-add-signature-save-checkbox = Tallenna allekirjoitus
pdfjs-editor-add-signature-save-warning-message = Olet saavuttanut viiden tallennetun allekirjoituksen rajan. Poista yksi säästääksesi lisää.
pdfjs-editor-add-signature-image-upload-error-title = Kuvaa ei voitu lähettää
pdfjs-editor-add-signature-image-upload-error-description = Tarkista verkkoyhteyden tila tai kokeile toista kuvaa.
pdfjs-editor-add-signature-image-no-data-error-title = Tätä kuvaa ei voida muuntaa allekirjoitukseksi
pdfjs-editor-add-signature-image-no-data-error-description = Yritä lähettää eri kuva.
pdfjs-editor-add-signature-error-close-button = Sulje
## Dialog buttons
pdfjs-editor-add-signature-cancel-button = Peruuta
pdfjs-editor-add-signature-add-button = Lisää
pdfjs-editor-edit-signature-update-button = Päivitä
## Comment popup
pdfjs-editor-edit-comment-popup-button-label = Muokkaa kommenttia
pdfjs-editor-edit-comment-popup-button =
.title = Muokkaa kommenttia
pdfjs-editor-delete-comment-popup-button-label = Poista kommentti
pdfjs-editor-delete-comment-popup-button =
.title = Poista kommentti
pdfjs-show-comment-button =
.title = Näytä kommentti
## Edit a comment dialog
# An existing comment is edited
pdfjs-editor-edit-comment-dialog-title-when-editing = Muokkaa kommenttia
pdfjs-editor-edit-comment-dialog-save-button-when-editing = Päivitä
# No existing comment
pdfjs-editor-edit-comment-dialog-title-when-adding = Lisää kommentti
pdfjs-editor-edit-comment-dialog-save-button-when-adding = Lisää
pdfjs-editor-edit-comment-dialog-text-input =
.placeholder = Aloita kirjoittaminen…
pdfjs-editor-edit-comment-dialog-cancel-button = Peruuta
## Edit a comment button in the editor toolbar
pdfjs-editor-edit-comment-button =
.title = Muokkaa kommenttia
pdfjs-editor-add-comment-button =
.title = Lisää kommentti
## Main menu for adding/removing signatures
pdfjs-editor-delete-signature-button1 =
.title = Poista tallennettu allekirjoitus
pdfjs-editor-delete-signature-button-label1 = Poista tallennettu allekirjoitus
## Editor toolbar
pdfjs-editor-add-signature-edit-button-label = Muokkaa kuvausta
## Edit signature description dialog
pdfjs-editor-edit-signature-dialog-title = Muokkaa kuvausta

View File

@ -112,14 +112,6 @@ pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) }
# $mb (Number) - the PDF file size in megabytes # $mb (Number) - the PDF file size in megabytes
# $b (Number) - the PDF file size in bytes # $b (Number) - the PDF file size in bytes
pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } Mo ({ $b } octets) pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } Mo ({ $b } octets)
# Variables:
# $size_kb (Number) - the PDF file size in kilobytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-kb = { $size_kb } Ko ({ $size_b } octets)
# Variables:
# $size_mb (Number) - the PDF file size in megabytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-mb = { $size_mb } Mo ({ $size_b } octets)
pdfjs-document-properties-title = Titre : pdfjs-document-properties-title = Titre :
pdfjs-document-properties-author = Auteur : pdfjs-document-properties-author = Auteur :
pdfjs-document-properties-subject = Sujet : pdfjs-document-properties-subject = Sujet :
@ -129,10 +121,6 @@ pdfjs-document-properties-modification-date = Modifié le :
# Variables: # Variables:
# $dateObj (Date) - the creation/modification date and time of the PDF file # $dateObj (Date) - the creation/modification date and time of the PDF file
pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") } pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
# Variables:
# $date (Date) - the creation/modification date of the PDF file
# $time (Time) - the creation/modification time of the PDF file
pdfjs-document-properties-date-string = { $date } à { $time }
pdfjs-document-properties-creator = Créé par : pdfjs-document-properties-creator = Créé par :
pdfjs-document-properties-producer = Outil de conversion PDF : pdfjs-document-properties-producer = Outil de conversion PDF :
pdfjs-document-properties-version = Version PDF : pdfjs-document-properties-version = Version PDF :
@ -271,10 +259,6 @@ pdfjs-rendering-error = Une erreur sest produite lors de laffichage de la
## Annotations ## Annotations
# Variables:
# $date (Date) - the modification date of the annotation
# $time (Time) - the modification time of the annotation
pdfjs-annotation-date-string = { $date } à { $time }
# .alt: This is used as a tooltip. # .alt: This is used as a tooltip.
# Variables: # Variables:
# $type (String) - an annotation type from a list defined in the PDF spec # $type (String) - an annotation type from a list defined in the PDF spec
@ -298,9 +282,13 @@ pdfjs-web-fonts-disabled = Les polices web sont désactivées : impossible d
pdfjs-editor-free-text-button = pdfjs-editor-free-text-button =
.title = Texte .title = Texte
pdfjs-editor-color-picker-free-text-input =
.title = Changer la couleur du texte
pdfjs-editor-free-text-button-label = Texte pdfjs-editor-free-text-button-label = Texte
pdfjs-editor-ink-button = pdfjs-editor-ink-button =
.title = Dessiner .title = Dessiner
pdfjs-editor-color-picker-ink-input =
.title = Changer la couleur pour dessiner
pdfjs-editor-ink-button-label = Dessiner pdfjs-editor-ink-button-label = Dessiner
pdfjs-editor-stamp-button = pdfjs-editor-stamp-button =
.title = Ajouter ou modifier des images .title = Ajouter ou modifier des images
@ -312,6 +300,33 @@ pdfjs-highlight-floating-button1 =
.title = Surligner .title = Surligner
.aria-label = Surligner .aria-label = Surligner
pdfjs-highlight-floating-button-label = Surligner pdfjs-highlight-floating-button-label = Surligner
pdfjs-comment-floating-button =
.title = Commenter
.aria-label = Commenter
pdfjs-comment-floating-button-label = Commenter
pdfjs-editor-comment-button =
.title = Commenter
.aria-label = Commenter
pdfjs-editor-comment-button-label = Commenter
pdfjs-editor-signature-button =
.title = Ajouter une signature
pdfjs-editor-signature-button-label = Ajouter une signature
## Default editor aria labels
# “Highlight” is a noun, the string is used on the editor for highlights.
pdfjs-editor-highlight-editor =
.aria-label = Éditeur de surlignage
# “Drawing” is a noun, the string is used on the editor for drawings.
pdfjs-editor-ink-editor =
.aria-label = Éditeur de dessins
# Used when a signature editor is selected/hovered.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-signature-editor1 =
.aria-description = Éditeur de signature : { $description }
pdfjs-editor-stamp-editor =
.aria-label = Éditeur dimages
## Remove button for the various kind of editor. ## Remove button for the various kind of editor.
@ -323,6 +338,8 @@ pdfjs-editor-remove-stamp-button =
.title = Supprimer limage .title = Supprimer limage
pdfjs-editor-remove-highlight-button = pdfjs-editor-remove-highlight-button =
.title = Supprimer le surlignage .title = Supprimer le surlignage
pdfjs-editor-remove-signature-button =
.title = Retirer la signature
## ##
@ -339,24 +356,41 @@ pdfjs-editor-stamp-add-image-button-label = Ajouter une image
pdfjs-editor-free-highlight-thickness-input = Épaisseur pdfjs-editor-free-highlight-thickness-input = Épaisseur
pdfjs-editor-free-highlight-thickness-title = pdfjs-editor-free-highlight-thickness-title =
.title = Modifier lépaisseur pour le surlignage déléments non textuels .title = Modifier lépaisseur pour le surlignage déléments non textuels
pdfjs-editor-add-signature-container =
.aria-label = Contrôles de signature et signatures enregistrées
pdfjs-editor-signature-add-signature-button =
.title = Ajouter une nouvelle signature
pdfjs-editor-signature-add-signature-button-label = Ajouter une nouvelle signature
# Used on the button to use an already saved signature.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-add-saved-signature-button =
.title = Signature enregistrée : { $description }
# .default-content is used as a placeholder in an empty text editor. # .default-content is used as a placeholder in an empty text editor.
pdfjs-free-text2 = pdfjs-free-text2 =
.aria-label = Éditeur de texte .aria-label = Éditeur de texte
.default-content = Commencez à écrire… .default-content = Commencez à écrire…
pdfjs-free-text = # Used to show how many comments are present in the pdf file.
.aria-label = Éditeur de texte # Variables:
pdfjs-free-text-default-content = Commencer à écrire… # $count (Number) - the number of comments.
pdfjs-ink = pdfjs-editor-comments-sidebar-title =
.aria-label = Éditeur de dessin { $count ->
pdfjs-ink-canvas = [one] Commentaire
.aria-label = Image créée par lutilisateur·trice *[other] Commentaires
}
pdfjs-editor-comments-sidebar-close-button =
.title = Fermer le panneau latéral
.aria-label = Fermer le panneau latéral
pdfjs-editor-comments-sidebar-close-button-label = Fermer le panneau latéral
# Instructional copy to add a comment by selecting text or an annotations.
pdfjs-editor-comments-sidebar-no-comments1 = Vous remarquez quelque chose dintéressant ? Mettez-le en surbrillance et ajoutez un commentaire.
pdfjs-editor-comments-sidebar-no-comments-link = En savoir plus
## Alt-text dialog ## Alt-text dialog
pdfjs-editor-alt-text-button-label = Texte alternatif pdfjs-editor-alt-text-button-label = Texte alternatif
pdfjs-editor-alt-text-edit-button = pdfjs-editor-alt-text-edit-button =
.aria-label = Modifier le texte alternatif .aria-label = Modifier le texte alternatif
pdfjs-editor-alt-text-edit-button-label = Modifier le texte alternatif
pdfjs-editor-alt-text-dialog-label = Sélectionnez une option pdfjs-editor-alt-text-dialog-label = Sélectionnez une option
pdfjs-editor-alt-text-dialog-description = Le texte alternatif est utile lorsque des personnes ne peuvent pas voir limage ou que limage ne se charge pas. pdfjs-editor-alt-text-dialog-description = Le texte alternatif est utile lorsque des personnes ne peuvent pas voir limage ou que limage ne se charge pas.
pdfjs-editor-alt-text-add-description-label = Ajouter une description pdfjs-editor-alt-text-add-description-label = Ajouter une description
@ -376,14 +410,6 @@ pdfjs-editor-alt-text-button =
## Editor resizers ## Editor resizers
## This is used in an aria label to help to understand the role of the resizer. ## This is used in an aria label to help to understand the role of the resizer.
pdfjs-editor-resizer-label-top-left = Coin supérieur gauche — redimensionner
pdfjs-editor-resizer-label-top-middle = Milieu haut — redimensionner
pdfjs-editor-resizer-label-top-right = Coin supérieur droit — redimensionner
pdfjs-editor-resizer-label-middle-right = Milieu droit — redimensionner
pdfjs-editor-resizer-label-bottom-right = Coin inférieur droit — redimensionner
pdfjs-editor-resizer-label-bottom-middle = Centre bas — redimensionner
pdfjs-editor-resizer-label-bottom-left = Coin inférieur gauche — redimensionner
pdfjs-editor-resizer-label-middle-left = Milieu gauche — redimensionner
pdfjs-editor-resizer-top-left = pdfjs-editor-resizer-top-left =
.aria-label = Coin supérieur gauche — redimensionner .aria-label = Coin supérieur gauche — redimensionner
pdfjs-editor-resizer-top-middle = pdfjs-editor-resizer-top-middle =
@ -449,7 +475,6 @@ pdfjs-editor-new-alt-text-error-close-button = Fermer
# Variables: # Variables:
# $totalSize (Number) - the total size (in MB) of the AI model. # $totalSize (Number) - the total size (in MB) of the AI model.
# $downloadedSize (Number) - the downloaded size (in MB) of the AI model. # $downloadedSize (Number) - the downloaded size (in MB) of the AI model.
# $percent (Number) - the percentage of the downloaded size.
pdfjs-editor-new-alt-text-ai-model-downloading-progress = Téléchargement du modèle dIA de texte alternatif ({ $downloadedSize } sur { $totalSize } Mo) pdfjs-editor-new-alt-text-ai-model-downloading-progress = Téléchargement du modèle dIA de texte alternatif ({ $downloadedSize } sur { $totalSize } Mo)
.aria-valuetext = Téléchargement du modèle dIA de texte alternatif ({ $downloadedSize } sur { $totalSize } Mo) .aria-valuetext = Téléchargement du modèle dIA de texte alternatif ({ $downloadedSize } sur { $totalSize } Mo)
# This is a button that users can click to edit the alt text they have already added. # This is a button that users can click to edit the alt text they have already added.
@ -489,3 +514,133 @@ pdfjs-editor-alt-text-settings-editor-title = Éditeur de texte alternatif
pdfjs-editor-alt-text-settings-show-dialog-button-label = Afficher léditeur de texte alternatif immédiatement lors de lajout dune image pdfjs-editor-alt-text-settings-show-dialog-button-label = Afficher léditeur de texte alternatif immédiatement lors de lajout dune image
pdfjs-editor-alt-text-settings-show-dialog-description = Vous aide à vous assurer que toutes vos images ont du texte alternatif. pdfjs-editor-alt-text-settings-show-dialog-description = Vous aide à vous assurer que toutes vos images ont du texte alternatif.
pdfjs-editor-alt-text-settings-close-button = Fermer pdfjs-editor-alt-text-settings-close-button = Fermer
## Accessibility labels (announced by screen readers) for objects added to the editor.
pdfjs-editor-highlight-added-alert = Surlignage ajouté
pdfjs-editor-freetext-added-alert = Texte ajouté
pdfjs-editor-ink-added-alert = Dessin ajouté
pdfjs-editor-stamp-added-alert = Image ajoutée
pdfjs-editor-signature-added-alert = Signature ajoutée
## "Annotations removed" bar
pdfjs-editor-undo-bar-message-highlight = Surlignage supprimé
pdfjs-editor-undo-bar-message-freetext = Texte supprimé
pdfjs-editor-undo-bar-message-ink = Dessin supprimé
pdfjs-editor-undo-bar-message-stamp = Image supprimée
pdfjs-editor-undo-bar-message-signature = Signature retirée
# Variables:
# $count (Number) - the number of removed annotations.
pdfjs-editor-undo-bar-message-multiple =
{ $count ->
[one] { $count } annotation supprimée
*[other] { $count } annotations supprimées
}
pdfjs-editor-undo-bar-undo-button =
.title = Annuler
pdfjs-editor-undo-bar-undo-button-label = Annuler
pdfjs-editor-undo-bar-close-button =
.title = Fermer
pdfjs-editor-undo-bar-close-button-label = Fermer
## Add a signature dialog
pdfjs-editor-add-signature-dialog-label = Cette fenêtre permet de créer une signature à ajouter à un document au format PDF. Il est possible den modifier le nom (qui sert également de texte alternatif) et, éventuellement, de lenregistrer pour une utilisation répétée.
pdfjs-editor-add-signature-dialog-title = Ajout dune signature
## Tab names
# Type is a verb (you can type your name as signature)
pdfjs-editor-add-signature-type-button = Saisir
.title = Saisir au clavier
# Draw is a verb (you can draw your signature)
pdfjs-editor-add-signature-draw-button = Dessiner
.title = Dessiner
pdfjs-editor-add-signature-image-button = Image
.title = Image
## Tab panels
pdfjs-editor-add-signature-type-input =
.aria-label = Saisissez votre signature
.placeholder = Saisissez votre signature
pdfjs-editor-add-signature-draw-placeholder = Tracez votre signature
pdfjs-editor-add-signature-draw-thickness-range-label = Épaisseur
# Variables:
# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.
pdfjs-editor-add-signature-draw-thickness-range =
.title = Épaisseur du trait : { $thickness }
pdfjs-editor-add-signature-image-placeholder = Déposez un fichier ici pour lenvoyer
pdfjs-editor-add-signature-image-browse-link =
{ PLATFORM() ->
[macos] Ou choisissez parmi les fichiers image
*[other] Ou parcourez les fichiers image
}
## Controls
pdfjs-editor-add-signature-description-label = Description (texte alternatif)
pdfjs-editor-add-signature-description-input =
.title = Description (texte alternatif)
pdfjs-editor-add-signature-description-default-when-drawing = Signature
pdfjs-editor-add-signature-clear-button-label = Effacer la signature
pdfjs-editor-add-signature-clear-button =
.title = Effacer la signature
pdfjs-editor-add-signature-save-checkbox = Enregistrer la signature
pdfjs-editor-add-signature-save-warning-message = Vous avez atteint la limite de 5 signatures enregistrées. Supprimez-en une pour en enregistrer une autre.
pdfjs-editor-add-signature-image-upload-error-title = Impossible denvoyer limage
pdfjs-editor-add-signature-image-upload-error-description = Vérifiez votre connexion réseau ou essayez avec une autre image.
pdfjs-editor-add-signature-image-no-data-error-title = Impossible de convertir cette image en signature
pdfjs-editor-add-signature-image-no-data-error-description = Veuillez essayer denvoyer une autre image.
pdfjs-editor-add-signature-error-close-button = Fermer
## Dialog buttons
pdfjs-editor-add-signature-cancel-button = Annuler
pdfjs-editor-add-signature-add-button = Ajouter
pdfjs-editor-edit-signature-update-button = Mettre à jour
## Comment popup
pdfjs-editor-edit-comment-popup-button-label = Modifier le commentaire
pdfjs-editor-edit-comment-popup-button =
.title = Modifier le commentaire
pdfjs-editor-delete-comment-popup-button-label = Supprimer le commentaire
pdfjs-editor-delete-comment-popup-button =
.title = Supprimer le commentaire
pdfjs-show-comment-button =
.title = Voir les commentaires
## Edit a comment dialog
# An existing comment is edited
pdfjs-editor-edit-comment-dialog-title-when-editing = Modifier le commentaire
pdfjs-editor-edit-comment-dialog-save-button-when-editing = Mettre à jour
# No existing comment
pdfjs-editor-edit-comment-dialog-title-when-adding = Ajouter un commentaire
pdfjs-editor-edit-comment-dialog-save-button-when-adding = Ajouter
pdfjs-editor-edit-comment-dialog-text-input =
.placeholder = Commencer à écrire…
pdfjs-editor-edit-comment-dialog-cancel-button = Annuler
## Edit a comment button in the editor toolbar
pdfjs-editor-edit-comment-button =
.title = Modifier le commentaire
pdfjs-editor-add-comment-button =
.title = Ajouter un commentaire
## Main menu for adding/removing signatures
pdfjs-editor-delete-signature-button1 =
.title = Supprimer la signature enregistrée
pdfjs-editor-delete-signature-button-label1 = Supprimer la signature enregistrée
## Editor toolbar
pdfjs-editor-add-signature-edit-button-label = Modifier la description
## Edit signature description dialog
pdfjs-editor-edit-signature-dialog-title = Modifier la description

View File

@ -6,7 +6,7 @@
## Main toolbar buttons (tooltips and alt text for images) ## Main toolbar buttons (tooltips and alt text for images)
pdfjs-previous-button = pdfjs-previous-button =
.title = Pagjine precedente .title = Pagjine di prime
pdfjs-previous-button-label = Indaûr pdfjs-previous-button-label = Indaûr
pdfjs-next-button = pdfjs-next-button =
.title = Prossime pagjine .title = Prossime pagjine
@ -112,14 +112,6 @@ pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) }
# $mb (Number) - the PDF file size in megabytes # $mb (Number) - the PDF file size in megabytes
# $b (Number) - the PDF file size in bytes # $b (Number) - the PDF file size in bytes
pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes) pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes)
# Variables:
# $size_kb (Number) - the PDF file size in kilobytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bytes)
# Variables:
# $size_mb (Number) - the PDF file size in megabytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-mb = { $size_mb } MB ({ $size_b } bytes)
pdfjs-document-properties-title = Titul: pdfjs-document-properties-title = Titul:
pdfjs-document-properties-author = Autôr: pdfjs-document-properties-author = Autôr:
pdfjs-document-properties-subject = Ogjet: pdfjs-document-properties-subject = Ogjet:
@ -129,10 +121,6 @@ pdfjs-document-properties-modification-date = Date di modifiche:
# Variables: # Variables:
# $dateObj (Date) - the creation/modification date and time of the PDF file # $dateObj (Date) - the creation/modification date and time of the PDF file
pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") } pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
# Variables:
# $date (Date) - the creation/modification date of the PDF file
# $time (Time) - the creation/modification time of the PDF file
pdfjs-document-properties-date-string = { $date }, { $time }
pdfjs-document-properties-creator = Creatôr pdfjs-document-properties-creator = Creatôr
pdfjs-document-properties-producer = Gjeneradôr PDF: pdfjs-document-properties-producer = Gjeneradôr PDF:
pdfjs-document-properties-version = Version PDF: pdfjs-document-properties-version = Version PDF:
@ -275,10 +263,6 @@ pdfjs-rendering-error = Al è vignût fûr un erôr tal realizâ la visualizazio
## Annotations ## Annotations
# Variables:
# $date (Date) - the modification date of the annotation
# $time (Time) - the modification time of the annotation
pdfjs-annotation-date-string = { $date }, { $time }
# .alt: This is used as a tooltip. # .alt: This is used as a tooltip.
# Variables: # Variables:
# $type (String) - an annotation type from a list defined in the PDF spec # $type (String) - an annotation type from a list defined in the PDF spec
@ -302,9 +286,13 @@ pdfjs-web-fonts-disabled = I caratars dal Web a son disativâts: Impussibil dopr
pdfjs-editor-free-text-button = pdfjs-editor-free-text-button =
.title = Test .title = Test
pdfjs-editor-color-picker-free-text-input =
.title = Cambie colôr dal test
pdfjs-editor-free-text-button-label = Test pdfjs-editor-free-text-button-label = Test
pdfjs-editor-ink-button = pdfjs-editor-ink-button =
.title = Dissen .title = Dissen
pdfjs-editor-color-picker-ink-input =
.title = Cambie colôr dal dissen
pdfjs-editor-ink-button-label = Dissen pdfjs-editor-ink-button-label = Dissen
pdfjs-editor-stamp-button = pdfjs-editor-stamp-button =
.title = Zonte o modifiche imagjins .title = Zonte o modifiche imagjins
@ -316,6 +304,33 @@ pdfjs-highlight-floating-button1 =
.title = Evidenzie .title = Evidenzie
.aria-label = Evidenzie .aria-label = Evidenzie
pdfjs-highlight-floating-button-label = Evidenzie pdfjs-highlight-floating-button-label = Evidenzie
pdfjs-comment-floating-button =
.title = Comente
.aria-label = Comente
pdfjs-comment-floating-button-label = Comente
pdfjs-editor-comment-button =
.title = Comente
.aria-label = Comente
pdfjs-editor-comment-button-label = Comente
pdfjs-editor-signature-button =
.title = Zonte firme
pdfjs-editor-signature-button-label = Zonte firme
## Default editor aria labels
# “Highlight” is a noun, the string is used on the editor for highlights.
pdfjs-editor-highlight-editor =
.aria-label = Modifiche evidenziazions
# “Drawing” is a noun, the string is used on the editor for drawings.
pdfjs-editor-ink-editor =
.aria-label = Modifiche dissens
# Used when a signature editor is selected/hovered.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-signature-editor1 =
.aria-description = Editôr firmis: { $description }
pdfjs-editor-stamp-editor =
.aria-label = Modifiche imagjins
## Remove button for the various kind of editor. ## Remove button for the various kind of editor.
@ -327,6 +342,8 @@ pdfjs-editor-remove-stamp-button =
.title = Gjave imagjin .title = Gjave imagjin
pdfjs-editor-remove-highlight-button = pdfjs-editor-remove-highlight-button =
.title = Gjave evidenziazion .title = Gjave evidenziazion
pdfjs-editor-remove-signature-button =
.title = Gjave firme
## ##
@ -343,23 +360,41 @@ pdfjs-editor-stamp-add-image-button-label = Zonte imagjin
pdfjs-editor-free-highlight-thickness-input = Spessôr pdfjs-editor-free-highlight-thickness-input = Spessôr
pdfjs-editor-free-highlight-thickness-title = pdfjs-editor-free-highlight-thickness-title =
.title = Modifiche il spessôr de selezion pai elements che no son testuâi .title = Modifiche il spessôr de selezion pai elements che no son testuâi
pdfjs-editor-add-signature-container =
.aria-label = Controi firme e firmis salvadis
pdfjs-editor-signature-add-signature-button =
.title = Zonte gnove firme
pdfjs-editor-signature-add-signature-button-label = Zonte gnove firme
# Used on the button to use an already saved signature.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-add-saved-signature-button =
.title = Firme salvade: { $description }
# .default-content is used as a placeholder in an empty text editor. # .default-content is used as a placeholder in an empty text editor.
pdfjs-free-text2 = pdfjs-free-text2 =
.aria-label = Editôr di test .aria-label = Editôr di test
.default-content = Scomence a scrivi… .default-content = Scomence a scrivi…
pdfjs-free-text = # Used to show how many comments are present in the pdf file.
.aria-label = Editôr di test # Variables:
pdfjs-free-text-default-content = Scomence a scrivi… # $count (Number) - the number of comments.
pdfjs-ink = pdfjs-editor-comments-sidebar-title =
.aria-label = Editôr dissens { $count ->
pdfjs-ink-canvas = [one] Coment
.aria-label = Imagjin creade dal utent *[other] Coments
}
pdfjs-editor-comments-sidebar-close-button =
.title = Siere la sbare laterâl
.aria-label = Siere la sbare laterâl
pdfjs-editor-comments-sidebar-close-button-label = Siere la sbare laterâl
# Instructional copy to add a comment by selecting text or an annotations.
pdfjs-editor-comments-sidebar-no-comments1 = Âstu cjatât alc di interessant? Evidenzilu e lasse un coment.
pdfjs-editor-comments-sidebar-no-comments-link = Plui informazions
## Alt-text dialog ## Alt-text dialog
# Alternative text (alt text) helps when people can't see the image.
pdfjs-editor-alt-text-button-label = Test alternatîf pdfjs-editor-alt-text-button-label = Test alternatîf
pdfjs-editor-alt-text-edit-button-label = Modifiche test alternatîf pdfjs-editor-alt-text-edit-button =
.aria-label = Modifiche test alternatîf
pdfjs-editor-alt-text-dialog-label = Sielç une opzion pdfjs-editor-alt-text-dialog-label = Sielç une opzion
pdfjs-editor-alt-text-dialog-description = Il test alternatîf (“alt text”) al jude cuant che lis personis no puedin viodi la imagjin o cuant che la imagjine no ven cjariade. pdfjs-editor-alt-text-dialog-description = Il test alternatîf (“alt text”) al jude cuant che lis personis no puedin viodi la imagjin o cuant che la imagjine no ven cjariade.
pdfjs-editor-alt-text-add-description-label = Zonte une descrizion pdfjs-editor-alt-text-add-description-label = Zonte une descrizion
@ -372,18 +407,13 @@ pdfjs-editor-alt-text-decorative-tooltip = Segnade come decorative
# .placeholder: This is a placeholder for the alt text input area # .placeholder: This is a placeholder for the alt text input area
pdfjs-editor-alt-text-textarea = pdfjs-editor-alt-text-textarea =
.placeholder = Par esempli, “Un zovin si sente a taule par mangjâ” .placeholder = Par esempli, “Un zovin si sente a taule par mangjâ”
# Alternative text (alt text) helps when people can't see the image.
pdfjs-editor-alt-text-button =
.aria-label = Test alternatîf
## Editor resizers ## Editor resizers
## This is used in an aria label to help to understand the role of the resizer. ## This is used in an aria label to help to understand the role of the resizer.
pdfjs-editor-resizer-label-top-left = Cjanton in alt a çampe — ridimensione
pdfjs-editor-resizer-label-top-middle = Bande superiôr tal mieç — ridimensione
pdfjs-editor-resizer-label-top-right = Cjanton in alt a diestre — ridimensione
pdfjs-editor-resizer-label-middle-right = Bande diestre tal mieç — ridimensione
pdfjs-editor-resizer-label-bottom-right = Cjanton in bas a diestre — ridimensione
pdfjs-editor-resizer-label-bottom-middle = Bande inferiôr tal mieç — ridimensione
pdfjs-editor-resizer-label-bottom-left = Cjanton in bas a çampe — ridimensione
pdfjs-editor-resizer-label-middle-left = Bande di çampe tal mieç — ridimensione
pdfjs-editor-resizer-top-left = pdfjs-editor-resizer-top-left =
.aria-label = Cjanton in alt a çampe — ridimensione .aria-label = Cjanton in alt a çampe — ridimensione
pdfjs-editor-resizer-top-middle = pdfjs-editor-resizer-top-middle =
@ -449,14 +479,19 @@ pdfjs-editor-new-alt-text-error-close-button = Siere
# Variables: # Variables:
# $totalSize (Number) - the total size (in MB) of the AI model. # $totalSize (Number) - the total size (in MB) of the AI model.
# $downloadedSize (Number) - the downloaded size (in MB) of the AI model. # $downloadedSize (Number) - the downloaded size (in MB) of the AI model.
# $percent (Number) - the percentage of the downloaded size.
pdfjs-editor-new-alt-text-ai-model-downloading-progress = Daûr a discjariâil model IA pal test alternatîf ({ $downloadedSize } di { $totalSize } MB) pdfjs-editor-new-alt-text-ai-model-downloading-progress = Daûr a discjariâil model IA pal test alternatîf ({ $downloadedSize } di { $totalSize } MB)
.aria-valuetext = Daûr a discjariâ il model IA pal test alternatîf ({ $downloadedSize } di { $totalSize } MB) .aria-valuetext = Daûr a discjariâ il model IA pal test alternatîf ({ $downloadedSize } di { $totalSize } MB)
# This is a button that users can click to edit the alt text they have already added. # This is a button that users can click to edit the alt text they have already added.
pdfjs-editor-new-alt-text-added-button =
.aria-label = Test alternatîf zontât
pdfjs-editor-new-alt-text-added-button-label = Test alternatîf zontât pdfjs-editor-new-alt-text-added-button-label = Test alternatîf zontât
# This is a button that users can click to open the alt text editor and add alt text when it is not present. # This is a button that users can click to open the alt text editor and add alt text when it is not present.
pdfjs-editor-new-alt-text-missing-button =
.aria-label = Al mancje il test alternatîf
pdfjs-editor-new-alt-text-missing-button-label = Al mancje il test alternatîf pdfjs-editor-new-alt-text-missing-button-label = Al mancje il test alternatîf
# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.
pdfjs-editor-new-alt-text-to-review-button =
.aria-label = Verifiche test alternatîf
pdfjs-editor-new-alt-text-to-review-button-label = Verifiche test alternatîf pdfjs-editor-new-alt-text-to-review-button-label = Verifiche test alternatîf
# "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.
# Variables: # Variables:
@ -483,3 +518,131 @@ pdfjs-editor-alt-text-settings-editor-title = Modifiche test alternatîf
pdfjs-editor-alt-text-settings-show-dialog-button-label = Mostre l'editôr dal test alternatîf a pene che e ven zontade une imagjin pdfjs-editor-alt-text-settings-show-dialog-button-label = Mostre l'editôr dal test alternatîf a pene che e ven zontade une imagjin
pdfjs-editor-alt-text-settings-show-dialog-description = Ti jude a sigurâti che dutis lis tôs imagjins a vedin il test alternatîf. pdfjs-editor-alt-text-settings-show-dialog-description = Ti jude a sigurâti che dutis lis tôs imagjins a vedin il test alternatîf.
pdfjs-editor-alt-text-settings-close-button = Siere pdfjs-editor-alt-text-settings-close-button = Siere
## Accessibility labels (announced by screen readers) for objects added to the editor.
pdfjs-editor-highlight-added-alert = Evidenziazion zontade
pdfjs-editor-freetext-added-alert = Test zontât
pdfjs-editor-ink-added-alert = Dissen zontât
pdfjs-editor-stamp-added-alert = Imagjin zontade
pdfjs-editor-signature-added-alert = Firme zontade
## "Annotations removed" bar
pdfjs-editor-undo-bar-message-highlight = Evidenziazion gjavade
pdfjs-editor-undo-bar-message-freetext = Test gjavât
pdfjs-editor-undo-bar-message-ink = Dissen gjavât
pdfjs-editor-undo-bar-message-stamp = Imagjin gjavade
pdfjs-editor-undo-bar-message-signature = Firme gjavade
# Variables:
# $count (Number) - the number of removed annotations.
pdfjs-editor-undo-bar-message-multiple =
{ $count ->
[one] { $count } note gjavade
*[other] { $count } notis gjavadis
}
pdfjs-editor-undo-bar-undo-button =
.title = Anule
pdfjs-editor-undo-bar-undo-button-label = Anule
pdfjs-editor-undo-bar-close-button =
.title = Siere
pdfjs-editor-undo-bar-close-button-label = Siere
## Add a signature dialog
pdfjs-editor-add-signature-dialog-label = Chest barcon al permet al utent di creâ une firme di zontâ a un document PDF. Lutent al pues modificâ il non (che al vignarà doprât ancje come test alternatîf) e, se lu desidere, salvâ la firme par tornâ a doprâle un doman.
pdfjs-editor-add-signature-dialog-title = Zonte une firme
## Tab names
# Type is a verb (you can type your name as signature)
pdfjs-editor-add-signature-type-button = Scrîf
.title = Scrîf
# Draw is a verb (you can draw your signature)
pdfjs-editor-add-signature-draw-button = Dissegne
.title = Dissegne
pdfjs-editor-add-signature-image-button = Imagjin
.title = Imagjin
## Tab panels
pdfjs-editor-add-signature-type-input =
.aria-label = Scrîf la tô firme
.placeholder = Scrîf la tô firme
pdfjs-editor-add-signature-draw-placeholder = Dissegne la tô firme
pdfjs-editor-add-signature-draw-thickness-range-label = Spessôr
# Variables:
# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.
pdfjs-editor-add-signature-draw-thickness-range =
.title = Spessôr de tresse: { $thickness }
pdfjs-editor-add-signature-image-placeholder = Strissine un file achì par cjariâlu
pdfjs-editor-add-signature-image-browse-link =
{ PLATFORM() ->
[macos] Opûr sielç i files imagjin
*[other] Opûr sgarfe pai files imagjin
}
## Controls
pdfjs-editor-add-signature-description-label = Descrizion (test alternatîf)
pdfjs-editor-add-signature-description-input =
.title = Descrizion (test alternatîf)
pdfjs-editor-add-signature-description-default-when-drawing = Firme
pdfjs-editor-add-signature-clear-button-label = Nete firme
pdfjs-editor-add-signature-clear-button =
.title = Nete firme
pdfjs-editor-add-signature-save-checkbox = Salve firme
pdfjs-editor-add-signature-save-warning-message = Tu sês rivât/rivade al limit di 5 firmis salvadis. Gjave une par salvânt une altre.
pdfjs-editor-add-signature-image-upload-error-title = Impussibil cjariâ la imagjin
pdfjs-editor-add-signature-image-upload-error-description = Controle la conession di rêt o prove cuntune altre imagjin.
pdfjs-editor-add-signature-image-no-data-error-title = Impussibil convertî cheste imagjin intune firme
pdfjs-editor-add-signature-image-no-data-error-description = Prove a cjariâ une altre imagjin.
pdfjs-editor-add-signature-error-close-button = Siere
## Dialog buttons
pdfjs-editor-add-signature-cancel-button = Anule
pdfjs-editor-add-signature-add-button = Zonte
pdfjs-editor-edit-signature-update-button = Inzorne
## Comment popup
pdfjs-editor-edit-comment-popup-button-label = Modifiche coment
pdfjs-editor-edit-comment-popup-button =
.title = Modifiche coment
pdfjs-editor-delete-comment-popup-button-label = Gjave coment
pdfjs-editor-delete-comment-popup-button =
.title = Gjave coment
pdfjs-show-comment-button =
.title = Mostre coment
## Edit a comment dialog
# An existing comment is edited
pdfjs-editor-edit-comment-dialog-title-when-editing = Modifiche coment
pdfjs-editor-edit-comment-dialog-save-button-when-editing = Inzorne
# No existing comment
pdfjs-editor-edit-comment-dialog-title-when-adding = Zonte coment
pdfjs-editor-edit-comment-dialog-save-button-when-adding = Zonte
pdfjs-editor-edit-comment-dialog-text-input =
.placeholder = Scomence a scrivi…
pdfjs-editor-edit-comment-dialog-cancel-button = Anule
## Edit a comment button in the editor toolbar
pdfjs-editor-edit-comment-button =
.title = Modifiche coment
## Main menu for adding/removing signatures
pdfjs-editor-delete-signature-button1 =
.title = Gjave firme salvade
pdfjs-editor-delete-signature-button-label1 = Gjave firme salvade
## Editor toolbar
pdfjs-editor-add-signature-edit-button-label = Modifiche descrizion
## Edit signature description dialog
pdfjs-editor-edit-signature-dialog-title = Modifiche descrizion

View File

@ -112,14 +112,6 @@ pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) }
# $mb (Number) - the PDF file size in megabytes # $mb (Number) - the PDF file size in megabytes
# $b (Number) - the PDF file size in bytes # $b (Number) - the PDF file size in bytes
pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes) pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes)
# Variables:
# $size_kb (Number) - the PDF file size in kilobytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bytes)
# Variables:
# $size_mb (Number) - the PDF file size in megabytes
# $size_b (Number) - the PDF file size in bytes
pdfjs-document-properties-mb = { $size_mb } MB ({ $size_b } bytes)
pdfjs-document-properties-title = Titel: pdfjs-document-properties-title = Titel:
pdfjs-document-properties-author = Auteur: pdfjs-document-properties-author = Auteur:
pdfjs-document-properties-subject = Underwerp: pdfjs-document-properties-subject = Underwerp:
@ -129,10 +121,6 @@ pdfjs-document-properties-modification-date = Bewurkingsdatum:
# Variables: # Variables:
# $dateObj (Date) - the creation/modification date and time of the PDF file # $dateObj (Date) - the creation/modification date and time of the PDF file
pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") } pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") }
# Variables:
# $date (Date) - the creation/modification date of the PDF file
# $time (Time) - the creation/modification time of the PDF file
pdfjs-document-properties-date-string = { $date }, { $time }
pdfjs-document-properties-creator = Makker: pdfjs-document-properties-creator = Makker:
pdfjs-document-properties-producer = PDF-makker: pdfjs-document-properties-producer = PDF-makker:
pdfjs-document-properties-version = PDF-ferzje: pdfjs-document-properties-version = PDF-ferzje:
@ -275,10 +263,6 @@ pdfjs-rendering-error = Der is in flater bard by it renderjen fan de side.
## Annotations ## Annotations
# Variables:
# $date (Date) - the modification date of the annotation
# $time (Time) - the modification time of the annotation
pdfjs-annotation-date-string = { $date }, { $time }
# .alt: This is used as a tooltip. # .alt: This is used as a tooltip.
# Variables: # Variables:
# $type (String) - an annotation type from a list defined in the PDF spec # $type (String) - an annotation type from a list defined in the PDF spec
@ -302,9 +286,13 @@ pdfjs-web-fonts-disabled = Weblettertypen binne útskeakele: gebrûk fan ynslute
pdfjs-editor-free-text-button = pdfjs-editor-free-text-button =
.title = Tekst .title = Tekst
pdfjs-editor-color-picker-free-text-input =
.title = Tekstleur wizigje
pdfjs-editor-free-text-button-label = Tekst pdfjs-editor-free-text-button-label = Tekst
pdfjs-editor-ink-button = pdfjs-editor-ink-button =
.title = Tekenje .title = Tekenje
pdfjs-editor-color-picker-ink-input =
.title = Tekenkleur wizigje
pdfjs-editor-ink-button-label = Tekenje pdfjs-editor-ink-button-label = Tekenje
pdfjs-editor-stamp-button = pdfjs-editor-stamp-button =
.title = Ofbyldingen tafoegje of bewurkje .title = Ofbyldingen tafoegje of bewurkje
@ -316,6 +304,33 @@ pdfjs-highlight-floating-button1 =
.title = Markearje .title = Markearje
.aria-label = Markearje .aria-label = Markearje
pdfjs-highlight-floating-button-label = Markearje pdfjs-highlight-floating-button-label = Markearje
pdfjs-comment-floating-button =
.title = Opmerking
.aria-label = Opmerking
pdfjs-comment-floating-button-label = Opmerking
pdfjs-editor-comment-button =
.title = Opmerking
.aria-label = Opmerking
pdfjs-editor-comment-button-label = Opmerking
pdfjs-editor-signature-button =
.title = Hantekening tafoegje
pdfjs-editor-signature-button-label = Hantekening tafoegje
## Default editor aria labels
# “Highlight” is a noun, the string is used on the editor for highlights.
pdfjs-editor-highlight-editor =
.aria-label = Markearingsbewurker
# “Drawing” is a noun, the string is used on the editor for drawings.
pdfjs-editor-ink-editor =
.aria-label = Tekeningbewurker
# Used when a signature editor is selected/hovered.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-signature-editor1 =
.aria-description = Undertekeningsbewurker: { $description }
pdfjs-editor-stamp-editor =
.aria-label = Ofbyldingsbewurker
## Remove button for the various kind of editor. ## Remove button for the various kind of editor.
@ -327,6 +342,8 @@ pdfjs-editor-remove-stamp-button =
.title = Ofbylding fuortsmite .title = Ofbylding fuortsmite
pdfjs-editor-remove-highlight-button = pdfjs-editor-remove-highlight-button =
.title = Markearring fuortsmite .title = Markearring fuortsmite
pdfjs-editor-remove-signature-button =
.title = Hantekening fuortsmite
## ##
@ -343,24 +360,41 @@ pdfjs-editor-stamp-add-image-button-label = Ofbylding tafoegje
pdfjs-editor-free-highlight-thickness-input = Tsjokte pdfjs-editor-free-highlight-thickness-input = Tsjokte
pdfjs-editor-free-highlight-thickness-title = pdfjs-editor-free-highlight-thickness-title =
.title = Tsjokte wizigje by aksintuearring fan oare items as tekst .title = Tsjokte wizigje by aksintuearring fan oare items as tekst
pdfjs-editor-add-signature-container =
.aria-label = Undertekeningsynstellingen en bewarre ûndertekeningen
pdfjs-editor-signature-add-signature-button =
.title = Nije hantekening tafoegje
pdfjs-editor-signature-add-signature-button-label = Nije hantekening tafoegje
# Used on the button to use an already saved signature.
# Variables:
# $description (String) - a string describing/labeling the signature.
pdfjs-editor-add-saved-signature-button =
.title = Bewarre ûndertekening: { $description }
# .default-content is used as a placeholder in an empty text editor. # .default-content is used as a placeholder in an empty text editor.
pdfjs-free-text2 = pdfjs-free-text2 =
.aria-label = Tekstbewurker .aria-label = Tekstbewurker
.default-content = Start mei typen… .default-content = Start mei typen…
pdfjs-free-text = # Used to show how many comments are present in the pdf file.
.aria-label = Tekstbewurker # Variables:
pdfjs-free-text-default-content = Begjin mei typen… # $count (Number) - the number of comments.
pdfjs-ink = pdfjs-editor-comments-sidebar-title =
.aria-label = Tekeningbewurker { $count ->
pdfjs-ink-canvas = [one] Opmerking
.aria-label = Troch brûker makke ôfbylding *[other] Opmerkingen
}
pdfjs-editor-comments-sidebar-close-button =
.title = De sydbalke slute
.aria-label = De sydbalke slute
pdfjs-editor-comments-sidebar-close-button-label = De sydbalke slute
# Instructional copy to add a comment by selecting text or an annotations.
pdfjs-editor-comments-sidebar-no-comments1 = Sjogge jo wat it neamen wurdich? Markearje it en lit in opmerking efter.
pdfjs-editor-comments-sidebar-no-comments-link = Mear ynfo
## Alt-text dialog ## Alt-text dialog
pdfjs-editor-alt-text-button-label = Alternative tekst pdfjs-editor-alt-text-button-label = Alternative tekst
pdfjs-editor-alt-text-edit-button = pdfjs-editor-alt-text-edit-button =
.aria-label = Alternative tekst bewurkje .aria-label = Alternative tekst bewurkje
pdfjs-editor-alt-text-edit-button-label = Alternative tekst bewurkje
pdfjs-editor-alt-text-dialog-label = Kies in opsje pdfjs-editor-alt-text-dialog-label = Kies in opsje
pdfjs-editor-alt-text-dialog-description = Alternative tekst helpt wanneart minsken de ôfbylding net sjen kinne of wanneart dizze net laden wurdt. pdfjs-editor-alt-text-dialog-description = Alternative tekst helpt wanneart minsken de ôfbylding net sjen kinne of wanneart dizze net laden wurdt.
pdfjs-editor-alt-text-add-description-label = Foegje in beskriuwing ta pdfjs-editor-alt-text-add-description-label = Foegje in beskriuwing ta
@ -380,14 +414,6 @@ pdfjs-editor-alt-text-button =
## Editor resizers ## Editor resizers
## This is used in an aria label to help to understand the role of the resizer. ## This is used in an aria label to help to understand the role of the resizer.
pdfjs-editor-resizer-label-top-left = Linkerboppehoek formaat wizigje
pdfjs-editor-resizer-label-top-middle = Midden boppe formaat wizigje
pdfjs-editor-resizer-label-top-right = Rjochterboppehoek formaat wizigje
pdfjs-editor-resizer-label-middle-right = Midden rjochts formaat wizigje
pdfjs-editor-resizer-label-bottom-right = Rjochterûnderhoek formaat wizigje
pdfjs-editor-resizer-label-bottom-middle = Midden ûnder formaat wizigje
pdfjs-editor-resizer-label-bottom-left = Linkerûnderhoek formaat wizigje
pdfjs-editor-resizer-label-middle-left = Links midden formaat wizigje
pdfjs-editor-resizer-top-left = pdfjs-editor-resizer-top-left =
.aria-label = Linkerboppehoek formaat wizigje .aria-label = Linkerboppehoek formaat wizigje
pdfjs-editor-resizer-top-middle = pdfjs-editor-resizer-top-middle =
@ -453,7 +479,6 @@ pdfjs-editor-new-alt-text-error-close-button = Slute
# Variables: # Variables:
# $totalSize (Number) - the total size (in MB) of the AI model. # $totalSize (Number) - the total size (in MB) of the AI model.
# $downloadedSize (Number) - the downloaded size (in MB) of the AI model. # $downloadedSize (Number) - the downloaded size (in MB) of the AI model.
# $percent (Number) - the percentage of the downloaded size.
pdfjs-editor-new-alt-text-ai-model-downloading-progress = AI-model foar alternative tekst downloade ({ $downloadedSize } fan { $totalSize } MB) pdfjs-editor-new-alt-text-ai-model-downloading-progress = AI-model foar alternative tekst downloade ({ $downloadedSize } fan { $totalSize } MB)
.aria-valuetext = AI-model foar alternative tekst downloade ({ $downloadedSize } fan { $totalSize } MB) .aria-valuetext = AI-model foar alternative tekst downloade ({ $downloadedSize } fan { $totalSize } MB)
# This is a button that users can click to edit the alt text they have already added. # This is a button that users can click to edit the alt text they have already added.
@ -493,3 +518,133 @@ pdfjs-editor-alt-text-settings-editor-title = Alternative-tekstbewurker
pdfjs-editor-alt-text-settings-show-dialog-button-label = Alternative-tekstbewurker daliks toane by tafoegjen fan in ôfbylding pdfjs-editor-alt-text-settings-show-dialog-button-label = Alternative-tekstbewurker daliks toane by tafoegjen fan in ôfbylding
pdfjs-editor-alt-text-settings-show-dialog-description = Helpt jo derfoar te soargjen dat al jo ôfbyldingen alternative tekst hawwe. pdfjs-editor-alt-text-settings-show-dialog-description = Helpt jo derfoar te soargjen dat al jo ôfbyldingen alternative tekst hawwe.
pdfjs-editor-alt-text-settings-close-button = Slute pdfjs-editor-alt-text-settings-close-button = Slute
## Accessibility labels (announced by screen readers) for objects added to the editor.
pdfjs-editor-highlight-added-alert = Markearring tafoege
pdfjs-editor-freetext-added-alert = Tekst tafoege
pdfjs-editor-ink-added-alert = Tekening tafoege
pdfjs-editor-stamp-added-alert = Ofbylding tafoege
pdfjs-editor-signature-added-alert = Hantekening tafoege
## "Annotations removed" bar
pdfjs-editor-undo-bar-message-highlight = Markearring fuortsmiten
pdfjs-editor-undo-bar-message-freetext = Tekst fuortsmiten
pdfjs-editor-undo-bar-message-ink = Tekening fuortsmiten
pdfjs-editor-undo-bar-message-stamp = Ofbylding fuortsmiten
pdfjs-editor-undo-bar-message-signature = Hantekening fuortsmiten
# Variables:
# $count (Number) - the number of removed annotations.
pdfjs-editor-undo-bar-message-multiple =
{ $count ->
[one] { $count } annotaasje fuortsmiten
*[other] { $count } annotaasjes fuortsmiten
}
pdfjs-editor-undo-bar-undo-button =
.title = Ungedien meitsje
pdfjs-editor-undo-bar-undo-button-label = Ungedien meitsje
pdfjs-editor-undo-bar-close-button =
.title = Slute
pdfjs-editor-undo-bar-close-button-label = Slute
## Add a signature dialog
pdfjs-editor-add-signature-dialog-label = Mei dizze modal kin de brûker in hantekening meitsje om oan in PDF-dokumint ta te foegjen. De brûker kin de namme bewurkje (dy't ek tsjinnet as alternative tekst), en opsjoneel de ûndertekening bewarje foar werhelle gebrûk.
pdfjs-editor-add-signature-dialog-title = In hantekening tafoegje
## Tab names
# Type is a verb (you can type your name as signature)
pdfjs-editor-add-signature-type-button = Type
.title = Type
# Draw is a verb (you can draw your signature)
pdfjs-editor-add-signature-draw-button = Tekenje
.title = Tekenje
pdfjs-editor-add-signature-image-button = Ofbylding
.title = Ofbylding
## Tab panels
pdfjs-editor-add-signature-type-input =
.aria-label = Jo hantekening type
.placeholder = Jo hantekening type
pdfjs-editor-add-signature-draw-placeholder = Jo hantekening tekenje
pdfjs-editor-add-signature-draw-thickness-range-label = Tsjokte
# Variables:
# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.
pdfjs-editor-add-signature-draw-thickness-range =
.title = Tekentsjokte: { $thickness }
pdfjs-editor-add-signature-image-placeholder = Sleep bestân hjirhinne om op te laden
pdfjs-editor-add-signature-image-browse-link =
{ PLATFORM() ->
[macos] Of kies ôfbyldingsbestannen
*[other] Of kies ôfbyldingsbestannen
}
## Controls
pdfjs-editor-add-signature-description-label = Beskriuwing (alternative tekst)
pdfjs-editor-add-signature-description-input =
.title = Beskriuwing (alternative tekst)
pdfjs-editor-add-signature-description-default-when-drawing = Hantekening
pdfjs-editor-add-signature-clear-button-label = Hantekening wiskje
pdfjs-editor-add-signature-clear-button =
.title = Hantekening wiskje
pdfjs-editor-add-signature-save-checkbox = Hantekening bewarje
pdfjs-editor-add-signature-save-warning-message = Jo hawwe de limyt fan 5 bewarre hantekeningen berikt. Ferwiderje ien om in oar te bewarjen.
pdfjs-editor-add-signature-image-upload-error-title = Kin de ôfbylding net oplade
pdfjs-editor-add-signature-image-upload-error-description = Kontrolearje jo netwurkferbining of probearje in oare ôfbylding.
pdfjs-editor-add-signature-image-no-data-error-title = Kin dizze ôfbylding net nei in hantekening konvertearje
pdfjs-editor-add-signature-image-no-data-error-description = Probearje in oare ôfbylding op te laden.
pdfjs-editor-add-signature-error-close-button = Slute
## Dialog buttons
pdfjs-editor-add-signature-cancel-button = Annulearje
pdfjs-editor-add-signature-add-button = Tafoegje
pdfjs-editor-edit-signature-update-button = Bywurkje
## Comment popup
pdfjs-editor-edit-comment-popup-button-label = Opmerking bewurkje
pdfjs-editor-edit-comment-popup-button =
.title = Opmerking bewurkje
pdfjs-editor-delete-comment-popup-button-label = Opmerking fuortsmite
pdfjs-editor-delete-comment-popup-button =
.title = Opmerking fuortsmite
pdfjs-show-comment-button =
.title = Opmerking toane
## Edit a comment dialog
# An existing comment is edited
pdfjs-editor-edit-comment-dialog-title-when-editing = Opmerking bewurkje
pdfjs-editor-edit-comment-dialog-save-button-when-editing = Bywurkje
# No existing comment
pdfjs-editor-edit-comment-dialog-title-when-adding = Opmerking tafoegje
pdfjs-editor-edit-comment-dialog-save-button-when-adding = Tafoegje
pdfjs-editor-edit-comment-dialog-text-input =
.placeholder = Begjin mei typen…
pdfjs-editor-edit-comment-dialog-cancel-button = Annulearje
## Edit a comment button in the editor toolbar
pdfjs-editor-edit-comment-button =
.title = Opmerking bewurkje
pdfjs-editor-add-comment-button =
.title = Opmerking tafoegje
## Main menu for adding/removing signatures
pdfjs-editor-delete-signature-button1 =
.title = Bewarre ûndertekening fuortsmite
pdfjs-editor-delete-signature-button-label1 = Bewarre ûndertekening fuortsmite
## Editor toolbar
pdfjs-editor-add-signature-edit-button-label = Beskriuwing bewurkje
## Edit signature description dialog
pdfjs-editor-edit-signature-dialog-title = Beskriuwing bewurkje

Some files were not shown because too many files have changed in this diff Show More