我正在嘗試制作一個非常準系統的頁面,該頁面加載到兩個特定的 PDF 檔案中,并且在頁面加載時只會顯示一個,然后在 60 秒的游戲中時光倒流后,將回圈顯示另一個。
目前,我的問題只是將 PDF 放入 JS 中的變數中,以便我可以為它們分配時間周期。
如何獲取從控制器發送的 PDF 并將它們放入 JS 變數中以正確完成此操作?
public function getPDFDocs()
{
if(Storage::disk('test_docs')->exists('testFirstFile.pdf')){
$file1 = Storage::disk('test_docs')->get('testFirstFile.pdf');
}
if(Storage::disk('test_docs')->exists('testSecondFile.pdf')){
$file2 = Storage::disk('test_docs')->get('testSecondFile.pdf');
}
return view('test.index')
->with('firstFile', $file1)
->with('secondFile', $file2);
}
index.blade.php
@section('loadjs')
getPDFPages() {
let visible = [];
//visible.push ({pages here??})
}
@endsection
uj5u.com熱心網友回復:
首先,您似乎正在獲取檔案 PDF 的內容,而不是它們的路徑。因此,在初始 HTTP 回應中傳輸整個 PDF 資料可能效率不高。
此 PDF 檔案是否可公開訪問?如果是這樣的話; 回傳他們的 http url 而不是 pdfs 的資料。
在那之后; 將 Laravel 后端的資料注入刀片檔案中的 JavaScript;最好的方法是將您的資料轉換為 json,將其發送到 Blade 并將其寫入為 HTML 元素的 data- 屬性,然后在 JavaScript 中從 data- 屬性中讀取它并將 json 解碼為 JS 物件。
這是一個例子;
public function getPDFDocs()
{
if(Storage::disk('test_docs')->exists('testFirstFile.pdf')){
// assuming this files publicly accessible and use url method
$files[1] = Storage::disk('test_docs')->url('testFirstFile.pdf');
}
if(Storage::disk('test_docs')->exists('testSecondFile.pdf')){
// assuming this files publicly accessible and use url method
$files[2] = Storage::disk('test_docs')->url('testSecondFile.pdf');
}
return view('test.index', ['files' => $files]);
}
在你的刀刃上;
<!-- write down your html here -->
<span id="filesdata" data-files="{{ json_encode($files) }}" ></span>
@section('loadjs')
var filesJson = document.getElementById('filesdata').getAttribute('data-files');
var files = JSON.parse(filesJson);
// now you have your files, lets check them
console.log(files);
getPDFPages() {
let visible = [];
//visible.push ({pages here??})
}
@endsection
并使用 PDF URL 在客戶端中顯示它們。讓客戶端請求并獲取原始 pdf 資料,不要嘗試在初始回應中回傳它們。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/336380.html
標籤:javascript php 拉拉维尔
