Есть ли способ установить имя файла, когда jspdf output ()

Мой сайт рисует столбчатую диаграмму. У меня есть кнопка, чтобы сохранить его как файл PDF, показывающий его перед сохранением.

Сейчас это работает так.

  1. google.visualization рисует диаграмму.
  2. html2canvas делает снимок экрана с диаграммой.
  3. jsPDF вставляет снимок экрана в файл PDF и показывает его пользователю.

Проблема заключается в названии файла PDF. Это что-то вроде 5d78c1eb-0829-4e7e-8ffc-71cf1f102f56.pdf, а URL-адрес - blob: http://example.com/5d78c1eb-0829-4e7e-8ffc-71cf1f102f56 Когда пользователь видит PDF-файл и нажимает "Сохранить", он получает это ужасное имя файла.

Теперь я показываю PDF так:

window.open(doc.output('bloburl'), '_blank');

Я могу установить желаемое имя файла, если поменяю эту строку на это:

doc.save('sample-file.pdf');

Но в таком случае файл просто загружается, а мне нужно сначала его показать.

Есть ли способ показать PDF-файл и дать ему желаемое имя? Я пробовал это:

window.open(doc.output('bloburl', {filename: 'myFileName.pdf'}), '_blank');

Но это не помогло.

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

Итак, вопрос в том, как я могу создать PDF-файл и показать его пользователю с желаемым именем?


person Роман Забигалюк    schedule 09.08.2020    source источник
comment
Вы можете установить заголовок следующим образом: pdf.setProperties({ title: 'test' });   -  person Weihui Guo    schedule 12.08.2020
comment
Я использую эту команду, и она показывает заголовок на вкладке браузера и на панели инструментов плагина PDF, но не в адресной строке, и когда я нажимаю кнопку загрузки, он использует эту абракадабру в качестве имени файла. Сейчас я ищу способ показать вам картинку.   -  person Роман Забигалюк    schedule 15.08.2020
comment
Вот изображение ic.pics.livejournal.com/llill/8858779/ 1953 / 1953_900.png   -  person Роман Забигалюк    schedule 15.08.2020
comment
это bloburl. Я не уверен, что ты сможешь это изменить. новый выпуск jsPDF имеет вывод с именем pdfjsnewwindow. вы можете обновить код и добавить определяемое пользователем имя файла для загрузки.   -  person Weihui Guo    schedule 17.08.2020
comment
@ РоманЗабигалюк привет друг, ты нашел решение? У меня точно такая же проблема...   -  person Sergio Cano    schedule 05.01.2021
comment
Любые решения, у меня такая же проблема   -  person Yash.S.Narang    schedule 19.01.2021


Ответы (1)


На данный момент ответ отрицательный. Вы можете загрузить его напрямую, как указано в принятом ответе на этот вопрос: Загрузить с именем файла

Но вы создаете objectUrl, и поэтому имя файла всегда является URL-адресом. Возможно, вы могли бы создать для этого расширение браузера ... но у меня еще не было времени попробовать. Кроме того, вы не можете ожидать, что ваши посетители установят расширение.

person Nikolaus    schedule 04.02.2021