- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用从 MySQL 数据库检索数据的 Morris.js 创建折线图。我想将其下载为包含整个图表的 PDF 文件。
我试过使用 html2canvas 和 jsPDF 生成 PDF。但是,生成/下载的 PDF 不包含任何数据。
这是我的代码:
<?php
$connect = mysqli_connect("localhost", "root", "", "testing");
$query = "SELECT * FROM purchase";
$result = mysqli_query($connect, $query);
$chart_data = '';
while($row = mysqli_fetch_array($result))
{
$chart_data .= "{ year:'".$row["year"]."', profit:".$row["profit"].", purchase:".$row["purchase"].", sale:".$row["sale"]."}, ";
}
$chart_data = substr($chart_data, 0, -2);
?>
<div class="row">
<div id="chart" style="width:800px;"></div>
<canvas id="canvas" width="800px;"></canvas>
<button onclick="save();">Download</button>
</div>
Morris.Line({
element : 'chart',
data:[<?php echo $chart_data; ?>],
xkey:'year',
ykeys:['profit', 'sale'],
labels:['Profit', 'Sale'],
hideHover:'auto',
stacked:true
});
function save() {
html2canvas(document.getElementById('canvas'), {
onrendered: function(canvas) {
var img = canvas.toDataURL();
var doc = new jsPDF();
doc.addImage(img, 10, 10);
doc.save('test.pdf');
}
});
}
如有任何想法或建议,我们将不胜感激。
最佳答案
您不需要 canvas
元素,因为 html2canvas 会为您创建一个。
为了让它工作,我使用了最新的 html2canvas 版本 1.0.0-rc.1使用 promise而不是回调。
这是保存
函数:
function save() {
html2canvas(document.getElementById('chart')).then(canvas => {
var w = document.getElementById("chart").offsetWidth;
var h = document.getElementById("chart").offsetHeight;
var img = canvas.toDataURL("image/jpeg", 1);
var doc = new jsPDF('L', 'pt', [w, h]);
doc.addImage(img, 'JPEG', 10, 10, w, h);
doc.save('sample-file.pdf');
}).catch(function(e) {
console.log(e.message);
});
}
完整的工作版本:JSFiddle
关于javascript - 将 Morris.js 图表导出为 PDF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55999042/
是否可以动态更新莫里斯图?我知道setData()将更新数据,但我想更新设置。即,用户能够选择是否堆叠条形图。 我已经尝试过: bChart.stacked = true; bChart.setDat
这个 morrisjs javascript 有什么问题? http://jsbin.com/dituriheje/edit?html,js,output ) Morris.js L
我正在尝试创建类似Google Analytics(分析)“受众群体概览”图的图形。我正在尝试将X轴上从凌晨12:00 am到11:00 pm的小时数设置为 这是我目前正在使用的: Morris.Li
我已经阅读了文档及其要求,但我不想要它 :D 尝试将其设置为未定义并删除它,但随后 javascript 提示它丢失了。 有没有办法隐藏它? 最佳答案 您可以通过下一个选项禁用它: Morris.Li
我想知道是否可以在条形图上设置最大轴值(例如,我希望数据的最高点是 y 轴的顶端)?我看到折线图上有 ymin 和 ymax 选项,但我似乎找不到有关条形图的任何信息。 此外,如果有人知道如何将轴车道
我正在使用 Morris.js 条形图。出于某种原因,应该在 HOVER OVER 上出现的数字列在左下角。有没有人为什么? 最佳答案 没有任何代码很难给出好的答案。但是,它可能与您的 CSS 文件有
是否可以以相反的顺序(0-100)设置 y 轴值? 顶部的最大值必须从 0 到底部的 100。 Morris.Line({ element: 'line-example', dat
我正在尝试根据本地数据文件 - sales.php(json 格式)动态绘制莫里斯线: [ { year: '2008', value: 20 }, { year: '2009', value
我使用 morris.js绘制折线图图形,但我无法弄清楚如何仅更改折线图中的点颜色和样式。有谁知道如何只更改点样式? 谢谢。 最佳答案 使用 pointFillColors 属性。来自文档: poin
这是当我们使用Knuth-Morris-Pratt算法时,在Scheme中计算失效函数(我们要返回多少步)的代码: (define (compute-failure-function p) (
我有一个问题,因为我做了后端的动态响应。我生成的代码是: new Morris.Line({ // ID of the element in which to draw
我在使用 Morris.js 库创建图表时遇到一些麻烦。我创建了运动应用程序,每次训练都有一些值(value)。其中之一是“锻炼”,它表示锻炼类型(“运行”、“游泳”、“骑自行车”)。我想显示带有日期
为什么我会遇到异常 Uncaught Error: Graph container element not found 当使用morris.js时? 最佳答案 解决方案:将 javascript 放在
我在 yii2 中使用了 morris js 图表,当数据范围太高时出现问题,较低的数据范围会崩溃,有什么办法可以清楚地看到它?另外,要显示整周的数据,需要在 x 轴上向上滚动。 function c
我试图暗示 morris.js 但我收到以下错误: 我试着实现了一些教程,这真的很容易,但到目前为止我得到了以下内容 new Morris.Line({ element: 'myfirstchar
我正在使用 morris.js 和 javascript 创建折线图。这是我的代码: Morris.Area({ element: 'hero-area', data: [
我希望自定义堆叠条形图上的悬停图例,这样它就不会显示在特定条形图中没有值但会显示在其他条形图中的标签。希望下面链接中的图片有助于解决问题。图片中的行军标签只有几个标签的值,但显示了所有标签。我知道我必
我有以下 .js.coffee 文件 jQuery -> Morris.Line element: 'averages_chart' data: [{month: '2014 01 01',
是否可以使用 morris.js 添加水平条形图? http://jsbin.com/uzosiq/2/embed?javascript,live 非常感谢! 最佳答案 如果你使用来自 https:/
我很好奇 morris.js 是否支持在单个标签上放置多个堆叠条以及是否有人知道解决方法。 我想要将 2 个图表堆叠在同一行上。蓝色和红色应该相互重叠,绿色和黄色应该相互重叠。 Morris.Bar(
我是一名优秀的程序员,十分优秀!