当前位置:首页 > 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"…

php实现搜索功能

php实现搜索功能

实现基本的搜索功能 在PHP中实现搜索功能通常涉及数据库查询。以下是一个简单的实现方式,假设使用MySQL数据库: <?php // 连接数据库 $conn = new mysqli('loc…

php实现递归

php实现递归

递归的基本概念 递归是一种函数调用自身的技术,适用于解决可以分解为相同子问题的问题。在PHP中,递归需要明确的终止条件(基线条件),否则会导致无限循环。 递归实现阶乘 阶乘是经典的递归案例,n! =…

php实现websocket

php实现websocket

PHP 实现 WebSocket WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。PHP 可以通过多种方式实现 WebSocket 功能,以下是几种常见的方法: 使用 Ratc…

php实现排序

php实现排序

PHP 数组排序方法 PHP 提供了多种内置函数用于数组排序,适用于不同的排序需求。以下是常见的排序方法: 按值升序排序 sort() 函数对数组按值升序排序,重置键名(索引数组适用): $num…

php实现跳转

php实现跳转

PHP 实现页面跳转的方法 在 PHP 中实现页面跳转有多种方式,以下是常见的几种方法及其适用场景: 使用 header() 函数 通过 header() 函数发送 HTTP 头部信息实现跳转。注意…