Имя файла jsPDF не отображается для iOS с использованием .output() вместо .save()

#ios #jspdf #navigator #filesaver.js #web-share

#iOS #jspdf #навигатор #filesaver.js #общий веб-ресурс

Вопрос:

Я использую последнюю версию iOS 14.0.1 и jsPDF 2.1.1 . Вот 3 сценария для Safari и Chrome:

Safari:

  1. Используйте jsPDF.save('myfilename.pdf') . Здесь проблем нет, PDF открывается на той же странице, а затем, когда вы нажимаете кнопку «Поделиться в браузере», появляется диалоговое окно «Поделиться» со значком предварительного просмотра, показывающим PDF и заголовок «1 ссылка и 1 документ» с URL-адресом большого двоичного объекта внизу. Если вы выберете «Сохранить в файлы», вы увидите правильное имя myfilename.pdf .

  2. Используйте window.open(jsPDF.output('bloburl', 'myfilename.pdf')) или window.open(jsPDF.output('bloburl', filename: { 'myfilename.pdf' })) , и все то же самое, что и выше, за исключением того, что «Сохранить в файлы» показывает Unknown.pdf

  3. Используйте navigator.share() API:

    navigator.share({ title: 'my title', url: jsPDF.output('bloburl', 'myfilename.pdf') })

    Сразу появляется диалоговое окно общего доступа, но файл как будто не распознается, потому что в нем почти нет параметров меню. В полусвязанной заметке я вызываю navigator.share() событие щелчка, при первом его появлении, но при всех последующих щелчках ничего не происходит.

Chrome: все 3 сценария создают одно и то же диалоговое окно общего доступа, похоже, что PDF-файл не распознается, и если вы попытаетесь поделиться с другом с помощью текстового сообщения, он отправляет текст ссылки blob.

Я пытаюсь найти унифицированное решение для загрузки / обмена. Я изучил <a download="filename.pdf" href="bloblinkgoeshere"> , но это привело к появлению новой серии проблем с совместимостью между браузерами для iOS. Chrome, похоже, работал с a dataurlstring вместо bloburl , но для создания ссылки на скачивание файла PDF размером ~ 6 МБ потребовалось около 10 секунд. Safari тоже не работал. Тем не менее, я попробовал строку gif файла base64, и это, похоже, работало с safari, но не pdf с uri данных.