Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > Преобразование html в pdf. Сохранение элементов


Автор: Roman2323 19.11.2018, 11:31
Здравствуйте.
Имеется скрипт, который сохраняет html страницу с содержимым <div id="root"> в pdf файл на диск компьютера.
Помогите пожалуйста разобраться в паре вопросов:
1. Как добавить в нижеуказанный код инструкцию, которая позволила бы сохранять в файл progect.pdf только те элементы на html странице, которые имеют идентификатор class="accordion active", т.к. сейчас страница сохраняется полностью, а мне требуется сохранять только отдельные её элементы. 
Код:

<script>
function test() {
var element = document.getElementById('root');
html2pdf().from(element).set({
filename: 'progect.pdf',
html2canvas: { scale: 1 },
jsPDF: {orientation: 'portrait', unit: 'in', format: 'letter', compressPDF: true}
}).save();
}
</script>
<button onclick="test()">Сохранить файл на диск</button>

2. А так же как возможно ли добавить к вышеуказанному коду функцию одновременно открытия в почтовой программе (которая установлена по умолчанию на компе, типа outlook) окна с уже вложенным в тело письма файлом progect.pdf при нажатии кнопки "Сохранить файл на диск". Я нашел такой код, но как его интегрировать с вышеуказанным кодом просто не знаю.
Код:

<script type="text/javascript">
function email(addr, subj)
{
window.open("mailto:" + addr + "?subject=" + subj);
}
</script>
<button onclick="email('[email protected]','petrovitch na svyazi')">Отправить письмо с вложением</button>

Помогите пожалуйста, кто чем может в решении этого вопроса.
Заранее спасибо всем, кто откликнется.

Автор: whatisnot 19.11.2018, 20:14
Это для личного использования или для публичного в сети? Если последнее, то откуда у вас уверенность, что у пользователя есть установленный почтовый клиент или сработает веб-клиент? К протоколу mailto: нельзя подцепить вложение, используйте возможности сервера для отправки почты или сторонний сервис если с клиента отправлять.

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

Автор: Roman2323 19.11.2018, 23:01
Цитата(whatisnot @ 19.11.2018,  20:14)
Это для личного использования или для публичного в сети? Если последнее, то откуда у вас уверенность, что у пользователя есть установленный почтовый клиент или сработает веб-клиент? К протоколу mailto: нельзя подцепить вложение, используйте возможности сервера для отправки почты или сторонний сервис если с клиента отправлять.

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

Благодарю вас за содержательный совет. По первому пункту есть уже идеи, как реализовать, то что мне требуется, завтра буду пробовать. А по второму пункту могу сказать, что предполагается использовать форму отправки писем "для публичного в сети" и я не знаю как настроить отправку писем (особенно с вложением файла) используя возможности сервера для отправки почты или сторонний сервис если с клиента отправлять. Я не могу разобраться, как в функции:
<FORM METHOD="post" ACTION="mailto:[email protected]" ENCTYPE="multipart/form-data">
Attachment: <INPUT TYPE="file" NAME="attachedfile" MAXLENGTH=50 ALLOW="text/*" >
 <input type="submit" name="submit" id="submit" value="Email"/>
</FORM>
прописать доп. код, что бы отправлять письма без почтовой программы (которая, конечно может и не быть установлена на компьютере отправляющего).

Автор: whatisnot 20.11.2018, 05:05
Цитата(Roman2323 @  19.11.2018,  23:01 Найти цитируемый пост)
Я не могу разобраться, как в функции


Это не функция, а форма, только mailto: может отправлять только text/plain, никаких multipart/form-data.

Цитата(Roman2323 @  19.11.2018,  23:01 Найти цитируемый пост)
что бы отправлять письма без почтовой программы


Без почтового клиента или настроенного веб-клиента почту отправить нельзя. Сказано же - либо сервер (свой сайт) отправляет почту (форма отправляется на сервер), либо использовать API стороннего сервиса (напрягайте гугл, ищите, есть такие, выбирайте какой подходит) если отправлять с клиента. И отправлять что и кому - липовый PDF самому себе, который уже сохранили на клиенте?  




Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)