如何在yii2上显示PDF文件
How to display PDF file on yii2
我有一个审核 table 和 audit_report field.Field 类型是文本。我将 pdf 文件保存到文件夹并将名称保存到 database.I 试图在查看页面。但是带有图像标志的框只能得到。我可以显示 jpeg 和 png 文件 nicely.How 以在 yii2 框架的视图页面上显示 PDF。
您可以添加一个在新选项卡中打开文件的按钮,但将其 link 设为控制器中的一个操作,即 returns 文件而不是文件的直接路径:
在您看来:
<?= Html::a('PDF', [
'controller/pdf',
'id' => $model->id,
], [
'class' => 'btn btn-primary',
'target' => '_blank',
]); ?>
在您的控制器中:
public function actionPdf($id) {
$model = ModelClass::findOne($id);
// This will need to be the path relative to the root of your app.
$filePath = '/your/file/path';
// Might need to change '@app' for another alias
$completePath = Yii::getAlias('@app'.$filePath.'/'.$model->fileName);
return Yii::$app->response->sendFile($completePath, $model->fileName);
}
这行得通,
return Yii::$app->response->sendFile($completePath, $filename, ['inline'=>true]);
输入第三个参数作为值数组的函数'inline'=>true
以在浏览器中打开文件window。
请参阅此处的文档 sendFile()
尽管问题已得到解答,但如果您拥有文件 content/stream 而不是 文件路径,则需要解决一件事,例如您正在使用 Dropbox API,您从 API 接收到一个流,并希望显示该文件而不是强制浏览器下载。
对于这种情况,您可以在尝试在浏览器中显示 PDF 文件时使用 sendContentAsFile
,您还需要指定 mimeType
选项以及 "inline"=>true
,因为默认 mimeType
值设置为 application/octet-stream
用于下载文件并在浏览器中内联显示您需要将其更改为 application/pdf
.
return Yii::$app->response->sendContentAsFile(
$fileContent,
$filename,
['inline' => true, 'mimeType' => 'application/pdf']
);
我有一个审核 table 和 audit_report field.Field 类型是文本。我将 pdf 文件保存到文件夹并将名称保存到 database.I 试图在查看页面。但是带有图像标志的框只能得到。我可以显示 jpeg 和 png 文件 nicely.How 以在 yii2 框架的视图页面上显示 PDF。
您可以添加一个在新选项卡中打开文件的按钮,但将其 link 设为控制器中的一个操作,即 returns 文件而不是文件的直接路径:
在您看来:
<?= Html::a('PDF', [
'controller/pdf',
'id' => $model->id,
], [
'class' => 'btn btn-primary',
'target' => '_blank',
]); ?>
在您的控制器中:
public function actionPdf($id) {
$model = ModelClass::findOne($id);
// This will need to be the path relative to the root of your app.
$filePath = '/your/file/path';
// Might need to change '@app' for another alias
$completePath = Yii::getAlias('@app'.$filePath.'/'.$model->fileName);
return Yii::$app->response->sendFile($completePath, $model->fileName);
}
这行得通,
return Yii::$app->response->sendFile($completePath, $filename, ['inline'=>true]);
输入第三个参数作为值数组的函数'inline'=>true
以在浏览器中打开文件window。
请参阅此处的文档 sendFile()
尽管问题已得到解答,但如果您拥有文件 content/stream 而不是 文件路径,则需要解决一件事,例如您正在使用 Dropbox API,您从 API 接收到一个流,并希望显示该文件而不是强制浏览器下载。
对于这种情况,您可以在尝试在浏览器中显示 PDF 文件时使用 sendContentAsFile
,您还需要指定 mimeType
选项以及 "inline"=>true
,因为默认 mimeType
值设置为 application/octet-stream
用于下载文件并在浏览器中内联显示您需要将其更改为 application/pdf
.
return Yii::$app->response->sendContentAsFile(
$fileContent,
$filename,
['inline' => true, 'mimeType' => 'application/pdf']
);