Skip to content

Commit a5a689f

Browse files
committed
create example
1 parent 025d746 commit a5a689f

File tree

6 files changed

+219
-2
lines changed

6 files changed

+219
-2
lines changed

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ file_put_contents('main.pdf', $pdf);
2222
header("Content-type:application/pdf");
2323
echo $pdf;
2424
```
25+
### Try the sample
26+
```
27+
php -f samples/simple-report.php
28+
```
2529

2630
# Contribute
2731
Please run

composer.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
"php": "^7.4|^8.0",
1515
"symfony/process": "^5.3",
1616
"twig/twig": "^3.3",
17-
"psr/cache": "^3.0",
1817
"psr/log": "^2.0"
1918
},
2019
"require-dev": {

samples/basic.tex.twig

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
\documentclass[11pt]{article}
2+
3+
\usepackage[T1]{fontenc}
4+
\usepackage[utf8]{inputenc}
5+
\usepackage{graphicx}
6+
\usepackage{xcolor}
7+
\usepackage{ngerman}
8+
\usepackage[tx]{sfmath}
9+
\usepackage{calc}
10+
\usepackage{lastpage}
11+
\usepackage{xifthen}
12+
\usepackage{multicol}
13+
\renewcommand\familydefault{\sfdefault}
14+
\usepackage{tgheros}
15+
\usepackage{intcalc}
16+
\usepackage{amsmath,amssymb,amsthm,textcomp}
17+
%\usepackage{enumerate}
18+
\usepackage{enumitem}
19+
\usepackage{tikz}
20+
21+
\usepackage{geometry}
22+
\geometry{a4paper,
23+
left=25mm,right=25mm,%
24+
bindingoffset=0mm, top=20mm,bottom=20mm}
25+
26+
% pdf version to min 1.6
27+
\pdfminorversion=6
28+
29+
\newcommand{\footerstring}{}
30+
\linespread{1.3}
31+
32+
\newcommand{\linia}{\rule{\linewidth}{0.5pt}}
33+
34+
\newcommand{\mysection}[1]{
35+
\begin{center}
36+
{\large \textsc{#1}}
37+
\vspace*{-0.5cm}
38+
\\\linia\\
39+
\vspace*{-0.5cm}
40+
\end{center}
41+
}
42+
43+
% custom theorems if needed
44+
\newtheoremstyle{mytheor}
45+
{1ex}{1ex}{\normalfont}{0pt}{\scshape}{.}{1ex}
46+
{{\thmname{#1 }}{\thmnumber{#2}}{\thmnote{ (#3)}}}
47+
48+
\theoremstyle{mytheor}
49+
\newtheorem{defi}{Definition}
50+
51+
% my own titles
52+
\makeatletter
53+
\renewcommand{\maketitle}{
54+
\begin{center}
55+
\vspace*{-0.5cm}
56+
{\huge \textsc{\@title}}
57+
\linia
58+
\end{center}
59+
}
60+
\makeatother
61+
%%%
62+
63+
% custom footers and headers
64+
\usepackage{fancyhdr}
65+
\pagestyle{fancy}
66+
\lhead{}
67+
\chead{}
68+
\rhead{}
69+
\lfoot{\footerstring}
70+
\cfoot{}
71+
\rfoot{Seite~\thepage{}~von~\pageref{LastPage}}
72+
\renewcommand{\headrulewidth}{0pt}
73+
\renewcommand{\footrulewidth}{0pt}
74+
75+
%
76+
% all section titles centered and bolded
77+
\usepackage{sectsty}
78+
\allsectionsfont{\centering\bfseries\large}
79+
%
80+
% add section label
81+
\renewcommand\thesection{}
82+
%
83+
84+
%%%----------%%%----------%%%----------%%%----------%%%
85+
86+
\begin{document}
87+
88+
\title{(% block title %)(% endblock %)}
89+
\author{(% block author %)(% endblock %)}
90+
(% if logopath is defined %)
91+
\vspace*{-2.0cm}
92+
\begin{figure}[h]
93+
\centering
94+
\label{fig:logo}
95+
%\includegraphics[width=3cm]{(( logopath ))}
96+
\end{figure}
97+
(% endif %)
98+
99+
\maketitle
100+
(% block main %)(% endblock %)
101+
\end{document}

samples/simple-report.php

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
<?php
2+
3+
use PhpLatexRenderer\LatexRenderer;
4+
5+
define('ROOT', dirname(__FILE__, 2));
6+
7+
require ROOT . '/vendor/autoload.php';
8+
9+
$tex = new LatexRenderer(__DIR__, 'pdflatex', true);
10+
$monolog = new \Monolog\Logger('Tex-Samples', [new \Monolog\Handler\RotatingFileHandler(ROOT . '/runtime/log/sample.log')]);
11+
$tex->setLogger($monolog);
12+
$tex->setTmpDir(ROOT . '/runtime/');
13+
$pdf = $tex->renderPdf('simple-report', [
14+
'title' => 'My Custom Title',
15+
'author' => 'Me!',
16+
'content' => [
17+
[
18+
'headline' => 'This is a Test Headline',
19+
'items' => [
20+
[
21+
'label' => 'test',
22+
'value' => 'value',
23+
],
24+
[
25+
'label' => 'test',
26+
'value' => 'value',
27+
],
28+
],
29+
],
30+
[
31+
'headline' => 'test2',
32+
'items' => [
33+
[
34+
'label' => 'test',
35+
'value' => 'value',
36+
],
37+
],
38+
'resume' => true,
39+
],
40+
[
41+
'text' => 'Please sign only if all of the above data is correct',
42+
'signatures' => [
43+
[
44+
'label' => 'Signature 1',
45+
'name' => 'Person 1',
46+
],
47+
[
48+
'label' => 'Signature 2',
49+
'name' => 'Person 2',
50+
],
51+
[
52+
'label' => 'Signature 3',
53+
'name' => 'Person 3',
54+
],
55+
],
56+
],
57+
],
58+
]);
59+
echo $pdf !== null ? 'Success' .PHP_EOL : 'Failure' . PHP_EOL;

samples/simple-report.tex.twig

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
(% extends "basic.tex.twig" %)
2+
(% block title %)Mein Titel(% endblock %)
3+
(% block main %)
4+
(% for section in content %)
5+
(% if section.headline is defined %)
6+
\vspace*{-0.5cm}
7+
\mysection{(( section.headline ))}
8+
(% endif %)
9+
(% if section.text is defined %)
10+
\vspace{5mm}
11+
{\footnotesize
12+
(( section.text ))
13+
}
14+
\vspace{5mm}
15+
\newline
16+
(% endif %)
17+
(% if section.items is defined %)
18+
\begin{enumerate}[label=\Roman*(% if section.resume is defined and section.resume %),resume(% endif %)]
19+
\itemsep-2mm
20+
(% for item in section.items %)
21+
\item \textbf{(( item.label ))}\hfill (( item.value ))
22+
(% endfor %)
23+
\end{enumerate}
24+
(% endif %)%section.items end
25+
(% if section.signatures is defined %)
26+
\vspace{5mm}
27+
\hspace{15pt}
28+
(% for signature in section.signatures %)
29+
\parbox[b]{120pt}{% size of the first signature box
30+
\strut
31+
\textbf{(( signature.label))} \\[1.25cm]% This 2cm is the space for the signature under the names
32+
\hrule
33+
\vspace{0.25cm}
34+
(( signature.name ))
35+
}
36+
(% if not loop.last %)
37+
\hspace{30pt}
38+
(% endif %)
39+
(% endfor %)% end signature loop
40+
\newline
41+
\vspace{5mm}
42+
(% endif %)%end signatures
43+
(% endfor %)%end content
44+
(% endblock %)

src/LatexRenderer.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,16 +51,22 @@ public function __construct($templateDirs, string $latexExec = 'pdflatex', bool
5151
$this->logger = new NullLogger();
5252
}
5353

54-
public function setLogger(LoggerInterface $logger)
54+
public function setLogger(LoggerInterface $logger): void
5555
{
5656
$this->logger = $logger;
5757
}
5858

59+
/**
60+
* @param $templateDir
61+
*/
5962
public function setTemplateDir($templateDir): void
6063
{
6164
$this->twig->setLoader(new FilesystemLoader($templateDir));
6265
}
6366

67+
/**
68+
* @param string $tmpDir the directory path where the latex runtime files will be located
69+
*/
6470
public function setTmpDir(string $tmpDir): void
6571
{
6672
if (!str_ends_with($tmpDir, '/')) {
@@ -72,6 +78,10 @@ public function setTmpDir(string $tmpDir): void
7278
}
7379
}
7480

81+
/**
82+
* @param array $files
83+
* @return string|null returns pdf as string or null on failure
84+
*/
7585
public function renderPdf(string $templateName, array $variables, array $files = []): ?string
7686
{
7787
try {

0 commit comments

Comments
 (0)