05百融云策略引擎项目交付-laravel实战完整交付定义常量分文件配置-独立建立lib类处理-成功导出pdf-优雅草卓伊凡

简介: 05百融云策略引擎项目交付-laravel实战完整交付定义常量分文件配置-独立建立lib类处理-成功导出pdf-优雅草卓伊凡

05百融云策略引擎项目交付-laravel实战完整交付定义常量分文件配置-独立建立lib类处理-成功导出pdf-优雅草卓伊凡

引言

此前只是把关于如何把查询内容导出pdf库的代码实现了,但是我们并没有完成整个项目,这最后一个步骤就是安装composer再安装tcpdf库,最后修改结构目录实现完整项目功能,查询得到结果导出pdf库,本篇调整目录结构,分文件实现代码,完整交付过程完成交付。

演示demo地址

bairong.youyacao.com

实战开始

我卓伊凡将为你提供完整的调整目录结构,分文件实现代码,完整交付过程,对待小项目也要如此,否则很多人永远敷衍了事永远成不了事。

首先上篇我们知道安装完成了

2. 调整目录结构

建议的目录结构:

/ (项目根目录)
├── composer.json
├── composer.lock
├── vendor/ (Composer自动生成)
├── config/
│   └── constants.php (常量配置)
├── lib/
│   ├── BairongAPI.php (API处理类)
│   └── PDFGenerator.php (PDF生成类)
├── temp/ (临时文件目录)
├── assets/
│   ├── css/
│   ├── js/
│   └── images/
│       └── logo.png (企业logo)
└── index.php (主入口文件)

我们查看目录结构,

我们对应建立起来 其他文件夹

3. 分文件实现代码

config/constants.php

<?php
// API配置常量
define('API_CODE', '保密');
define('APP_KEY', '保密');
define('STRATEGY_ID', '保密');
define('SANDBOX_URL', 'https://sandbox-api2.100credit.cn/infoverify/v3/info_verify');
define('PRODUCTION_URL', 'https://api2.100credit.cn/infoverify/v3/info_verify');
// 路径常量
define('ROOT_PATH', dirname(__DIR__));
define('TEMP_PATH', ROOT_PATH.'/temp');
define('ASSETS_PATH', ROOT_PATH.'/assets');

lib/BairongAPI.php

<?php
require_once ROOT_PATH.'/config/constants.php';
class BairongAPI
{
    // ... 保持原有的BairongAPI类代码不变 ...
    // 只需将硬编码的配置改为使用常量,如:
    private $apiCode = API_CODE;
    private $appKey = APP_KEY;
    // ... 其他代码不变 ...
}

那么也就是

将我们在 constants.php中定义的常量 改过来

lib/PDFGenerator.php

<?php
require_once ROOT_PATH.'/vendor/autoload.php';
require_once ROOT_PATH.'/config/constants.php';
class PDFGenerator
{
    // ... 保持原有的PDFGenerator类代码不变 ...
    // 修改logo路径使用常量:
    $logoFile = ASSETS_PATH.'/images/logo.png';
    // ... 其他代码不变 ...
}

这个就是主要的 类,其实我们之前就没有方logo 不过我们可以放个logo后面

index.php

<?php
require_once __DIR__.'/config/constants.php';
require_once __DIR__.'/vendor/autoload.php';
require_once __DIR__.'/lib/BairongAPI.php';
require_once __DIR__.'/lib/PDFGenerator.php';
// 确保临时目录存在
if (!file_exists(TEMP_PATH)) {
    mkdir(TEMP_PATH, 0755, true);
}
// ... 保持原有的表单处理逻辑 ...
// 修改PDF导出部分的文件路径:
$pdfFile = TEMP_PATH.'/verify_result_'.date('YmdHis').'.pdf';
// ... 其余代码不变 ...

接下来这个是入口文件,index 我们修改为以下内容

改好后报错

Parse error: syntax error, unexpected token “<”, expecting end of file in /www/wwwroot/bairong.youyacao.com/lib/PDFGenerator.php on line 320

这个错误是因为在 PDFGenerator.php 类文件中直接包含了 HTML 代码,这是不允许的。HTML 导出按钮的代码应该放在 index.php 文件中,而不是 PDF 生成类中。

修正方案

1. 修改 lib/PDFGenerator.php

删除文件末尾的 HTML 代码部分,确保类文件只包含 PHP 代码:

<?php
require_once ROOT_PATH.'/vendor/autoload.php';
require_once ROOT_PATH.'/config/constants.php';
class PDFGenerator
{
    // ... 保持原有的 PDFGenerator 类代码 ...
    // 确保文件末尾没有 ?> 闭合标签和 HTML 代码
    // 类定义结束后不要有任何其他内容
}

2. 在 index.php 中添加导出按钮

index.php 的结果显示区域添加导出按钮代码:

