2016-06-23 2 views
2

Я использую jsPDF и html2canvas для преобразования div в PDF:Преобразование DIV с атрибутом "скрытый" в формате PDF с jsPDF и html2canvas

<a onclick="makePdf()">PDF</a> 
<div id="divToPdf">Some content here</div> 

Однако я не хочу мой div отображается на экране. Я попытался с помощью hidden свойство, чтобы скрыть div:

<a onclick="makePdf()">PDF</a> 
<div id="divToPdf" hidden>Some content here</div> 

Проблема заключается в том, что результаты hidden недвижимости в пустой Pdf документа. Как я могу скрыть div без этой проблемы?

ответ

0

Вы можете изменить расположение своей страницы на разных носителях через css.

Это верно и для печати.

Итак, вы можете написать специальную таблицу стилей, которая действительна только при печати страницы в формате pdf.

Пожалуйста, обратите внимание на:

@media print { 
    ... 
} 

Для примера можно использовать такой код:

@media print { 
    div[hidden] { 
     display: block; 
    } 
    ... 
} 

этого следует выбрать DIV с hidden атрибутом и сделал видимые.

Если вы предпочитаете программный подход, вы можете получить все div на странице с атрибутом hidden и удалить атрибут, распечатать свой документ, чем вернуть атрибут.

Вы могли бы использовать что-то вроде:

var hideDivs = document.querySelectorAll("div[hidden]"); 
+0

Я попробовал оба. Никто не работал. Я фактически конвертирую 'div' в pdf, а не распечатываю его. Запрос на медиа в вашем ответе кажется для печати. –

+0

Я не знаю, как работает ваш 'makePdf()', если вы используете какой-либо lib для прямого преобразования содержимого страницы в pdf, тогда вам нужно использовать второй способ: изменение страницы с помощью 'querySelectorAll' перед вызовом 'makePdf()'. –

+0

Хорошо. Круто. Благодаря! –

0

Так с предложением Марио Alexandro Сантини в комментариях, я был в состоянии решить эту проблему. Я использовал JQuery к UNHIDEdiv в моей makePdf() функции, то скрыть снова после jsPDF и html2canvas сделали свое "волшебство":

function makePdf() { 
    $("#divToPdf").attr("hidden", false); 
    ... 
    $("#divToPdf").attr("hidden", true); 
} 

Спасибо, ребята!

Смежные вопросы