javascript — необходимо скачать HTML-страницу в формате PDF

У меня есть несколько кросс-таблиц на HTML-странице, и я хочу загрузить их в формате PDF. Я сгенерировал тот же отчет в стандарте отчетности SAS, но поскольку PDF и HTML не отображают друг друга в SAS, я пытаюсь разработать фрагмент кода JavaScript, чтобы я мог внедрить его в SAS для преобразования HTML содержимое в PDF.

Я разработал следующие сценарии на JavaScript, но я не эксперт в JavaScript.

var options = {
"url": "/pdf/generate",
"data": "data=" + $("#content").html(),
"type": "post",
}
$.ajax(options)


$html = $_POST['data'];
$pdf = html2pdf($html);

header("Content-Type: application/pdf"); //check this is the proper header for pdf
header("Content-Disposition: attachment; filename='some.pdf';");
echo $pdf;

$(function() {

var specialElementHandlers = {
'#editor': function(element, renderer) {
return true;
}
};
$('#cmd').click(function() {
var doc = new jsPDF();
doc.fromHTML(
$('#target').html(), 15, 15, {
'width': 170,
'elementHandlers': specialElementHandlers
},
function() {
doc.save('sample-file.pdf');
}
);

});
});
<title>HTML TO PDF Rendering</title>


<div id="content">

<h3>Hello, this is a H3 tag</h3>

<p>A paragraph</p>
</div>
<div id="editor"></div>
<button id="cmd">generate PDF</button>

0

Решение

Самый простой случай, пожалуй. использование SAS отправлять один и тот же процедурный вывод одновременно как в html, так и в pdf-адреса. Каждый пункт назначения создаст отдельный документ. В HTML-документ добавить ссылку на PDF-документ. Когда оба файла обслуживаются как статический контент, они должны находиться в одной и той же обслуживаемой папке.

ods html file = 'c:\temp\xtab.html' style=journal;
ods pdf file = 'c:\temp\xtab.pdf' style=journal;

ods noresults;

options nodate nonumber nocenter;

proc tabulate data=sashelp.cars;
class make model type;
table make, type=''*N='';
where make like 'M%';
run;

ods pdf close;

ods html text='<a href="xtab.pdf">Link goes here</a>';

ods html close;

ods results;

options noxmin noxwait noxsync;
%sysexec start "My Browser" c:\temp\xtab.html;

Когда ваш браузер откроется, нажмите на ссылку, чтобы увидеть PDF-версию.

Добавьте больше деталей к вопросам, если контент генерируется динамически в SAS посредством быстрого и сохраненного процесса.

Вы также можете иметь мастер страница, которая отображает различное содержание в iframe

<html>
<title>demo</title>
<body>
<button id="asHtml" onclick="asHtml()"> Show HTML output </button>
<button id="asPDF"  onclick="asPDF()"> Show PDF output </button>
<iframe id="theTabulate" width="100%" height="90%">
</iframe>
<script>
function asHtml() {
document.getElementById("theTabulate").src = "xtab.html";
}
function asPDF() {
document.getElementById("theTabulate").src = "xtab.pdf";
}
</script>
</body>
</html>

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

0

Другие решения

%macro mac_buttons_ods(
mcv_style          = ERS,  /* Select the SAS style you want to use.  default = ers */
mcv_dest           = HTML, /* PDF, RTF, XML, EXCEL, PANEL, SPECIAL, TEXT or TABLE */
mcv_tag_options    = ,
mcv_excel_options  = %str(options(sheet_label="ERS" sheet_interval="none" frozen_headers="yes" embedded_titles="yes")),
mcv_ods_options  = %str(),
mcv_title          = ERS, /* Enter the text you want to see in the title area of the browser window.*/
mcv_portal_only    = no,
mcv_mode           = PROD, /* PROD: mprint mlogic symbolgen will be turned off otherwise they will be turned on. */
mcv_param          =,/*all the parameters to pass in url*/
) ;


%global mcv_stp_name
mcv_ers_url
mcv_sasweb
_odsdest _odsoptions _odsstyle _odsstylesheet _program _url mcv_filename
mcv_back mcv_forward mcv_pdf mcv_excel mcv_word mcv_print mcv_rerun mcv_close
;
%local mcv_style
mcv_dest
mcv_tag_options
mcv_excel_options
mcv_title
mcv_ods_options
mcv_portal_only
mcv_mode ;

*ProcessBody ;
options minoperator ;

%* Only use this macro if running as a stored process ;
%if %superq(_program) = %then %return ;;


libname ersstyle '/apps/usr/ERS/styles' access=readonly ;
ods path ersstyle.templat(read) sasuser.templat(update) sashelp.tmplmst(read) ;
ods escapechar = '^' ;