<!-- 在 index.php 的结果显示区域添加 -->
<?php if (isset($result)): ?>
    <?php echo (new BairongAPI())->formatResult($result); ?>
    <?php if (!isset($result['error'])): ?>
        <div class="mt-4 text-center">
            <form method="post" style="display: inline;">
                <input type="hidden" name="name" value="<?php echo htmlspecialchars($_POST['name'] ?? ''); ?>">
                <input type="hidden" name="id_number" value="<?php echo htmlspecialchars($_POST['id_number'] ?? ''); ?>">
                <input type="hidden" name="phone" value="<?php echo htmlspecialchars($_POST['phone'] ?? ''); ?>">
                <button type="submit" name="export_pdf" class="btn btn-danger">
                    <i class="fas fa-file-pdf me-2"></i>导出PDF报告
                </button>
            </form>
        </div>
    <?php endif; ?>
<?php endif; ?>

3. 完整修正后的 lib/PDFGenerator.php

<?php
require_once ROOT_PATH.'/vendor/autoload.php';
require_once ROOT_PATH.'/config/constants.php';
class PDFGenerator
{
    /**
     * 生成查询结果PDF
     * @param array $result 查询结果数据
     * @param array $queryParams 查询参数(姓名、身份证、手机号)
     * @return string PDF文件路径
     */
    public static function generateResultPDF($result, $queryParams)
    {
        // 创建TCPDF实例
        $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
        // 设置文档信息
        $pdf->SetCreator('优雅草科技');
        $pdf->SetAuthor('优雅草科技');
        $pdf->SetTitle('百融云信息验证报告');
        $pdf->SetSubject('信息验证结果');
        $pdf->SetKeywords('百融云, 信息验证, 优雅草科技');
        // 设置默认等宽字体
        $pdf->SetDefaultMonospacedFont('courier');
        // 设置边距
        $pdf->SetMargins(15, 15, 15);
        $pdf->SetHeaderMargin(5);
        $pdf->SetFooterMargin(10);
        // 设置自动分页
        $pdf->SetAutoPageBreak(TRUE, 25);
        // 设置图像比例
        $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
        // 添加页面
        $pdf->AddPage();
        // 生成封面
        self::generateCoverPage($pdf, $queryParams);
        // 添加新页面放置详细内容
        $pdf->AddPage();
        // 生成基本信息部分
        self::generateBasicInfo($pdf, $result, $queryParams);
        // 生成验证结果部分
        self::generateVerificationResult($pdf, $result);
        // 生成手机验证部分
        self::generatePhoneVerification($pdf, $result);
        // 生成特殊名单部分
        self::generateSpecialList($pdf, $result);
        // 定义输出文件名
        $filename = 'verify_result_'.date('YmdHis').'.pdf';
        $filepath = TEMP_PATH.'/'.$filename;
        // 输出PDF文件
        $pdf->Output($filepath, 'F');
        return $filepath;
    }
    // ... 保持其他方法不变 ...
    // 注意:不要在此文件末尾包含任何HTML代码或PHP闭合标签
}

4. 完整实现流程

  1. 初始化项目
mkdir myproject
cd myproject
  1. 安装依赖
composer require tecnickcom/tcpdf
  1. 创建目录结构
mkdir -p config lib temp assets/{css,js,images}
  1. 添加配置文件
  • 将上面的constants.php放入config/目录
  • 将企业logo图片放入assets/images/目录
  1. 添加类文件
  • BairongAPI.php放入lib/目录
  • PDFGenerator.php放入lib/目录
  1. 设置权限
chmod -R 755 temp/
  1. 修改index.php
  • 使用上面提供的分文件版本的index.php
  1. 测试运行
  • 确保PHP环境正常运行(建议PHP 7.4+)
  • 访问index.php进行测试

5. 关键注意事项

  1. 字体支持
  • TCPDF默认不包含中文字体,需要手动添加
  • 可以从vendor/tecnickcom/tcpdf/fonts/目录中选择或添加新字体
  1. 临时目录
  • 确保Web服务器对temp/目录有写入权限
  • 定期清理临时文件(可以设置cron任务)
  1. 生产环境
  • 禁用测试环境URL
  • 启用SSL证书验证
  • 限制PDF生成频率防止滥用
  1. 错误处理
  • 添加PDF生成失败的异常处理
  • 记录生成日志
  1. 性能优化
  • 对于高并发场景,考虑缓存PDF结果
  • 使用opcache提升PHP性能

完整修改后 我们成功可以访问了

也可以进行查询了

本项目完整了整个功能。

