javascript - 画布和响应式 jspdf
问题描述
我正在像这样使用 canvas 和 jspdf 生成 pdf 表单。我将粘贴表格:
<div id="alert" class="form_wrapper">
<div id="teste" class="form_container">
<div class="title_container">
<h4>PLANO INDIVIDUAL DE CUIDADOS</h4>
</div>
<form id="insert_form">
<div class="row clearfix">
<div class="col_half1">
<label>Código Utente</label>
<div class="input_field"> <span><i aria-hidden="true" class="fa fa-file-code"></i></span>
<input type="text" id="codigo1" name="codigo" value="'.$row["codigo"].'" class="form-control" readonly="true"/>
</div>
</div>
那么js有这样的方式:
$('#dataModal').on('shown.bs.modal', function(){
$("body").css("height", $('.modal-dialog', this).outerHeight()+"px");
}).on('hide.bs.modal', function(){
$("body").css("height","auto");
});
(function($){
$.fn.createPdf = function(parametros) {
var config = {
'fileName':'html-to-pdf'
};
if (parametros){
$.extend(config, parametros);
}
var quotes = document.getElementById($(this).attr('id'));
html2canvas(quotes, {
onrendered: function(canvas) {
var pdf = new jsPDF('p', 'pt', 'A4');
for (var i = 0; i <= quotes.clientHeight/1250; i++) {
var srcImg = canvas;
var sX = 0;
var sY = 1250*i;
var sWidth = 900;
var sHeight = 1250;
var dX = 0;
var dY = 0;
var dWidth = 900;
var dHeight = 1250;
window.onePageCanvas = document.createElement("canvas");
onePageCanvas.setAttribute('width', 900);
onePageCanvas.setAttribute('height', 1250);
var ctx = onePageCanvas.getContext('2d');
ctx.drawImage(srcImg,sX,sY,sWidth,sHeight,dX,dY,dWidth,dHeight);
var canvasDataURL = onePageCanvas.toDataURL("image/png", 1.0);
var width = onePageCanvas.width;
var height = onePageCanvas.clientHeight;
if (i > 0) {
pdf.addPage(595.28, 841.89);
}
pdf.setPage(i+1);
pdf.addImage(canvasDataURL, 'PNG', 10, 25, (width*.62), (height*.62));
}
pdf.save(config.fileName);
}
});
};
})(jQuery);
function createPDF(teste) {
$('#alert').createPdf({
'fileName' : 'PIC'
});
}
……………
</form>
</div>
</div>
的CSS:
@media (min-width: 324px) {
.modal-dialog {
width: 370px;
/* New width for default modal */} /* 1600px */
}
@media (min-width: 82em) {
.modal-dialog {
width: 950px;
/* New width for default modal */} /* 1600px */
}
当我在计算机屏幕上生成 pdf 时,它会生成具有正确测量值的 pdf,如图所示:
可以帮忙
解决方案
推荐阅读
- mongodb - 在嵌套数组中查找 mongodb
- python - 数组到数据帧插值
- azure - 为开发环境设置“应用程序服务环境”(ase)的最便宜方法?
- git - Gerrit 如何压缩远程提交?
- apache-spark - org.apache.spark.sql.AnalysisException:不能在流数据集/数据帧上调用“写”
- matlab - Houghpeaks 等效于八度音阶
- python - python 3定义问题导入字符串模块
- javascript - 如何在 JavaScript 中将 PHP 的 explode(';',$s,3) 与 s.split(';',3) 匹配?
- php - 如何在 php 中创建同步网页,以便数据库更改立即反映在浏览器中?
- hyperledger-fabric - 作曲家休息服务器中的无效 JSON 数据错误