PDF response a nekonečný kolotoč
- Danny
- Člen | 146
Zdravím,
stáhl jsem si addon PDFresponse odtud https://componette.org/search/?…,
nahrál do složky app/libs/PdfResponse/ postupoval podle kroků které jsou
zde
https://forum.nette.org/…0b-a-php-5-3:
Už jsem prolezl opravdu vše, ale nevím si už rady.
Ale seknu se hned na druhé chybě
Declaration of PdfResponse\PdfResponse::send() must be compatible with that of Nette\Application\IResponse::send()
Upravil jsem aby byly kompatibilní a takto vypadá funkce send v PDFResponse.php
public function send(Nette\Http\IRequest $httpRequest, Nette\Http\IResponse $httpResponse)
{
$mpdf = $this->build();
$mpdf->Output(Strings::webalize($this->documentTitle) . ".pdf", $this->saveMode);
}
a takto vypadá v IResponse.
interface IResponse
{
/**
* Sends response to output.
* @return void
*/
function send(Nette\Http\IRequest $httpRequest, Nette\Http\IResponse $httpResponse);
}
Sou stejné a nevím kde bych jí měl jinde upravit, neřešil někdo takový problém? Díky :)
- Danny
- Člen | 146
Tak jsem se dostal opět o kus dál a composer vyřešil tu chybu předtím, ale nejsem si jistý zda mám správně načtené mPDF a zda tato chyba kterou dostávám teď s tím souvisí
Call to undefined function PdfResponse\callback()
Jak PDFResponse tak mPDF je obojě uložené v app/libs/ předpokládám že je to správně a autoloader si obojí načte sám?
Díky za reakce.
- David Matějka
- Moderator | 6445
Kde ma byt to volani callback? v kodu to tam nikde nevidim.
Jak PDFResponse tak mPDF je obojě uložené v app/libs/ předpokládám že je to správně a autoloader si obojí načte sám?
mel bys preferovat instalaci pres composer
- Danny
- Člen | 146
Callback vyhazuje chybu zde
Fatal Error
Call to undefined function PdfResponse\callback()
File: .../www/bak/app/libs/PdfResponse/PDFResponse.php:258
248: $marginsOut[$dictionary[$key]] = $val;
249: }
250:
251: return $marginsOut;
252: }
253:
254: /**
255: * @param mixed renderable variable
256: */
257: public function __construct($source) {
258: $this->createMPDF = callback($this,"createMPDF");
259: $this->source = $source;
260: }
261:
262:
Composer mi to vše stáhl do vendor, nebyl jsem si jistý jak s tim zacházet aby se mi vše načetlo popravdě, jsem začátečník.
Editoval Danny (14. 4. 2016 13:49)
- iNviNho
- Člen | 352
Nie je to nič zložité :)
Cez composer sa ti to samé stiahne a už iba v Presenteri/Modeli kde len chceš používam napr.
$template = $this->templateFactory->createTemplate();
$template->setFile($this->dirService->getAppDir() . "/InvoiceModule/templates/pdf/invoice.latte");
// client
$template->client = $this->clientService->getClient();
// invoice
$template->invoice = $invoice;
$pdf = new \Joseki\Application\Responses\PdfResponse($template);
$pdf->documentTitle = "PDF faktúra";
$pdf->documentAuthor = "ARTEXE s.r.o.";
$pdf->save($this->dirService->getWwwDir() . "/pdf/")
Editoval iNviNho (14. 4. 2016 14:06)
- Danny
- Člen | 146
Tak jsme to postahoval asi vše v pohodě akorát mi to hned háže erorr s pamětí takže si nejsem schopnej otestovat jestli to vůbec běží.
Fatal Error
Allowed memory size of 134217728 bytes exhausted (tried to allocate 71 bytes) search►
Source file
File: .../nette/robot-loader/src/RobotLoader/RobotLoader.php:282
....
Mám něco špatné nebo budu muset být upravdu nucený změnit memory limit?
Editoval Danny (14. 4. 2016 14:50)
- Danny
- Člen | 146
Tak jsme to nechal jak to je, momentálně stav vše v složce vendor. Ale i přesto že sem to nechal defaultně vypadá to že nette nevidí mpdf, protože
Call to undefined method mPDF::OpenPrintDialog()
35:
36: $template = $this->templateFactory->createTemplate();
37: $template->setFile('APP_DIR' . "/templates/Protocol/toPdf.latte");
38: $pdf = new \Joseki\Application\Responses\PdfResponse($template);
39: $pdf->documentTitle = "Nadpis:";
40: $pdf->documentAuthor = "Company name";
41:
42: $pdf->mPDF->OpenPrintDialog();
43: $this->sendResponse($pdf);
44: }
45:
46: }
Editoval Danny (14. 4. 2016 15:50)