如何将 FPDI SetSourceFile 与重定向的 URL 一起使用?
How to use FPDI SetSourceFile with a URL that redirects?
我的服务器上有一个 PDF 文件,我想将其用作此功能的参数:
问题是用作源的 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 传递给此函数,它会将其识别为 String
和 try 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');
我的服务器上有一个 PDF 文件,我想将其用作此功能的参数:
问题是用作源的 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 传递给此函数,它会将其识别为 String
和 try 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');