%let _odsstyle   = &mcv_style. ;
%let mcv_sasweb  = https://&_srvname.:&_srvport./ ;

data _null_ ;
call symputx('mcv_stp_name',scanq("&_program.",countc("&_program.","/"),'/')) ;
run ;
%mac_assign_lib;

%let mcv_back = "<button class='NAV' onclick=history.go(-1)%str(;) title='Go Back 1 Page'><img src='/images/left.png' /></button>" ;
%let mcv_forward ="<button class='NAV' onclick=history.go(+1)%str(;) title='Go Forward 1 Page'><img src='/images/right.png' /></button>";
%let mcv_pdf     = "<button class='NAV' onclick=location.href='do?_program=%sysfunc(urlencode(&_program.))&mcv_param.%str(&)_odsdest=PDF' title='Click to Download to PDF.' ><img src='/images/pdf.png' /></button>";
%let mcv_excel   = "<button class='NAV' onclick=location.href='do?_program=%sysfunc(urlencode(&_program.))&mcv_param.%str(&)_odsdest=EXCEL' title='Click to Download to Excel.'><img src='/images/excel_small.png' /></button>";
%let mcv_word   =  "<button class='NAV' onclick=location.href='do?_program=%sysfunc(urlencode(&_program.))&mcv_param.%str(&)_odsdest=RTF' title='Click to Download to Word'><img src='/images/word.png' /></button>";
%let mcv_print   = "<button class='NAV' onclick=window.print(); title='Click to Print report.'><img src='/images/print.png' /></button>";
%let mcv_rerun   =  "<button class='NAV' onclick=window.location.reload(); title='Click to Re-Run report.'> <img src='/images/rerun.png' /></button>";
%let mcv_close   = "<button class='NAV' onclick=self.close(); title='Click to Close window.'><img src='/images/close.png' /></button>";



%if %upcase(%superq(mcv_portal_only)) = YES and %superq(_result) = PACKAGE_TO_ARCHIVE %then %do ;
%stpbegin ;
ods text = "^{style [fontsize=14pt]&c_stp_name.}" ;
ods text = "^{style [fontsize=14pt]Can only be viewed on the ERS Portal.}" ;
%end ;
%else %do ;
%if %upcase(%superq(_odsdest)) ne HTML and
%upcase(%superq(_odsdest)) > %str() %then %let mcv_dest = &_odsdest. ;;

%if %upcase(%superq(mcv_dest)) = EXCEL %then %do ;
data _null_ ;
rc = stpsrv_header('Content-type','application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') ;
rc = stpsrv_header('Content-disposition',"attachment; filename=&mcv_stp_name..xlsx") ;
run ;

ods excel file = _webout ;
ods excel style = &mcv_style. %if %superq(mcv_excel_options) > %str() %then &mcv_excel_options. ;;
%end ;
%else %let _odsdest = &mcv_dest. ;;
%if %upcase(%superq(mcv_dest)) = PANEL   %then %let _odsdest = tagsets.htmlpanel ;
%if %upcase(%superq(mcv_dest)) = TABLE   %then %let _odsdest = tagsets.tableeditor ;
%if %upcase(%superq(mcv_dest)) = SPECIAL %then %let _odsdest = tagsets.special ;

%if %upcase(%superq(mcv_dest)) =HTML OR  %upcase(%superq(mcv_dest))=PANEL OR %upcase(%superq(mcv_dest))=TABLE OR %upcase(%superq(mcv_dest))=SPECIAL %then %do ;
%include "/apps/usr/ERS/MacroLibrary/tableeditor.tpl";
/*	   ods tagsets.tableeditor file=_webout style= &mcv_tag_options.;*/
%let _odsoptions = file=_webout (title='ERS') style= &mcv_style. &mcv_tag_options. ;

%end ;
%if %upcase(%superq(mcv_dest)) = PDF %then %do ;
%let _odsoptions = notoc &mcv_ods_options. ;
data _null_ ;
rc = stpsrv_header('Content-disposition',"attachment; filename=&mcv_stp_name..pdf") ;
run ;
%end ;
%if %upcase(%superq(mcv_dest)) = RTF %then %do ;
%let _ODSOPTIONS= KEEPN;

data _null_ ;
rc = stpsrv_header('Content-disposition',"attachment; filename=&mcv_stp_name..doc") ;
run ;
%end ;
%if %upcase(%superq(mcv_dest)) ne EXCEL %then %stpbegin ;;

%end ;

%if %upcase(&mcv_mode) ne PROD %then options mlogic mprint symbolgen ;
%else                                options nomlogic nomprint nosymbolgen ;;
%mend mac_buttons_ods;

Формат выходного изображения Excel необходим в PDF

0

По вопросам рекламы [email protected]