提问人:Zabs 提问时间:7/31/2012 最后编辑:Peter MortensenZabs 更新时间:10/26/2023 访问量:10287
将图表生成到图像服务器端(嵌入到 PDF 中)的最简单方法
Easiest way to generate chart to an image server-side (to be embedded into PDF)
答:
您可以使用 JpGraph 通过 PHP 生成图形并保存为图像:
评论
您可以使用 Docxpresso API 生成 PDF 或任何其他办公格式(PDF、ODT......该 API 允许您一次性生成文档和图表。您无需生成图表,然后将其集成到文档中。该 API 可以免费用于非商业用途,您可以将其安装在任何使用 PHP 的服务器中。http://docxpresso.com/files/html52pdf.zip
若要在 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 的 Route 文件夹中的api.php
Route::get('/chart', [ChartController::class, 'chart']);
在名为 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 的 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 和 image/png 的 Content-Type 标头。
在 resources/views 目录中创建名为 graph.blade.php 的新边栏选项卡视图,并添加图像标记以显示图形:
<img src="{{ url('/api/graph') }}" alt="Graph">
此代码创建一个图像标记,该标记指向我们之前定义的 /graph 路由。页面呈现时,浏览器会向服务器请求图形图像,并将其显示在页面中。
就是这样!现在,您应该能够在 Laravel 应用程序的 /graph 页面上看到一个简单的条形图。您可以通过修改生成图形的代码来进一步自定义图形。
评论