some progress in pdf styles
This commit is contained in:
parent
6e7c4af78d
commit
7e861c240d
|
@ -503,7 +503,7 @@ class AdminController extends AbstractController
|
||||||
#[Route('/api/admin/logs/last', name: 'api_admin_logs_last')]
|
#[Route('/api/admin/logs/last', name: 'api_admin_logs_last')]
|
||||||
public function api_admin_logs_last(Jdate $jdate, EntityManagerInterface $entityManager): JsonResponse
|
public function api_admin_logs_last(Jdate $jdate, EntityManagerInterface $entityManager): JsonResponse
|
||||||
{
|
{
|
||||||
$logs = $entityManager->getRepository(\App\Entity\Log::class)->findBy([], ['id' => 'DESC'], 250);
|
$logs = $entityManager->getRepository(\App\Entity\Log::class)->findBy([], ['id' => 'ASC'], 250);
|
||||||
$temps = [];
|
$temps = [];
|
||||||
foreach ($logs as $log) {
|
foreach ($logs as $log) {
|
||||||
$temp = [];
|
$temp = [];
|
||||||
|
|
|
@ -683,7 +683,8 @@ class PersonsController extends AbstractController
|
||||||
$this->renderView('pdf/person_card.html.twig', [
|
$this->renderView('pdf/person_card.html.twig', [
|
||||||
'page_title' => 'کارت حساب' . ' ' . $person->getNikename(),
|
'page_title' => 'کارت حساب' . ' ' . $person->getNikename(),
|
||||||
'bid' => $acc['bid'],
|
'bid' => $acc['bid'],
|
||||||
'items' => $transactions
|
'items' => $transactions,
|
||||||
|
'person' => $person
|
||||||
])
|
])
|
||||||
);
|
);
|
||||||
return $this->json(['id' => $pid]);
|
return $this->json(['id' => $pid]);
|
||||||
|
|
16
hesabixCore/src/Service/Twig.php
Normal file
16
hesabixCore/src/Service/Twig.php
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
<?php
|
||||||
|
// src/Service/Twig.php
|
||||||
|
namespace App\Service;
|
||||||
|
|
||||||
|
use Symfony\Component\HttpKernel\KernelInterface;
|
||||||
|
use Twig\Environment;
|
||||||
|
use Twig\Loader\FilesystemLoader;
|
||||||
|
|
||||||
|
class Twig extends Environment {
|
||||||
|
|
||||||
|
public function __construct(KernelInterface $kernel) {
|
||||||
|
$loader = new FilesystemLoader("templates", $kernel->getProjectDir());
|
||||||
|
|
||||||
|
parent::__construct($loader);
|
||||||
|
}
|
||||||
|
}
|
|
@ -3,21 +3,27 @@
|
||||||
namespace App\Service;
|
namespace App\Service;
|
||||||
|
|
||||||
use App\Entity\PrinterQueue;
|
use App\Entity\PrinterQueue;
|
||||||
use Dompdf\Dompdf;
|
use App\Service\Twig;
|
||||||
use Symfony\Component\HttpFoundation\Response;
|
|
||||||
use Twig\Environment;
|
use Twig\Environment;
|
||||||
class pdfMGR
|
class pdfMGR
|
||||||
{
|
{
|
||||||
|
|
||||||
private $twig;
|
private $twig;
|
||||||
|
|
||||||
public function __construct(Environment $twig)
|
public function __construct(Twig $twig)
|
||||||
{
|
{
|
||||||
$this->twig = $twig;
|
$this->twig = $twig;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function streamTwig2PDF(PrinterQueue $printQueue,$configs = []){
|
public function streamTwig2PDF(PrinterQueue $printQueue,$configs = []){
|
||||||
|
// Load Twig File
|
||||||
|
$template = $this->twig->load('pdf/footer.html.twig');
|
||||||
|
|
||||||
|
// Render HTML
|
||||||
|
$footer = $template->render([
|
||||||
|
|
||||||
|
]);
|
||||||
$defaultConfig = (new \Mpdf\Config\ConfigVariables())->getDefaults();
|
$defaultConfig = (new \Mpdf\Config\ConfigVariables())->getDefaults();
|
||||||
$fontDirs = $defaultConfig['fontDir'];
|
$fontDirs = $defaultConfig['fontDir'];
|
||||||
$mpdf = new \Mpdf\Mpdf([
|
$mpdf = new \Mpdf\Mpdf([
|
||||||
|
@ -37,9 +43,10 @@ class pdfMGR
|
||||||
'tempDir' => sys_get_temp_dir() . DIRECTORY_SEPARATOR . 'mpdf',
|
'tempDir' => sys_get_temp_dir() . DIRECTORY_SEPARATOR . 'mpdf',
|
||||||
'autoArabic' => true,
|
'autoArabic' => true,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$mpdf->AddFontDirectory(__DIR__ . '../Fonts');
|
$mpdf->AddFontDirectory(__DIR__ . '../Fonts');
|
||||||
|
$mpdf->SetHTMLFooter($footer);
|
||||||
$mpdf->WriteHTML($printQueue->getView());
|
$mpdf->WriteHTML($printQueue->getView());
|
||||||
|
$mpdf->SetAutoPageBreak(true);
|
||||||
$mpdf->Output();
|
$mpdf->Output();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,57 @@
|
||||||
<html dir="rtl">
|
<!DOCTYPE html>
|
||||||
|
<html lang="fa" direction="rtl"></html>
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
|
||||||
|
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
<style>
|
||||||
<title>چاپ</title>
|
|
||||||
|
|
||||||
|
.center {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.text-white {
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
.stimol td,
|
||||||
|
.stimol th {
|
||||||
|
border: 1px solid black;
|
||||||
|
}
|
||||||
|
.item {
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body style="direction:rtl; width:100%">
|
||||||
<h3 style="text-align: center; margin-top: 0px; padding-top: 0px;">{{bid.name}}</h3>
|
<div class="block-content pt-1 pb-3 d-none d-sm-block">
|
||||||
<p style="text-align: center;">{{ page_title }}</p>
|
<div class="c-print container-xl">
|
||||||
<div style="width: 100%">
|
<div class="tg-wrap" style="width:100%; border:1px solid black;border-radius: 8px;">
|
||||||
{% block body %}{% endblock %}
|
<table class="rounded" style="width:100%;">
|
||||||
</div>
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<td style="width:20%">
|
||||||
|
<img src="{{ "/api/avatar/get/file/" ~ bid.avatar}}" width="65"/>
|
||||||
|
</td>
|
||||||
|
<td style="width:60%; text-align:center">
|
||||||
|
<h3 class="">{{bid.name}}</h3>
|
||||||
|
<h5>{{ page_title }}</h5>
|
||||||
|
</td>
|
||||||
|
<td style="width:20%; text-align:center">
|
||||||
|
<p class="">
|
||||||
|
تاریخ:
|
||||||
|
{{ Jdate.GetTodayDate() }}
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
{% block body %}{% endblock %}
|
||||||
|
</div>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
|
</body></body></div></body></html>
|
||||||
|
|
||||||
|
|
34
hesabixCore/templates/pdf/footer.html.twig
Normal file
34
hesabixCore/templates/pdf/footer.html.twig
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="fa" direction="rtl">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
|
||||||
|
<head>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body style="direction:rtl; width:100%;margin-bottom:20px;">
|
||||||
|
<div class="block-content pt-1 pb-3 d-none d-sm-block">
|
||||||
|
<div class="c-print container-xl">
|
||||||
|
<div class="tg-wrap" style="width:100%; border:1px solid black;border-radius: 8px;">
|
||||||
|
<table class="rounded" style="width:100%;">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<td style="width:30%;text-align:center;">
|
||||||
|
حسابداری آنلاین حسابیکس
|
||||||
|
</td>
|
||||||
|
<td style="width:40%; text-align:center">
|
||||||
|
صفحه:
|
||||||
|
{PAGENO}
|
||||||
|
از
|
||||||
|
{nbpg}
|
||||||
|
</td>
|
||||||
|
<td style="width:30%;text-align:center;">
|
||||||
|
Hesabix.ir
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
|
@ -1,29 +1,103 @@
|
||||||
{% extends "pdf/base.html.twig" %}
|
{% extends "pdf/base.html.twig" %}
|
||||||
{% block body %}
|
{% block body %}
|
||||||
<table class="table mt-0 pt-0" style="border:2px solid black"><caption> </caption>
|
<div style="width:100%; border:1px solid black;border-radius: 8px;margin-top:5px;text-align:center;">
|
||||||
<tbody>
|
<div class="tg-wrap" style="width:100%;border-radius: 8px 8px 0px 0px;text-align:center;background-color:gray">
|
||||||
<tr style="text-align: center; background-color: grey; color: white">
|
<b style="color:white;">مشخصات طرف حساب</b>
|
||||||
<td style="width: 35px;">ردیف</td>
|
</div>
|
||||||
<td style="border:1px solid black">کد تراکنش</td>
|
<table style="width:100%;">
|
||||||
<td style="border:1px solid black">تاریخ</td>
|
<tbody>
|
||||||
<td style="border:1px solid black">توضیحات</td>
|
<tr style="text-align:center;">
|
||||||
<td style="border:1px solid black">تفضیل</td>
|
<td class="">
|
||||||
<td style="border:1px solid black">بدهکار</td>
|
<p>
|
||||||
<td style="border:1px solid black">بستانکار</td>
|
<b>نام:
|
||||||
<td style="border:1px solid black">سال مالی</td>
|
</b>
|
||||||
</tr>
|
{{ person.nikename }}
|
||||||
{% for item in items %}
|
</p>
|
||||||
<tr style="border:1px solid black" {% if loop.index is even%}class="bg-dark text-light"{% endif%}>
|
</td>
|
||||||
<td style="border:1px solid black">{{ loop.index }}</td>
|
<td class="center">
|
||||||
<td style="border:1px solid black">{{ item.id }}</td>
|
<p>
|
||||||
<td style="border:1px solid black">{{ item.doc.date }}</td>
|
<b>
|
||||||
<td style="border:1px solid black">{{ item.des }}</td>
|
شناسه ملی:
|
||||||
<td style="border:1px solid black">{{ item.ref.name }}</td>
|
</b>
|
||||||
<td style="border:1px solid black">{{ item.bd | number_format }}</td>
|
{{ person.shenasemeli }}
|
||||||
<td style="border:1px solid black">{{ item.bs | number_format }}</td>
|
</p>
|
||||||
<td style="border:1px solid black">{{ item.year.label }}</td>
|
</td>
|
||||||
</tr>
|
<td class="center">
|
||||||
{% endfor %}
|
<p>
|
||||||
</tbody>
|
<b>شماره ثبت:
|
||||||
|
</b>
|
||||||
|
{{ person.sabt }}
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
<td class="center">
|
||||||
|
<p>
|
||||||
|
<b>شماره اقتصادی:
|
||||||
|
</b>
|
||||||
|
{{ person.codeeghtesadi }}
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
<td class="center">
|
||||||
|
<p>
|
||||||
|
<b>تلفن / نمابر:</b>
|
||||||
|
{{ person.tel }}
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="" colspan="1">
|
||||||
|
<p>
|
||||||
|
<b>موبایل:</b>
|
||||||
|
{{ person.mobile }}
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
<td class="" colspan="1">
|
||||||
|
<p>
|
||||||
|
<b>کد پستی:</b>
|
||||||
|
{{ person.postalcode }}
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
<td class="" colspan="3">
|
||||||
|
<p>
|
||||||
|
<b>آدرس:
|
||||||
|
</b>
|
||||||
|
استان
|
||||||
|
{{ person.ostan }}، شهر
|
||||||
|
{{ person.shahr }}،
|
||||||
|
{{ person.address }}
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div style="width:100%;margin-top:5px;text-align:center;">
|
||||||
|
<table style="width:100%;">
|
||||||
|
<tbody>
|
||||||
|
<tr style="text-align: center; background-color: grey; text-color: white">
|
||||||
|
<td style="width: 35px;">ردیف</td>
|
||||||
|
<td class="center item">تاریخ</td>
|
||||||
|
<td class="center item">توضیحات</td>
|
||||||
|
<td class="center item">تفضیل</td>
|
||||||
|
<td class="center item">بدهکار</td>
|
||||||
|
<td class="center item">بستانکار</td>
|
||||||
|
<td class="center item">سال مالی</td>
|
||||||
|
</tr>
|
||||||
|
{% for item in items %}
|
||||||
|
|
||||||
|
<tr class="stimol">
|
||||||
|
<td class="center item">{{ loop.index }}</td>
|
||||||
|
<td class="center item">{{ item.doc.date }}</td>
|
||||||
|
<td class="center item">{{ item.des }}</td>
|
||||||
|
<td class="center item">{{ item.ref.name }}</td>
|
||||||
|
<td class="center item">{{ item.bd | number_format }}</td>
|
||||||
|
<td class="center item">{{ item.bs | number_format }}</td>
|
||||||
|
<td class="center item">{{ item.year.label }}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
Loading…
Reference in a new issue