在图像服务器端生成图表(嵌入到 PDF 中)的最简单方法?

问题描述 投票:0回答:3

我正在使用

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

任何人都可以建议最简单的方法而不需要命令行吗?

php charts server-side
3个回答
5
投票

您可以使用 JpGraph 用 PHP 生成图表并保存为图像: http://jpgraph.net/


0
投票

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


0
投票

要在 Laravel 应用程序中使用 amenadiel/jpgraph 包并在刀片页面上显示图形,您可以按照以下步骤操作:

您还可以使用此合并请求进行所有更改: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 的刀片视图。

在路由回调函数中,使用 amenadiel/jpgraph 包生成图形。这是创建简单条形图的示例代码片段:

创建控制器:

php artisan make:controller ChartController

将此行添加到 laravel 路由文件夹中的 api.php

Route::get('/chart', [ChartController::class, 'chart']);

在名为图表的 ChartController 中创建方法:将此代码放在那里

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 像素的新 Graph 对象,并将比例设置为 textlin。然后,它使用示例数据创建一个 BarPlot 对象并自定义其外观。使用 Add 方法将图添加到图形中。最后调用Stroke方法将图形输出为PNG图像。

将生成的图形保存到文件或直接输出到浏览器。要将图形直接输出到浏览器,您可以使用输出缓冲捕获 Stroke 方法的输出并将其作为响应返回:

在 ChartController 的图表方法中的最后一个代码之后使用此代码,如下所示:

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 变量中。然后,它发送一个包含图像数据、状态代码 200 和 Content-Type 标头 image/png 的 Response 对象。

在 resources/views 目录中创建一个名为 graph.blade.php 的新刀片视图,并添加图像标签来显示图形:

<img src="{{ url('/api/graph') }}" alt="Graph">

此代码创建一个图像标签,该标签指向我们之前定义的 /graph 路由。当页面渲染时,浏览器会向服务器请求图形图像并将其显示在页面中。

就是这样!您现在应该能够在 Laravel 应用程序的 /graph 页面上看到一个简单的条形图。您可以通过修改生成该图的代码来进一步自定义该图。

© www.soinside.com 2019 - 2024. All rights reserved.