Laravel/Lumen生成PDF

laravel-pdf:从Laravel 5内部HTML轻松生成PDF文档 Laravel PDF:Laravel 5的mPDF包装器 使用此mPDF包装器,可以从Laravel内部HTML轻松生成PDF文档。 安装 在composer.json需要此软件包,或通过运行以下命令进行安装: composer require niklasravnsborg/laravel-pdf 注意:此软件包支持Laravel 5.5+的自动发现功能,如果使用低于5.5的Laravel版本,则只需手动添加服务提供商和别名 要开始使用Laravel,请将Service Provider和Facade添加到您的config/app.php : 'providers' => [ // ... niklasravnsborg\ LaravelPdf \ PdfServiceProvider ::class ] 'aliases' => [ // ... 'PDF' => niklasravnsborg\ LaravelPdf \ Facades \ Pdf ::class ] 现在,您应该使用以下命令将软件包的配置文件发布到您的配置目录中: php artisan v 立即下载

前言

之前的项目中,涉及一个生成 PDF 的需求,当时使用的框架是 Lumen。

调研

原本是想用官方网站上可以看到的 PDF 扩展的,发现使用之后有水印,直接放弃。(传送门 好像已经不能打开了)

之后考虑了一下,如果能像浏览器一样,将网页直接转换为 PDF,那该多好,省时省力。

搜索了一下,发现还蛮多。

但适合这个项目的都需要自己再封装一下,为了方便,检索了一下基于 Laravel 的包。

最终选定了 niklasravnsborg/laravel-pdf 传送门,这个项目是基于 mpdf 的封装。

在使用的时候,遇到了两个问题。

  1. 不兼容 Lumen
  2. 中文乱码

问题解决

不兼容 Lumen

看了下源码,是配置获取的时候,Laravel 和 Lumen 的方式有所差异。

于是 Fork 了项目,并重写了 src/LaravelPdf/PdfServiceProvider.php@boot 和 src/LaravelPdf/PdfServiceProvider.php@register。

TIPS:有一些细节就不细说了,可以直接拿到项目里使用。imjcw/laravel-pdf

public function boot()
{
    // 原代码
    // $this->publishes([$this->configPath() => config_path('pdf.php')]);

    // 新代码
    if ($this->app instanceof \Laravel\Lumen\Application) {
        $this->app->configure(self::CONFIG_KEY);
    } else {
        $this->publishes([$this->configPath() => config_path('pdf.php')]);
    }
}

public function register()
{
    // 原代码
    // $this->mergeConfigFrom(
    //     __DIR__ . '/../config/pdf.php', 'pdf'
    // );

    // $this->app->bind('mpdf.wrapper', function($app) {
    //     return new PdfWrapper();
    // });

    // 新代码
    $this->mergeConfigFrom($this->configPath(), 'pdf');

    $this->app->bind('mpdf.wrapper', function($app) {
        return new PdfWrapper(config(self::CONFIG_KEY));
    });
}

随后发布了 packagist,就在项目中引用了。

中文乱码

时间有点久,具体细节忘了,主要配置如下:

TIPS:这里的 stsong.ttf 是从网上下载来使用的。为了省事,所有的字体都是一个😂。

<?php

return [
    'mode'         => '+aCJK',
    'format'       => 'A4', // See https://mpdf.github.io/paging/page-size-orientation.html
    'author'       => 'John Doe',
    'subject'      => 'This Document will explain the whole universe.',
    'keywords'     => 'PDF, Laravel, Package, Peace', // Separate values with comma
    'creator'      => 'Laravel Pdf',
    'display_mode' => 'fullpage',
    'font_path'    => base_path('resources/fonts'),
    'font_data'    => [
        'stsong' => [
            'R'  => 'stsong.ttf',
            'B'  => 'stsong.ttf',
            'I'  => 'stsong.ttf',
            'BI' => 'stsong.ttf'
        ]
    ],
    'tempDir' => storage_path('app/public')
];

使用

Lumen 中 bootstrap/app.php 中添加下两行(最好添加到指定位置):

$app->configure('pdf');
$app->register(niklasravnsborg\LaravelPdf\PdfServiceProvider::class);

Laravel 中写入 Kernel.php 中就行。

真香!!!

app('mpdf.wrapper')->loadHTML($html)->save($filePath);

最后

了解工具,可以帮助我们更好的使用工具。

Laravel开发-pdf-lumen Laravel开发-pdf-lumen Laravel Lumen的K98kurz/pdf(dompdf包装)兼容叉 立即下载

相关推荐

laravel生成pdf

laravel生成pdf文件,laravel生成pdf文件,laravel生成pdf文件,laravel生成pdf文件,laravel生成pdf文件,

jQuery实现页面滚动条自动滚动到需要的位置

代码如下: <script> $(function(){ $('html,body').animate({scrollTop:1000},'slow'); }) </script> 解读代码:在载入html页面的body这一块内容中,实现滚动进行展示body的某一块内容,scrollTop方法 进行滚动1000像素 (像素越大滚动的越下去,也...

zhangzeshan 1万+

Laravel开发-pdf-lumen-bundle

Laravel开发-pdf-lumen-bundle Laravel Lumen的K98kurz/pdf(dompdf包装)兼容叉

推荐开源项目:Laravel Docs PDF 版本 - 离线阅读利器

推荐开源项目:Laravel Docs PDF 版本 - 离线阅读利器 项目介绍 作为一个全栈开发者,您是否经常在短时间内为小型到中型的Web应用创建API和管理界面?如果是这样,那么您一定对Laravel框架不陌生,其简洁的语法和快速开发工具使工作变得轻松高效。然而,在无互联网的情况下查阅在线文档可能会带来不便。为此,我们推荐一个非常实用的开源项目:laravel-docs-in-pdf,它提供...

gitblog_00063的博客 403

Laravel开发-laravel-dompdf

Laravel开发-laravel-dompdf Laravel的dompdf包装

浅谈laravel aliases别名的原理

在laravel发现有些类可以直接use 类名,就能使用了,例如use DB;就可以使用DB类了,问题是DB这个类并不在根命名空间,这里面实际就是用到了别名。 先通过如下例子来分析基本原理 建立如下文件upload.php,内容为 <?php namespace test\test2; class upload{ public function test(){ return 123; } } 2 建立文件index.php,内容为 <?php namespace b; require('upload.php'); class_alias ( '\test\test2\upload'

推荐开源项目:Laravel PDF - 优雅地在 Laravel 中生成 PDF

推荐开源项目:Laravel PDF - 优雅地在 Laravel 中生成 PDF 是一个由 Niklas Ravnsborg 开发的 Laravel 扩展包,它提供了一种简单而强大的方式,在 Laravel 应用中生成和处理 PDF 文件。该项目基于 TCPDF 库,将 PHP 的便利性和 Laravel 的优雅设计融合在一起,使开发者能够轻松地创建高质量的 PDF 文档。 项目简介 Larav...

gitblog_00009的博客 930

VisionMaster字符检测避坑指南:为什么你的缺陷检测总误判?7个参数陷阱详解

本文深入剖析了海康VisionMaster在字符缺陷检测中导致误判的7个关键参数陷阱,包括二值化参数、最小字符面积与宽度、字符极性及缺陷判决参数等。通过药品喷码和PCB丝印等实战案例,提供了系统的调试心法与工作流,帮助工程师精准调参,有效降低误判率,提升检测稳定性。

rust6ferris的博客 1099

Laravel PDF 导出

网上推荐的两个laravel pdf 导出,分别是laravel-dompdf和laravel-snappy,其实两个都好强大,不过我最终选择了一个小众的mpdfniklasravnsborg/laravel-pdf。 laravel-dompdf 对带有中文的数据不友好,中文乱码的,按照教程提示,下载一个支持中文的字体,但是依然有部分字体是乱码的,不明原因,所以最后放弃了 laravel-snappy 看了教程在使用前要安装wkhtmltopdf,心想以后要迁移到服务器上可能会麻烦,所以直接忽...

吴家健ken的博客 1629

Python爬虫实战:5分钟搞定微信公众号文章阅读数、点赞数抓取(附完整代码)

本文详细介绍了如何通过Python爬虫技术自动化抓取微信公众号文章的阅读数和点赞数。文章从数据源分析入手,分步讲解了获取文章列表与提取单篇统计数据的完整流程,并提供了应对平台风控的策略与工程化整合方案,帮助开发者高效、合规地完成数据采集任务。

ansible6ops的博客 1336

学习笔记( 11 ) - 解决:finalshell连接虚拟机(ubuntu)超时,主机ping不通虚拟机,主机没有VMnet8网卡, Connection refused: connect

解决:finalshell连接虚拟机(ubuntu)超时,主机ping不通虚拟机,主机没有VMnet8网卡, Connection refused: connect

烟溪彭于晏的博客 2万+

php 生成pdf插件下载,Laravel PDF生成插件轻松生成PDF

安装 InstallationLaravel 5.x更新composer后,将ServiceProvider添加到config/app.php中的providers数组Barryvdh\DomPDF\ServiceProvider::class,您可以选择使用Facade来缩短代码。将此添加到facades:'PDF' => Barryvdh\DomPDF\Facade::class,Lum...

weixin_35110501的博客 496

【AI智能体】AI 编程 + 飞书CLI + Skills 重塑开发新范式实战操作详解

AI 编程 + 飞书CLI + Skills 重塑开发新范式实战操作详解

congge 3666

Laravel-Dompdf 项目下载及安装教程

Laravel-Dompdf 是一个为 Laravel 框架提供的 DOMPDF 包装器,它允许开发者将 HTML 内容转换为 PDF 文件。DOMPDF 是一个开源的 HTML 到 PDF 转换器,而 Laravel-Dompdf 则简化了在 Laravel 项目中使用 DOMPDF 的过程。 ## 2. 项目下载位置 你可以通过以下链接访问 Laravel-Dompdf 项目的 GitHu...

gitblog_01296的博客 650

ADRC自抗扰算法优化(PLC梯形图篇)

ADRC自抗扰算法PLC梯形图完整源代码请参看下面博客文章:ADRC自抗扰控制算法(含梯形图完整源代码和算法公式)_adrc算法_RXXW_Dor的博客-优快云博客PLC的自抗扰控制(ADRC)算法_RXXW_Dor的博客-优快云博客_adrc算法1、自抗扰控制算法,网上很多文章有所讲解,大家也可以关注韩京清教授的论文和书籍,这里就不赘述了,下面给出梯形图+SCL代码。

RXXW_Dor的博客 2282

Chrome下载B站视频字幕的插件

本文主要介绍了Chrome下载B站视频字幕的插件,希望能对使用Chrome的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 3万+

Laravel DOMPDF包装器技术文档

DOMPDF Laravel包装器是专为将[Laravel框架](https://laravel.com/)与[Dompdf HTML到PDF转换器](https://github.com/dompdf/dompdf)集成而设计的工具。下面我们将详细介绍其安装步骤、使用方法、API示例以及配置选项。 ## 安装指南 ### 对于Laravel应用 1. 打开终端,通过Composer添加此包...

gitblog_01218的博客 1135

图像分割 - 使用Mask R-CNN模型在COCO数据集上进行图像分割任务

图像分割是计算机视觉领域的一个重要任务,它旨在将图像中的每个像素分类为对象或背景。Mask R-CNN是一种基于区域的卷积神经网络,可用于图像分割任务。它是Faster R-CNN的扩展,将目标检测与图像分割结合起来,能够同时检测和分割对象。在本博客中,我们将使用Mask R-CNN模型在COCO数据集上进行图像分割任务。我们将介绍如何下载和准备COCO数据集,以及如何使用Mask R-CNN模型进行训练和推理。

斌擎科技 1189

3步掌握Laravel ER图生成器:让数据库设计可视化变得简单

还在为复杂的Laravel模型关系而头疼吗?想要一眼看清数据库表之间的关联,却苦于没有合适的工具?Laravel ER Diagram Generator就是你一直在寻找的解决方案!这个强大的工具能够自动分析你的Laravel模型文件,生成清晰的实体关系图,让你直观理解数据结构,提升开发效率。 ## 🎯 为什么你需要这个工具? 在Laravel开发中,随着项目规模增长,模型关系变得越来越复杂

gitblog_01154的博客 658

​​​​手把手教你玩转RT-Thread操作系统专栏--​​​​第5章 设备驱动开发:RT-Thread的设备框架​​​​5.4 I2C/SPI驱动:如何驱动外部传感器(以MPU6050为例)​

通过本节学习,掌握了基于RT-Thread设备模型的I2C/SPI驱动开发流程,包括硬件初始化、寄存器读写、设备注册及应用程序调用。I2C(Inter-Integrated Circuit)和SPI(Serial Peripheral Interface)是嵌入式系统中最常用的两种串行总线协议,广泛用于连接传感器、存储器等外设。函数通过I2C协议读取外设寄存器的数据(如MPU6050的加速度寄存器)。SPI读取需先拉低片选(CS),发送寄存器地址,再读取数据,最后拉高CS。查找I2C设备,并调用。

xiaoheshang_123的博客 124

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

如何快速生成Laravel实体关系图:从零开始的完整可视化指南

**Laravel ER Diagram Generator** 是一款强大的开源工具,能够自动从你的 Laravel 模型文件生成实体关系图(ER Diagram)。对于Laravel开发者来说,理解数据库结构和模型间的关系是项目开发的关键环节。这个工具就像给你的数据库装上了一副"透视眼镜",让复杂的数据关系一目了然。 ## 📋 环境准备与前置条件 在开始使用之前,让我们先确保你的开发环境

gitblog_00763的博客 336

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

lumen利用laravel-snappy和ZipArchive实现导出pdf和打包pdf的功能

需求就是 需要导出后台列表的某天的某个用户的数据成pdf 如果没有选择某个用户 则打包某天的所有用户的数据成zip 这次不再是导出excel了 需要的导出excel 可以参考我之前的文章 https://blog.csdn.net/zhangzeshan/article/details/100549210 就是要把这样的表格形式 导出成pdf 首先 我们项目...

zhangzeshan 982

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Laravel 源码阅读

一、生命周期 依赖加载 composer 加载配置文件 初始化 Laravel\Lumen\Application Container、ErrorHandler、Router 注册应用程序的外观 $app-&gt;withFacades() Facades 加载应用程序的Eloquent库 $app-&gt;withEloquent() 在容器中注册共享绑定 $app-&gt;single...

蜂族的专栏 680

Laravel 资源汇总

必备品 文档:DocumentationAPI:API Reference视频:Laracasts新闻:Laravel News Laravel 5 基于2015年2月4日版本  * Laravel 5 基本原则 - Laracasts  * Laravel 5 新特性- Laracasts 以及 Matt Stauffer’s blog  * 发布说明 - Larav

郭胜龙的技术博客 2033

Laravel与ThinkPHP框架选型全解析:从架构到实战

Web开发框架作为现代PHP项目的技术基石,其选型直接影响系统性能和团队效率。主流框架通过依赖注入、ORM等技术实现业务逻辑与基础设施的解耦,其中Laravel凭借优雅的语法糖和丰富扩展生态,成为构建复杂应用的首选;而ThinkPHP则以轻量级架构和更低的学习曲线,在传统企业系统中占据优势。从技术原理看,Laravel的Service Container实现控制反转,配合Eloquent ORM提供流畅的领域建模体验;ThinkPHP则采用更接近原生SQL的查询构造器,便于快速实现数据操作。在电商、政务等典

weixin_42520374的博客 144

PanWatch 社区指南:从加入频道到高效报 Bug,4 条渠道一篇讲清

PanWatch(盯盘侠)是一款自托管的 AI 盯盘工具,覆盖 A股、港股、美股的行情监控、持仓分析与多渠道消息推送。围绕它形成了一个由四个渠道组成的社区协作体系:Telegram 频道负责日常交流与经验互助,Issue 区跟踪正式的 Bug 与功能需求,私密邮箱接收安全漏洞报告,代码仓库承接贡献与项目支持。下文按使用场景说明各渠道的入口与操作要点:先查速查表定位自己的场景,再按对应小节执行。

gitblog_00524的博客 557
上一篇: Laravel config注意点
下一篇: Docker ELKF平台搭建 单机
IMJCW
博客等级 码龄10年 13粉丝 58原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值