PDF response a nekonečný kolotoč

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Danny
Člen | 146
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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
+
+1
-

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)

iNviNho
Člen | 352
+
+1
-

Inak verzia:

"joseki/pdf-response": "^2.2",

Editoval iNviNho (14. 4. 2016 14:08)

Danny
Člen | 146
+
0
-

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)

David Matějka
Moderator | 6445
+
+1
-

smaz mpdf z app slozky, nech to nainstalovany jen pres composer

Danny
Člen | 146
+
0
-

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)

David Matějka
Moderator | 6445
+
0
-

chyba rika, ze ta metoda OpenPrintDialog neexistuje.

Danny
Člen | 146
+
+1
-

Promiň jsem idiot, díky už jsem se dostal ke stavu kde si generuje alespoň ten „Hello world“, ostatní už bych měl být schopný dohledat na fóru. :)