
此前只是把关于如何把查询内容导出pdf库的代码实现了,但是我们并没有完成整个项目,这最后一个步骤就是安装composer再安装tcpdf库,最后修改结构目录实现完整项目功能,查询得到结果导出pdf库,本篇调整目录结构,分文件实现代码,完整交付过程完成交付。
bairong.youyacao.com
我卓伊凡将为你提供完整的调整目录结构,分文件实现代码,完整交付过程,对待小项目也要如此,否则很多人永远敷衍了事永远成不了事。
首先上篇我们知道安装完成了

建议的目录结构:
/ (项目根目录)
├── 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 (主入口文件)我们查看目录结构,

我们对应建立起来 其他文件夹
<?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');<?php
require_once ROOT_PATH.'/config/constants.php';
class BairongAPI
{
// ... 保持原有的BairongAPI类代码不变 ...
// 只需将硬编码的配置改为使用常量,如:
private $apiCode = API_CODE;
private $appKey = APP_KEY;
// ... 其他代码不变 ...
}那么也就是

将我们在 constants.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后面
<?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 生成类中。
lib/PDFGenerator.php删除文件末尾的 HTML 代码部分,确保类文件只包含 PHP 代码:
<?php
require_once ROOT_PATH.'/vendor/autoload.php';
require_once ROOT_PATH.'/config/constants.php';
class PDFGenerator
{
// ... 保持原有的 PDFGenerator 类代码 ...
// 确保文件末尾没有 ?> 闭合标签和 HTML 代码
// 类定义结束后不要有任何其他内容
}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; ?>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闭合标签
}mkdir myproject
cd myprojectcomposer require tecnickcom/tcpdfmkdir -p config lib temp assets/{css,js,images}constants.php放入config/目录assets/images/目录BairongAPI.php放入lib/目录PDFGenerator.php放入lib/目录chmod -R 755 temp/index.phpvendor/tecnickcom/tcpdf/fonts/目录中选择或添加新字体temp/目录有写入权限完整修改后 我们成功可以访问了

也可以进行查询了

本项目完整了整个功能。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。