Печать в Google Cloud Print с динамическим URL
Мне бы хотелось, чтобы кнопка "Печать" на моем веб-сайте распечатывала документ с помощью Google Cloud Print, но я хочу, чтобы "URL" цели - файл PDF - динамически изменялся после нажатия кнопки (особенно на основе того, что возвращается из вызова AJAX).
Кажется, что GCP Web Element (GCPWE) имеет схожую функциональность, но не совсем то, что я хочу. В частности, кажется, что можно изменить только "цель" (вызывая setPrintDocument
) до нажатия кнопки.
Есть ли способ указать URL для GCPWE после нажатия кнопки?
Вот пример кода с сайта GCPWE:
<div id="print_button_container"> </div>
<script src="http://www.google.com/cloudprint/client/cpgadget.js">
</script>
<script defer="defer">
var gadget = new cloudprint.Gadget();
gadget.setPrintButton(
cloudprint.Gadget.createDefaultPrintButton("print_button_container"));
gadget.setPrintDocument("url", "[document title]", "[document URL]");
</script>
Я подумывал спрятать <div id='print_button_container'>
и запуск .click
событие на нем после нажатия видимой кнопки печати, но это выглядит довольно не элегантно и неправильно. Я посмотрел на gpwidget.js
ссылка на выше, но код был свернут и непонятен (для меня, во всяком случае).
То, что я, кажется, желаю, это Javascript print
функция, которой вы передаете [URL документа] и [название документа].
Есть ли лучший способ достичь желаемой функциональности, а не "нажатие скрытой кнопки", которую я придумал?
Спасибо за чтение.
2 ответа
Вы можете открыть диалог печати, когда захотите, просто позвоните:
gadget.openPrintDialog()
и это откроет диалоговое окно принтера. Так что для вашего случая вы можете создать кнопку печати, используя статический метод:
cloudprint.Gadget.createDefaultPrintButton("print_button_container");
затем присоедините пользовательские обработчики для кнопки, и когда вы будете готовы, просто позвоните
var gadget = new cloudprint.Gadget();
gadget.setPrintDocument(...);
gadget.openPrintDialog();
Вы можете вызвать метод gadget.setPrintDocument() в любой момент, даже после открытия диалогового окна печати.