目录
相关文章
|
2月前
|
存储 数据处理 数据库
公募REITs公告PDF文档处理项目
本项目是一个专门用于处理基础设施公募REITs(Real Estate Investment Trusts)公告PDF文件的完整RAG数据处理管道,也适用于其他公告PDF文件,应用多模态大模型,可高效提升文本提取内容。系统能够自动化地将PDF公告文档转换为结构化数据,能够检测表格、实现跨页表格拼接,并将表格内容还原为便于检索的文本信息。并构建向量数据库和 Elasticsearch 以支持智能检索与问答系统。
公募REITs公告PDF文档处理项目
|
2月前
|
机器学习/深度学习 文字识别 Java
Python实现PDF图片OCR识别:从原理到实战的全流程解析
本文详解2025年Python实现扫描PDF文本提取的四大OCR方案(Tesseract、EasyOCR、PaddleOCR、OCRmyPDF),涵盖环境配置、图像预处理、核心识别与性能优化,结合财务票据、古籍数字化等实战场景,助力高效构建自动化文档处理系统。
640 0
|
1月前
|
机器学习/深度学习 文字识别 Shell
高效率办公PDF批量处理:批量OCR识别PDF区域文字内容,用PDF内容批量改名或导出表格的货物运单应用案例
针对铁路货运物流单存档需求,本项目基于WPF与飞桨OCR技术,实现批量图片多区域文字识别与自动重命名。用户可自定义识别区域,系统提取关键信息(如车号、批次号)并生成规范文件名,提升档案管理效率与检索准确性,支持PDF及图像文件处理。
253 0
|
7月前
|
存储 JSON API
如何将 Swagger 文档导出为 PDF 文件
你会发现自己可能需要将 Swagger 文档导出为 PDF 或文件,以便于共享和存档。在这篇博文中,我们将指导你完成将 Swagger 文档导出为 PDF 格式的过程。
|
3月前
|
监控 Linux 数据安全/隐私保护
Python实现Word转PDF全攻略:从入门到实战
在数字化办公中,Python实现Word转PDF自动化,可大幅提升处理效率,解决格式兼容问题。本文详解五种主流方案,包括跨平台的docx2pdf、Windows原生的pywin32、服务器部署首选的LibreOffice命令行、企业级的Aspose.Words,以及轻量级的python-docx+pdfkit组合。每种方案均提供核心代码与适用场景,并涵盖中文字体处理、表格优化、批量进度监控等实用技巧,助力高效办公自动化。
894 0
|
6月前
|
安全 BI
AiPy实战:批量解析 PDF 漏洞报告,今日高风险数据一键归档
作为安全合规部门的效率神器,AiPy工具让处理200+份PDF漏洞报告变得简单高效。只需三步:批量导入文件、精准提取高风险漏洞数据(如编号、名称、类型等),并生成无重复的Excel报表,极大减少手动操作与错误。示例中,从指定目录提取含“高”字样的漏洞信息,并按要求保存为以日期命名的Excel文件,确保数据唯一且完整。相比传统手动方式,AiPy不仅提升工作效率,还留出更多时间专注安全策略优化与技术研究,助你成为团队核心骨干!
|
7月前
|
程序员 开发者
开源项目:一行代码,批量 PDF 转 Word 轻松搞定!
程序员晚枫分享了 `popdf` 的新功能:支持批量 PDF 转 Word!只需简单代码,即可轻松实现单文件或批量转换。`input_path` 和 `output_path` 参数让操作更便捷,适合处理大量 PDF 文件。作为开发者,晚枫致力于解决技术小痛点,欢迎体验并反馈。项目地址:[https://github.com/CoderWanFeng/popdf](https://github.com/CoderWanFeng/popdf)
632 6
|
9月前
|
人工智能 JSON 搜索推荐
猫步简历 - 开源免费AI简历生成器 | 一键导出PDF/JSON
猫步简历是一款免费开源的AI简历生成器,帮助用户轻松创建独特、专业的简历。支持导出超高清PDF、图片、JSON等多种格式,并提供AI智能创作、润色和多语种切换等功能。拥有海量模板、高度定制化模块及完善的后台管理系统,助力求职者脱颖而出。官网:https://maobucv.com,GitHub开源地址:https://github.com/Hacker233/resume-design。
2054 10
|
9月前
|
文字识别
【PDF提取全自动改名】如何批量提取PDF指定区域的文字内容,用内容批量给PDF命名或者导出表格,学会全自动解放双手
在生活和工作中,我们常需处理大量PDF文件,如银行单据、税收单据等。手动处理效率低下,而使用“咕嘎批量PDF多区域内容提取重命名导表格系统”可快速完成数千份文档的处理,大幅提高效率。该工具通过获取PDF各区域内容坐标,导入并处理文件,最终将信息提取至表格,并根据关键信息对PDF进行重命名,方便管理和查找。
1424 2
|
Java BI API
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具
这篇文章介绍了如何在Spring Boot项目中整合iTextPDF库来导出PDF文件,包括写入大文本和HTML代码,并分析了几种常用的Java PDF导出工具。
3092 0
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具