#ios #jspdf #navigator #filesaver.js #web-share
#iOS #jspdf #навигатор #filesaver.js #общий веб-ресурс
Вопрос:
Я использую последнюю версию iOS 14.0.1
и jsPDF 2.1.1
. Вот 3 сценария для Safari и Chrome:
Safari:
-
Используйте
jsPDF.save('myfilename.pdf')
. Здесь проблем нет, PDF открывается на той же странице, а затем, когда вы нажимаете кнопку «Поделиться в браузере», появляется диалоговое окно «Поделиться» со значком предварительного просмотра, показывающим PDF и заголовок «1 ссылка и 1 документ» с URL-адресом большого двоичного объекта внизу. Если вы выберете «Сохранить в файлы», вы увидите правильное имяmyfilename.pdf
. -
Используйте
window.open(jsPDF.output('bloburl', 'myfilename.pdf'))
илиwindow.open(jsPDF.output('bloburl', filename: { 'myfilename.pdf' }))
, и все то же самое, что и выше, за исключением того, что «Сохранить в файлы» показываетUnknown.pdf
-
Используйте
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 данных.