生成服务器端图表并嵌入PDF的最简单方法是什么?

5

我正在使用Highcharts.js生成漂亮的图表,我尝试将这些图表嵌入到PDF中,因此需要在服务器端完成将图表生成为图像的过程。

有人能建议最简单的方法吗?最好不需要使用命令行。


Highsoft有一个专门讨论这个问题的主题。 - epoch
3个回答

5

最终决定使用jpGraph,使用表格格式化选项,该选项可以从HTML表格生成图表。 - Zabs

0

你可以使用Docxpresso API生成PDF或任何其他办公格式(PDF,ODT...),包括任何类型的图表。该API允许您一次性生成文档和图表。您无需先生成图表,然后将其集成到文档中。该API可免费用于非商业用途,并且您可以在任何使用PHP的服务器上安装它。 http://docxpresso.com/files/html52pdf.zip


0

在Laravel应用程序中使用amenadiel/jpgraph软件包并在blade页面上显示图形,您可以按照以下步骤进行:

您还可以使用此合并请求进行所有更改:https://github.com/saber13812002/bot-generator-bale-telegram-laravel-10/pull/28/files

通过在终端中运行以下命令,使用Composer安装amenadiel/jpgraph软件包:

composer require amenadiel/jpgraph

在您的Laravel应用程序中创建一个新的路由来显示图表。打开routes/web.php文件并添加以下路由定义:
Route::get('/graph', function () {
    // TODO: Generate graph
    return view('graph');
});

这个路由将返回一个名为graph的blade视图。
在路由回调函数中,使用amenadiel/jpgraph包生成图表。下面是一个创建简单柱状图的示例代码片段:
创建控制器:
php artisan make:controller ChartController

将此行添加到Laravel中route文件夹的api.php文件中。
Route::get('/chart', [ChartController::class, 'chart']);

在ChartController中创建一个名为chart的方法:将以下代码放在其中。
use Amenadiel\JpGraph\Graph\Graph;
use Amenadiel\JpGraph\Plot\BarPlot;
use Amenadiel\JpGraph\Plot\Plot;

$data = [30, 50, 80, 60, 70];  // Sample data

$graph = new Graph(400, 300);
$graph->SetScale('textlin');
$graph->SetMargin(50, 30, 50, 50);

$plot = new BarPlot($data);
$plot->SetFillColor('#3182bd');
$plot->SetWidth(0.5);

$graph->Add($plot);

$graph->Stroke();

这段代码创建了一个大小为400x300像素的新图形对象,并将比例设置为textlin。然后,它使用示例数据创建了一个BarPlot对象,并自定义了其外观。使用Add方法将绘图添加到图形中。最后,调用Stroke方法将图形输出为PNG图像。
将生成的图形保存到文件或直接输出到浏览器。要将图形直接输出到浏览器,可以使用输出缓冲捕获Stroke方法的输出,并将其作为响应返回:
在ChartController的chart方法中的最后一段代码之后使用以下代码:
use Illuminate\Http\Response;

ob_start();
$graph->Stroke();
$image_data = ob_get_contents();
ob_end_clean();

return new Response($image_data, 200, [    'Content-Type' => 'image/png',]);

这段代码使用输出缓冲捕获Stroke方法的输出,并将其存储在$image_data变量中。然后,它发送一个带有图像数据的Response对象,状态码为200,并且Content-Type头部为image/png。
在resources/views目录中创建一个名为graph.blade.php的新blade视图,并添加一个图像标签来显示图表。
<img src="{{ url('/api/graph') }}" alt="Graph">

这段代码创建了一个图像标签,指向我们之前定义的/graph路由。当页面被渲染时,浏览器会从服务器请求图像,并在页面中显示出来。
就是这样!现在你应该能够在Laravel应用程序的/graph页面上看到一个简单的柱状图了。你可以通过修改生成图表的代码来进一步自定义图表。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接