当前位置:首页 > PHP

php实现pdf下载

2026-01-28 20:38:05PHP

PHP实现PDF下载的方法

使用PHP实现PDF文件下载可以通过设置HTTP头信息来控制浏览器的行为,强制触发下载而非直接打开文件。以下是几种常见方法:

使用header()函数强制下载

设置正确的HTTP头信息,指定内容类型为PDF并添加附件下载提示:

$filePath = '/path/to/your/file.pdf';
$fileName = 'document.pdf';

header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="' . $fileName . '"');
header('Content-Length: ' . filesize($filePath));

readfile($filePath);
exit;

从URL生成PDF并下载

若需动态生成PDF内容(如使用TCPDF、FPDF等库):

php实现pdf下载

require_once('tcpdf/tcpdf.php');

$pdf = new TCPDF();
$pdf->AddPage();
$pdf->SetFont('helvetica', '', 12);
$pdf->Write(0, 'Sample PDF Content');

header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="generated.pdf"');
echo $pdf->Output('', 'S');

处理远程PDF下载

从远程服务器获取PDF并转发给客户端:

$remoteUrl = 'https://example.com/document.pdf';
$pdfContent = file_get_contents($remoteUrl);

header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="downloaded.pdf"');
echo $pdfContent;

添加缓存控制

对于大文件或需要防止重复下载的情况:

php实现pdf下载

header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Expires: 0');

安全注意事项

  • 验证文件路径防止目录遍历攻击:

    $baseDir = '/safe/directory/';
    $userFile = $_GET['file'];
    if (strpos(realpath($baseDir . $userFile), $baseDir) !== 0) {
      die('Invalid file path');
    }
  • 对大文件使用分块读取避免内存溢出:

    $chunkSize = 1024 * 1024;
    $handle = fopen($filePath, 'rb');
    while (!feof($handle)) {
      echo fread($handle, $chunkSize);
      ob_flush();
      flush();
    }
    fclose($handle);

标签: phppdf
分享给朋友:

相关文章

php实现文件上传

php实现文件上传

PHP 文件上传实现方法 在 PHP 中实现文件上传需要处理 HTML 表单和服务器端脚本。以下是详细步骤: 创建 HTML 表单 使用 enctype="multipart/form-data"…

vue 实现pdf

vue 实现pdf

在Vue中实现PDF功能 使用vue-pdf库 安装vue-pdf库: npm install vue-pdf 在Vue组件中使用: <template> <pdf :s…

vue实现pdf

vue实现pdf

Vue 中实现 PDF 功能的方法 使用第三方库 vue-pdf 安装 vue-pdf 库: npm install vue-pdf 在组件中使用: <template> &l…

php记住密码怎么实现

php记住密码怎么实现

使用Cookie实现记住密码功能 在PHP中,可以通过设置Cookie来记住用户的登录状态。以下是一个简单的实现方式: // 用户登录验证成功后 if ($login_success) {…

php实现注册

php实现注册

注册功能实现步骤 数据库准备 创建用户表,包含字段如id、username、password、email等。示例SQL: CREATE TABLE users ( id INT AUTO_…

php 实现购物车

php 实现购物车

PHP 实现购物车功能 购物车功能是电子商务网站的核心部分,可以通过 PHP 和 Session 或数据库来实现。以下是两种常见的实现方式: 使用 Session 存储购物车数据 Sessi…