问题描述
我的服务器上有一个 PDF 文件,我想将其用作此函数的参数:
问题是用作源的链接重定向到另一个 URL,而我不知道最终 URL。
似乎 setSourceFile
需要真正的 PDF 文件名。
有没有办法获取最终的URL,然后将其作为参数传递?
解决方法
我根据您在评论中给出的解释编辑了您的问题。这与重写无关,与 URL 重定向有关。
方案一:手动打开一个流
我查看了此特定函数的 source code,它期望接收文件名或流。您可以手动获取 PDF 链接,处理重定向并将最终 Stream 传递给此函数:
$stream = fopen('https://example.com/12/PDF','rb',false,stream_context_create());
$fpdi->setSourceFile($stream);
如果需要,您可以在 stream_context_create 函数中调整标题和其他参数,例如 cookie。远程服务器很可能在重定向到最终 URL 之前需要 cookie 或其他东西。
方案二:下载文件
如果您将链接传递给此函数,它会将其识别为 String
和 try to open it as a file。由于您声明传递不重定向的链接有效,您的服务器允许函数 fopen()
打开外部链接。如果是这种情况,您可以简单地使用普通文件功能将 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');