PDF обзорные ссылки не работают внутри моего приложения angularjs - PullRequest
0 голосов
/ 02 июля 2019

Мое веб-приложение использовало PDF.js для загрузки PDF-файлов в браузер. Он получает PDF-файлы из REST API.

Веб-приложение представляет собой одностраничное дело angularjs. Вы можете перемещаться внутри приложения и открывать один из этих PDF-файлов. Когда вы открываете один из них, относительные ссылки на другие PDF-файлы внутри структуры первого PDF-файла не работают.

Когда я получаю доступ к URL-адресу REST API, скажем, api.example.com/rest/my-pdf.pdf, с помощью firefox (который использовал PDF.js для рендеринга PDF-файлов), открывается PDF-файл, и в Outline отображаются правильные относительные ссылки.

Я подозреваю, что это как-то связано с тем, что мое приложение имеет другое происхождение, чем REST API, обслуживающий PDF.

У каждого OutlineItem есть словарь действий с моими относительными ссылками. Словарь действий имеет ActionType (S) Launch и значение FileStream (F), показанное ниже.

PDF Object browser

Я использую файл PDF.js viewer.html для просмотра PDF-файлов. Это делается путем создания iframe следующим образом:

<iframe src="/path/to/pdfjs/viewer.html?file=http://api.example.com/rest/my-pdf.pdf">

Как мне заставить относительные ссылки работать здесь?

P.S. Я вычеркнул только фактические имена файлов в красном. Я оставил путь как есть, если он помогает.

Ответы [ 2 ]

0 голосов
/ 08 июля 2019

Проблема заключалась в том, что ссылки в схеме PDF были "Launch ActionType".
PDF.js не может на самом деле обрабатывать типы «Запуск», потому что он не может запускать внешние программы, видя, как он работает в браузере.

Итак, PDF.js делает вид, что тип «Launch» - это «GoToR ActionType» (Go To Remote).
Это будет работать, если URL, с которого загружен PDF, является источником, из которого также загружается PDF.js.

Если это не так, как в моем приложении (где PDF.js загружается в iframe внутри углового приложения), PDF.js не может разрешить URL-адреса и оставляет ссылки пустыми.

  1. Раздел 8.5 PDF Reference содержит информацию о Action s в PDF-файлах.
  2. PDF.js исходный файл показывает, как обрабатываются разные ActionType.
0 голосов
/ 03 июля 2019

попробуйте этот метод

onclick=" window.open('../../assets/python/python.pdf'); return true;"

Надеюсь, у вас это получится.

...