chromeheadlessio/php-client

一个开源的PHP客户端,用于使用chromeheadless.io的云导出服务

1.4.0 2023-03-29 08:21 UTC

README

专注于您的应用程序,通过将繁重的PDF生成任务卸载给我们来节省您的时间和服务器的资源。ChromeHeadless.io将为您的专业客户的发票、数据报告等提供美观且无错误的PDF。

它是如何工作的?

我们的服务通过REST API提供,因此理论上可以与任何语言和系统一起使用。为了方便,我们正在为每种语言(如PHP、NodeJs、.Net和Python)构建客户端库。如果您使用这些语言,您可以安装客户端库,并使用从您的注册账户创建的秘密令牌提供它。客户端库将压缩您的HTML以及CSS和JavaScript等资源,并将其发送到我们的服务器农场以生成PDF版本。高分辨率的PDF将发送回您。

优势

使用我们的系统有许多优势

  1. 无需安装:您无需安装PhantomJS或无头Chrome。
  2. 卸载繁重任务:无头Chrome或PhantomJS需要一定数量的CPU和RAM,您可以将这些资源保留用于其他关键任务。此外,您的CPU和RAM可能没有针对此任务进行优化,这可能会影响效率。我们的系统包含一个高度优化的服务器农场,因此我们可以更快、更好地执行这些任务。
  3. 避免复杂的界面:您可以避免不必要的复杂编码来控制无头浏览器。
  4. 一切正常工作:我们将确保您的PDF生成得很好,所有字体都正常工作,这样您就可以花更多的时间专注于您的应用程序,而不是被无头Chrome的问题所困扰。

我们相较于其他类似PDF云服务的优势

在决定推出我们的服务之前,我们已经很好地研究了其他服务,以下是我们的一些优势

  1. 其中一些无法执行JavaScript,只能将纯HTML转换为PDF,但我们做到了
  2. 其中许多需要您的应用程序在线,以便资源可以加载。如果您的应用程序位于本地主机或内网,他们的解决方案将不起作用,但我们做到了

获取令牌密钥

令牌密钥是一个64字符的强字符串,用于访问我们的服务。您需要将令牌附加到您对服务的每个请求中。

生成令牌密钥的步骤

  1. 如果您已经拥有我们的账户,请进入第2步,否则注册。注册后几分钟,您将收到一封标题为“欢迎来到ChromeHeadless.io”的电子邮件。
  2. 使用欢迎邮件中的账户凭证登录我们的系统。
  3. 转到令牌管理页面
  4. 点击生成按钮以生成令牌密钥。

安装

可以通过composer安装PHP客户端

composer require chromeheadlessio/php-client

示例

<?php
//Use PHP Client Library
require_once "vendor/autoload.php";

//Create ChromeHeadless service with your token key specified
$service = new \chromeheadlessio\Service("my-token-key");

//Get PDF generated from html content and push it to browser
$service->export([
    "html"=>"Hello world!"
])->pdf([
    "format"=>"A4",
    "orientation"=>"portrait"
])->sendToBrowser("helloworld.pdf");

导出内容

《export()` 方法属于服务类。它接收一个数组作为参数,定义了需要导出的内容。以下是一系列属性:

导出到PDF

《pdf()` 方法可以帮助生成PDF文件。它接收一个数组作为参数,定义了PDF的选项。以下是可用的选项:

示例

$service->export(...)->pdf([
    "scale"=>1,
    "format"=>"A4",
    "landscape"=>true
])->sendToBrowser("myfile.pdf");

视图文件中的PDF选项

某些选项可以直接在PDF视图文件中设置,而不是通过pdf()方法。

页眉和页脚

在视图文件中,使用页眉和页脚标签来设置PDF的页眉和页脚模板。

示例

<header>
    <div id="header-template" 
        style="font-size:10px !important; color:#808080; padding-left:10px">
        <span>Header: </span>
        {date}
        {title}
        {url}
        {pageNumber}
        {totalPages}
        <span id='pageNum' class="pageNumber"></span>
        <img src='http://www.chromium.org/_/rsrc/1438879449147/config/customLogo.gif?revision=3' />
    </div>
</header>
<footer>
...
</footer>

如果存在页眉或页脚标签,则PDF选项的displayHeaderFooter属性将为true。PDF选项的headerTemplate和footerTemplate选项优先于视图文件的页眉和页脚标签。使用页眉和页脚标签时,如果没有字体大小样式,将使用默认样式 "font-size:10x"。页眉和页脚标签支持占位符如 {date}、{title} 等,以及带有链接类型src的img标签。对于img标签,PDF选项的headerTemplate和footerTemplate只支持base64类型的src。

页边距

在视图文件中,使用body标签的margin样式来设置PDF的页边距。

示例

//MyReportPDF.view.php
<body style='margin: 1in 0.5in 1in 0.5in'>
...
</body>

如果存在页眉或页脚标签,但没有body的页边距,则将使用默认页边距1英寸。

导出到PNG

《png()` 方法可以帮助生成PNG文件。它接收一个数组作为参数,定义了PNG的选项。以下是属性列表:

示例

$service->export(...)->png([
    "clip"=>[
        "x"=>100,
        "y"=>100,
        "width"=>500,
        "height"=>1000,
    ]
])->sendToBrowser("myfile.png");

导出到JPG

《png()` 方法可以帮助生成JPG文件。它接收一个数组作为参数,定义了JPG的选项。以下是属性列表:

示例

$service->export(...)->jpg([
    "quality"=>80
    "clip"=>[
        "x"=>100,
        "y"=>100,
        "width"=>500,
        "height"=>1000,
    ]
])->sendToBrowser("myfile.jpg");

获取结果

在上述所有示例中,我们使用方法 sendToBrowser() 将文件发送到浏览器,用户可以在浏览器中打开或作为附件下载。以下是所有选项:

示例

$service->export(...)->jpg([
    "quality"=>80
    "clip"=>[
        "x"=>100,
        "y"=>100,
        "width"=>500,
        "height"=>1000,
    ]
])->save("../img/myfile.jpg");

关于我们

酷PHP公司 已经从事业务10年,我们专注于构建功能丰富且易于使用的组件,以帮助开发者提高生产力,在时间和预算限制内交付最高质量的应用程序。我们的主要产品是KoolPHP UI和KoolReport。KoolPHP UI 是开发者构建网页的工具集,而KoolReport 是一个开源的报表框架,用于更轻松地构建数据报表和仪表板。