2017-08-01 49 views
-1

場景:我目前正試圖將Laravel視圖轉換爲pdf格式,以便用戶可以擁有pdf版本的個人檔案頁面。Laravel,使用DomPDF查看PDF格式

信息:我使用Laravel收銀員,顯然與dompdf來創建發票。嘗試做

作曲家需要DOMPDF/DOMPDF

時,我發現了這一點。該錯誤信息是

laravel /收銀員v6.0.18需要DOMPDF/DOMPDF^0.6.1 - >可滿足 由DOMPDF/DOMPDF [V0.6.1,v0.6.2]但是你 要求或最小這些衝突 - 穩定性

同樣來自Laravel收銀員文件發現:https://laravel.com/docs/5.4/billing#generating-invoice-pdfs

所以我用DOMPDF V0.6我想象。

問題:我嘗試使用dompdf正常,因爲我認爲我已經從Laravel收銀員安裝。但我越來越多的錯誤在我的控制器試圖從DOMPDF使用任何功能時,如果我嘗試:

use Dompdf; 

// instantiate and use the dompdf class 
$dompdf = new Dompdf(); 
$dompdf->loadHtml('hello world'); 

// (Optional) Setup the paper size and orientation 
$dompdf->setPaper('A4', 'landscape'); 

// Render the HTML as PDF 
$dompdf->render(); 

// Output the generated PDF to Browser 
$dompdf->stream(); 

我得到一個錯誤,說DOMPDF類沒有定義。所以如果我嘗試使用Laravel出納功能,爲他們的「PDF轉換髮票」,例如:

$pdf = downloadInvoice::loadView('dashboard.index', ['user' => $user]); 
    return $pdf->download('profile.pdf'); 

然後我得到一個錯誤,說

級「應用程序\ HTTP \控制器\ downloadInvoice」找不到

我嘗試了很多谷歌搜索,但我真的迷失在這一點上,有人可以這樣善良指出一個失去了開發人員在正確的方向? :)謝謝你在advnaced的時間!

編輯:我想:

$pdf = PDF::loadView('dashboard.index', ['user' => $user]); return $pdf->download('profile.pdf');

,但得到

級 '應用程序\ HTTP \控制器\ PDF' 未找到

它看起來像DOMPDF甚至沒有被重新認識。有沒有我可以看看這個,看看這個東西是否正常工作?

+0

我沒有名爲'downloadInvoice.php'的文件。我有一個名爲index.blade.php的刀片文件,我試圖將其轉換爲pdf。該文件位於resources/views/dashboard /目錄中。感謝您對命令的更正! :)。抱歉不知道我提供的幫助。 – rapid3642

+0

使用'使用Dompdf \ Dompdf;' –

+0

替換類參考行任何人都要退出投票,請向我解釋爲什麼它會收到downvote,以便我可以更正我的問題。 – rapid3642

回答

0

級「應用程序\ HTTP \控制器\ downloadInvoice」未找到

看起來你downloadInvoice.php位於其他文件夾和/或使用不同的命名空間,所以只需錯過正確use(如果您使用PHPStorm,只需把光標旁邊downloadInvoice::和命中Ctrl + Enter

在某些情況下,你可能還需要做composer dumpautoload

+0

我做了作曲家dumpautoload。似乎沒有修復任何當前的錯誤消息。我正在使用phpstorm,所以我去了並按Ctrl +進入downloadInvoice,但它什麼也沒做,它仍然強調它說未定義的類,並且當點擊燈泡導入一個類時,它只會給我創建一個選項類並不導入任何東西。難道我做錯了什麼? – rapid3642

+0

我試着做這個,而不是從另一個stackoverflow帖子''$ pdf = pdf :: loadView('dashboard.index',['user'=> $ user]); return $ pdf-> download('profile.pdf');「就像一個普通的dompdf函數,但它似乎dompdf甚至沒有被識別,但看起來將被安裝任何建議,我可以做什麼來看待這個? – rapid3642

+0

我差不多有1oo%的人確定你缺少一些'use'或者想念'namespace' –

0

基於Quick start documentation,代碼應該是這樣的:

use Dompdf\Dompdf; <-- May this is the mistake 

// instantiate and use the dompdf class 
$dompdf = new Dompdf(); 
$dompdf->loadHtml('hello world'); 

// (Optional) Setup the paper size and orientation 
$dompdf->setPaper('A4', 'landscape'); 

// Render the HTML as PDF 
$dompdf->render(); 

// Output the generated PDF to Browser 
$dompdf->stream(); 

讓我知道如果這仍然不能爲你工作。

+0

按照指示我把'使用Dompdf \ Dompdf;'附近我的其他進口或在我的控制器中使用,然後替換公共函數索引()中的東西//實例化並使用dompdf類 $ dompdf = new Dompdf(); $ dompdf-> loadHtml('hello world') ; //(可選)設置紙張尺寸和方向 $ dompdf-> setPaper( 'A4', '風景'); //渲染HTML爲PDF $ dompdf->渲染(); //輸出生成的PDF到瀏覽器 $ dompdf-> stream(); 並且沒有找到類'Dompdf \ Dompdf'然後我嘗試使用Dompdf;相反,它說有多個定義存在,我認爲這很好 – rapid3642

+0

然後我得到Class'Do mpdf'找不到。太奇怪了。感謝你們的反饋,我想我們可以在這裏與大家討論這個問題的底部:) – rapid3642

+0

可能是一個命名空間問題,希望解決方案是在你給定的異常,但你需要檢查。我希望你一步一步檢查配置,並且希望你能夠獲得成功的結果。 –