Jonas Jenwald 50a5a15088 Create absolute filter-URLs when needed in DOMFilterFactory (issue 18406)
This functionality is purposely limited to development mode and GENERIC builds, since it's unnecessary in e.g. the *built-in* Firefox PDF Viewer, and will only be used when a `<base>`-element is actually present.

*Please note:* We also have tests in mozilla-central that will *indirectly* ensure that relative filter-URLs work as intended in the Firefox PDF Viewer, see https://searchfox.org/mozilla-central/source/toolkit/components/pdfjs/test/browser_pdfjs_filters.js

---

To test that the issue is fixed, the following code can be used:

```html
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <base href=".">
  <title>base href (issue 18406)</title>
</head>
<body>

<ul>
  <li>Place this code in a file, named `base_href.html`, in the root of the PDF.js repository</li>
  <li>Run <pre>npx gulp dist-install</pre></li>
  <li>Run <pre>npx gulp server</pre></li>
  <li>Open <a href="http://localhost:8888/base_href.html">http://localhost:8888/base_href.html</a> in a browser</li>
  <li>Compare rendering with <a href="http://localhost:8888/web/viewer.html?file=/test/pdfs/issue16287.pdf">http://localhost:8888/web/viewer.html?file=/test/pdfs/issue16287.pdf</a></li>
</ul>

<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 id="script" type="module">
  //
  // If absolute URL from the remote server is provided, configure the CORS
  // header on that server.
  //
  const url = '/test/pdfs/issue16287.pdf';

  //
  // The workerSrc property shall be specified.
  //
  pdfjsLib.GlobalWorkerOptions.workerSrc =
    '/node_modules/pdfjs-dist/build/pdf.worker.mjs';

  //
  // Asynchronous download PDF
  //
  const loadingTask = pdfjsLib.getDocument(url);
  const pdf = await loadingTask.promise;
  //
  // Fetch the first page
  //
  const page = await pdf.getPage(1);
  const scale = 1.5;
  const viewport = page.getViewport({ scale });
  // Support HiDPI-screens.
  const outputScale = window.devicePixelRatio || 1;

  //
  // Prepare canvas using PDF page dimensions
  //
  const canvas = document.getElementById("the-canvas");
  const context = canvas.getContext("2d");

  canvas.width = Math.floor(viewport.width * outputScale);
  canvas.height = Math.floor(viewport.height * outputScale);
  canvas.style.width = Math.floor(viewport.width) + "px";
  canvas.style.height = Math.floor(viewport.height) + "px";

  const transform = outputScale !== 1
    ? [outputScale, 0, 0, outputScale, 0, 0]
    : null;

  //
  // Render PDF page into canvas context
  //
  const renderContext = {
    canvasContext: context,
    transform,
    viewport,
  };
  page.render(renderContext);
</script>

</body>
</html>
```
2024-07-11 11:30:45 +02:00
..
2013-05-31 14:13:23 -07:00
2013-03-11 10:23:47 -07:00
2016-04-11 08:02:06 -05:00
2021-04-10 19:13:28 +02:00
2013-11-03 07:29:29 -06:00
2013-07-11 13:33:29 -05:00
2013-11-18 07:48:06 -06:00
2013-11-13 13:45:59 -06:00
2015-10-04 15:45:24 +02:00
2016-04-11 08:02:06 -05:00
2013-10-13 19:55:42 +03:00
2011-06-23 09:10:06 -07:00
2021-06-08 10:37:26 +02:00
2011-12-12 21:42:39 -06:00
2012-03-10 19:12:33 -08:00
2015-11-06 10:55:43 -06:00
2013-11-01 19:05:17 -05:00
2012-10-13 14:21:59 -05:00
2012-12-14 12:44:39 -08:00
2013-02-28 22:32:43 +02:00
2013-11-02 17:07:13 -05:00
2013-08-11 10:35:56 +02:00
2013-12-19 18:38:44 +01:00
2020-08-08 11:50:19 +02:00
2014-03-18 14:10:44 +01:00
2014-04-10 19:22:13 -05:00
2014-04-11 09:55:39 -07:00
2014-04-17 07:52:33 -05:00
2014-09-09 08:29:31 -05:00
2014-12-17 22:46:47 +01:00
2014-12-18 21:26:02 +01:00
2014-12-17 22:42:06 +01:00
2015-02-10 00:16:54 +01:00
2015-11-03 09:03:08 -06:00
2017-01-10 16:42:43 +00:00
2017-04-10 16:18:08 -07:00
2017-04-05 15:17:38 -07:00
2021-05-12 11:42:08 -07:00
2017-08-03 22:19:36 -07:00
2018-09-02 21:23:09 +02:00
2018-09-02 21:23:09 +02:00
2018-09-02 21:23:09 +02:00
2021-10-17 16:27:05 +02:00
2021-10-17 16:27:05 +02:00
2021-10-17 16:27:05 +02:00
2021-10-17 16:27:05 +02:00
2021-10-17 16:27:05 +02:00
2021-09-23 13:05:18 +02:00
2014-01-27 20:35:51 -06:00
2015-09-05 12:51:05 +02:00
2015-10-16 18:54:18 +02:00
2015-10-16 18:54:18 +02:00
2013-06-30 03:52:30 +05:30
2011-08-06 14:41:18 -07:00
2012-01-11 20:14:49 -06:00
2011-06-26 09:15:33 -05:00
2011-12-18 17:28:25 -08:00
2012-03-17 17:35:04 -05:00
2011-10-04 16:18:39 +01:00
2011-06-23 09:10:06 -07:00
2013-02-15 03:53:34 +09:00
2021-11-27 19:30:12 +01:00
2014-09-03 21:57:57 +02:00
2012-01-17 20:50:49 -08:00