php - pdf 的 BinaryContent 为空
问题描述
我正在使用 Sonata Media Bundle 让用户上传 PDF 文件。我想使用 Imagick 创建 pdf 文档的预览图像。我有一个$media
对象,其中包含有关我的 pdf 的信息。
当我这样做时die(dump($media))
,我看到一个包含以下行的媒体对象:
#providerReference: "3c4460aae99b0084d08252065bf3eea1817842d9.pdf"
...并通过以下方式打开该文件:
open -a Preview ./data/storage/faq/0001/01/3c4460aae99b0084d08252065bf3eea1817842d9.pdf
...在我的 Mac 上生成一个完全清晰的 PDF。
问题是我还在浏览器中看到以下行:
#binaryContent: null
...这意味着我无法将二进制内容转储到临时文件中,以便让 Imagick 对其进行操作。
如何获得可以移交给 Imagick 的文件路径?
解决方案
这大致是为了让我获得对文件的有用引用,并包含有效的二进制内容。
public function preUpdate(Document $document)
{
$media = $document->getMedia();
if ($media === null) {
return;
}
$mediaName = $media->getName();
if ($media->getContentType() !== 'application/pdf') {
return;
}
$context = $media->getContext();
$formats = $pool->getFormatNamesByContext($context);
if (null === $formats) {
return;
}
$provider = $this->getProvider($media->getProviderName());
$publicUrls = [];
$fullFilePath = $provider->getReferenceImage($media);
}
...
private function getPool()
{
return $this->container->get('sonata.media.pool');
}
...
private function getProvider($name)
{
return $this->container->get($name);
}
推荐阅读
- javascript - 如何通过js或jquery将选中的项目放入输入框?
- java - spring-security-oauth2-authorization-server:0.1.1 获取令牌错误 invalid_client
- python - Python TypeError:只能将列表(不是“映射”)连接到列表
- specifications - 谁主持 ATX 规范?快速谷歌搜索表明英特尔,但我找不到下载。谁在更新标准?
- julia - 你能让 Julia 的 readdir() 函数区分文件和目录吗?
- mysql - Mysql索引使用问题
- c# - 在 c#.net 中的转发器中具有 2 个表行和数据字段的标题模板
- django - 在 django rest 框架中定义 searchFilter URL
- python - 如何使用从 Binance API 收到的数据更新谷歌电子表格
- css - 关闭导航菜单时未应用 CSS 过渡持续时间