如何将 FPDI SetSourceFile 与重定向的 URL 一起使用?

How to use FPDI SetSourceFile with a URL that redirects?

我的服务器上有一个 PDF 文件,我想将其用作此功能的参数:

$fpdi->setSourceFile()

问题是用作源的 link 重定向到另一个 URL 而我不知道最后的 URL。 setSourceFile 似乎需要真正的 PDF 文件名。 有没有办法得到最后的URL,然后把它作为参数传递?

我根据您在评论中给出的解释编辑了您的问题。这与重写无关,它与 URL 重定向有关。

解决方案 1:手动打开流

我查看了这个特定函数的 source code,它希望接收文件名或流。您可以手动获取 PDF link,处理重定向并将最终流传递给此函数:

$stream = fopen('https://example.com/12/PDF', 'rb', false, stream_context_create());

$fpdi->setSourceFile($stream);

如果需要,您可以在 stream_context_create 函数中调整 headers 和其他参数,例如 cookie。在重定向到最终 URL.

之前,远程服务器可能需要 cookie 或其他东西

解决方案 2:下载文件

如果您将 link 传递给此函数,它会将其识别为 Stringtry to open it as a file。由于您声明传递不重定向的 link 有效,因此您的服务器允许函数 fopen() 打开外部 link。如果是这样,您可以简单地使用普通文件功能将PDF暂时下载到本地文件夹:

// saves the file locally
file_put_contents('localFile.pdf', file_get_contents('https://example.com/12/PDF'));

// do what you need to do with it
$fpdi->setSourceFile('localFile.pdf');

// deletes the file after using it
unlink('localFile.pdf');