📜  将 html 转换为图像 laravel - Html (1)

📅  最后修改于: 2023-12-03 14:53:43.504000             🧑  作者: Mango

将HTML转换为图像 - Laravel HTML

将HTML转换为图像是一个很有用的功能,特别是在需要生成PDF文件或在没有网站访问权限的情况下。Laravel HTML是一个可以将HTML转换为图像的强大工具,它能够使用各种输出格式,如JPG,PNG和PDF。本文将向您介绍如何在Laravel中使用HTML,以及将HTML转换为图像的方法。

安装Laravel HTML

在使用Laravel HTML之前,你需要安装它。Laravel HTML使用Composer进行安装。在你的Laravel应用程序根目录下运行以下命令即可:

composer require spatie/browsershot
转换HTML为图形

你可以将任何HTML片段转换为图像。以下是如何在Laravel中进行HTML转换为图像的步骤。

use Spatie\Browsershot\Browsershot;

class ImageController extends Controller
{
    public function generateImage()
    {
        $html = '<h1>Hello World!</h1>';

        $image = Browsershot::html($html)->screenshot();

        return response($image)->header('Content-Type','image/png');
    }
}

在上面的示例中,我们使用Browsershot类的html()方法将HTML字符串传递给Browsershot插件。在调用screenshot ()方法之后,HTML会被转换为PNG图像。最后,我们将图像返回给用户。你可以使用response()函数来实现这一点。

设置图像大小

如果您希望以不同大小获取转换的图像,则可以使用以下方法来指定宽度和高度。

$image = Browsershot::html($html)
         ->windowSize(640, 480)
         ->screenshot();

在上述示例中,我们使用windowSize()方法通过指定宽度和高度来设置要生成的图像的大小。

指定文件格式

你可以使用formats()方法来指定图像的格式,将HTML转换为PDF。下面是如何指定不同格式的示例代码:

$image = Browsershot::html($html)
        ->format('jpeg')
        ->quality(90)
        ->screenshot();

$image = Browsershot::html($html)
        ->format('png')
        ->screenshot();

$pdf = Browsershot::html($html)
        ->format('pdf')
        ->landscape()
        ->margins(5,5,5,5)
        ->screenshot();
添加CSS样式

您可以将CSS样式添加到HTML字符串中。

$html = '
<head>
    <style>
        h1 {
            color: red;
        }
    </style>
</head>
<body>
    <h1>Hello World!</h1>
</body>
';

这里,我们在head标签中添加了CSS样式。它会改变h1标签的文字颜色。

浏览器选择

Laravel HTML也允许您选择使用哪个浏览器进行转换。

Browsershot::html($html)
          ->setNodeBinary('/usr/local/bin/node')
          ->setNpmBinary('/usr/local/bin/npm')
          ->setBinPath('/usr/bin/')
          ->setChromePath('/usr/bin/google-chrome')
          ->setFirefoxPath('/usr/bin/firefox')
          ->setWaitTimeout(2000)
          ->screenshot();

在上面的示例中,我们可以使用setChromePath()方法选择使用Chrome浏览器进行HTML转换。

结论

Laravel HTML使将HTML转换为图像或PDF变得容易。在本文中,我们向您展示了如何在Laravel中使用HTML来进行图像转换,以便为您的应用程序生成PDF文件或无网站访问权限的用户提供服务。