Commit 24c64fce authored by Tobias Zeumer's avatar Tobias Zeumer
Browse files

Add code

parent 4f328ecc
# Proof-of-Concept
Dies ist ein Beispiel, wie man mittels [TCPDF](https://github.com/tecnickcom/tcpdf) äußerst einfach ein DinA5-PDF erstellen kann, dass im Prinzip dem bisherigen Ausdruck bei der Anmeldung in der TUB entspricht. Bonus: Es gibt den Barcode und ein ausfüllbares Unterschriftenfeld.
Mit "Live-Daten" gefüllt werde könnte es mittels [lbs/php-ressources/php-lbs-queries](https://collaborating.tuhh.de/tub/dd/lbs/php-ressources/php-lbs-queries).
# Status
Möglicherweise können wir die Registrierungbögen 2018 vollständig loswerden und und die ganze Mühe für den Mü... Aktenschrank sparen.
\ No newline at end of file
<?php
//header('Content-Type: text/html; charset=ISO-8859-1');
$_POST['borrower_bar'] = '08300123456X';
pdf_mailmerge('templates/Template.pdf.html', 'anmeldung.pdf', $_POST);
//echo "<pre>";
//print_r($_POST);
?>
<!doctype html>
<html lang="en">
<head>
<title>Anmeldung zur Benutzung der Universitätsbibliothek der TUHH</title>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
</head>
<body>
<p><a href="tmp/anmeldung.pdf">Anmeldung als PDF</a></p>
<pre>
<?php
function pdf_mailmerge($document, $document_out, $_mailmerge_mappings=array()) {
/* --- Create PDF-Part --- */
// Include the main TCPDF library (search for installation path).
require_once('inc/pdf/tcpdf_include.php');
// create new PDF document
//$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, 'A5', true, 'UTF-8', false);
// set document information
$pdf->SetCreator('TUB Hamburg');
$pdf->SetAuthor('TUB Hamburg');
$pdf->SetTitle('Bestellung für aktive Fernleihe');
$pdf->SetKeywords('Fernleihe, TUB, WinIBW');
// set default header data
//$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 049', PDF_HEADER_STRING);
// set header and footer fonts
//$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
//$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
$pdf->SetPrintFooter(false);
$pdf->SetPrintHeader(false);
// set margins
$pdf->SetMargins(PDF_MARGIN_LEFT, 10, PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(0); //PDF_MARGIN_HEADER
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
// set auto page breaks
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
// set image scale factor
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
// ---------------------------------------------------------
// set font
$pdf->SetFont('freeserif', '', 11);
// add a page
$pdf->AddPage();
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
IMPORTANT:
If you are printing user-generated content, tcpdf tag can be unsafe.
You can disable this tag by setting to false the K_TCPDF_CALLS_IN_HTML
constant on TCPDF configuration file.
For security reasons, the parameters for the 'params' attribute of TCPDF
tag must be prepared as an array and encoded with the
serializeTCPDFtagParameters() method (see the example below).
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* START BON-Daten-zu-Seiten */
$html = file_get_contents($document);
foreach($_mailmerge_mappings as $Fieldname => $Replacement) {
$tpl_name = "###$Fieldname###";
// Barcodes einfügen
$params = '';
switch ($tpl_name) {
case '###borrower_bar###':
$params = $pdf->serializeTCPDFtagParameters(array($Replacement, 'C39', '', '', 60, 20, 0.4, array('position'=>'S', 'border'=>false, 'padding'=>2, 'fgcolor'=>array(0,0,0), 'bgcolor'=>array(255,255,255), 'text'=>true, 'font'=>'helvetica', 'fontsize'=>8, 'stretchtext'=>4), 'N'));
break;
case '###f9###':
$params = $pdf->serializeTCPDFtagParameters(array($Replacement, 'C39', '', '', 60, 12, 0.4, array('position'=>'S', 'border'=>false, 'padding'=>0, 'fgcolor'=>array(0,0,0), 'bgcolor'=>array(255,255,255), 'text'=>true, 'font'=>'helvetica', 'fontsize'=>8, 'stretchtext'=>4), 'N'));
break;
}
if ($params) {
$barcode = '<tcpdf method="write1DBarcode" params="'.$params.'" />';
$html = str_replace('bar'.$tpl_name, $barcode, $html);
}
if (!is_array($Replacement)) {
$html = str_replace($tpl_name, $Replacement, $html);
}
else {
foreach ($Replacement as $id => $replacement_multi) {
$tpl_name = "###$Fieldname$id###";
$html = str_replace($tpl_name, $replacement_multi, $html);
}
}
}
//file_put_contents($document_out.'.bon', $html);
/* END BON-Daten-zu-Seiten (das war die ganze Magie) */
// output the HTML content
$pdf->writeHTML($html, true, 0, true, 0);
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// set default form properties
// (https://tcpdf.org/examples/example_014/)
$pdf->setFormDefaultProp(array('lineWidth'=>1, 'borderStyle'=>'solid', 'fillColor'=>array(255, 255, 200), 'strokeColor'=>array(255, 128, 128)));
// Signature
$pdf->Cell(35, 5, 'Unterschrift:');
$pdf->TextField('signature', 50, 5);
$pdf->Ln(6);
// Button to validate and print
$pdf->Button('print', 30, 10, 'Print', 'Print()', array('lineWidth'=>2, 'borderStyle'=>'beveled', 'fillColor'=>array(128, 196, 255), 'strokeColor'=>array(64, 64, 64)));
// Form validation functions
$js = "
function CheckField(name,message) {
var f = getField(name);
if(f.value == '') {
app.alert(message);
f.setFocus();
return false;
}
return true;
}
function Print() {
if(!CheckField('signature','Signature is mandatory')) {return;}
print();
}";
// Add Javascript code
$pdf->IncludeJS($js);
// reset pointer to the last page
$pdf->lastPage();
// ---------------------------------------------------------
//Close and output PDF document
//$pdf->Output($document_out, 'I');
// OR save and print $pdf->Output(realpath(dirname(__FILE__)).'/tmp/'.$document_out, 'F');
//exec('lpr -o sides=two-sided-long-edge -o media=A5 -E -P Anmeldung tmp/anmeldung.pdf');
// oder evtl: http://stackoverflow.com/a/30441220 ?
//============================================================+
// END OF FILE
//============================================================+
}
function download() {
header('Content-Description: File Transfer');
//header('Content-Type: image/png');
header('Content-Disposition: attachment; filename="'.$filename.'"');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($htmlFilename));
readfile($htmlFilename);
}
?>
</body>
</html>
\ No newline at end of file
<?php
//============================================================+
// File name : tcpdf_include.php
// Begin : 2008-05-14
// Last Update : 2014-12-10
//
// Description : Search and include the TCPDF library.
//
// Author: Nicola Asuni
//
// (c) Copyright:
// Nicola Asuni
// Tecnick.com LTD
// www.tecnick.com
// info@tecnick.com
//============================================================+
/**
* Search and include the TCPDF library.
* @package com.tecnick.tcpdf
* @abstract TCPDF - Include the main class.
* @author Nicola Asuni
* @since 2013-05-14
*/
// always load alternative config file for examples
require_once('TCPDF/config/tcpdf_config_alt.php');
// Include the main TCPDF library (search the library on the following directories).
$tcpdf_include_dirs = array(
realpath('TCPDF/tcpdf.php'),
'/usr/share/php/tcpdf/tcpdf.php',
'/usr/share/tcpdf/tcpdf.php',
'/usr/share/php-tcpdf/tcpdf.php',
'/var/www/tcpdf/tcpdf.php',
'/var/www/html/tcpdf/tcpdf.php',
'/usr/local/apache2/htdocs/tcpdf/tcpdf.php',
dirname(__FILE__).'/TCPDF/tcpdf.php'
);
foreach ($tcpdf_include_dirs as $tcpdf_include_path) {
if (@file_exists($tcpdf_include_path)) {
require_once($tcpdf_include_path);
break;
}
}
//============================================================+
// END OF FILE
//============================================================+
<style>
table {width: 100%;}
.tbl {border-spacing: 10px; border-collapse: separate;}
td {min-width: 46%; max-width: 46%;}
th {font-weight: bold;}
.highlight {font-weight: bold; margin: 0 0 5px 0; padding: 3px;}
</style>
<!-- <tcpdf method="write1DBarcode" params="< ?php echo $params ? >" /> -->
<h1>Anmeldung zur Benutzung der Universitätsbibliothek der TUHH</h1>
<h2>Name und so</h2>
<table class="tbl">
<tr>
<td>Name: </td><td>###gender### ###person_titles### ###first_name### ###last_name###</td>
</tr><tr>
<td>Geburtsdatum: </td><td>###date_of_birth###</td>
</tr><tr>
<td>Nutzertyp: </td><td>###borrower_type###</td>
</tr><tr>
<td>Matrikel-Nr.: </td><td>###registration_number###</td>
</tr><tr>
<td>Barcode: </td><td>bar###borrower_bar###</td>
</tr>
</table>
<hr /><br />
<h2>Adresse</h2>
<table class="tbl">
<tr>
<th></th><th>Kontaktadresse</th><th>Meldeanschrift</th>
</tr><tr>
<td>Straße: </td><td>###address_pob0###</td><td>###address_pob1###</td>
</tr><tr>
<td>Zimmer: </td><td>###room_number0###</td><td>###room_number1###</td>
</tr><tr>
<td>PLZ / Ort: </td><td>###postal_code0### ###town0###</td><td>###postal_code1### ###town1###</td>
</tr><tr>
<td>Telefon: </td><td>###telephone_number0###</td><td>###telephone_number1###</td>
</tr><tr>
<td>Mobil: </td><td>###secondary_telephone_number0###</td><td>###secondary_telephone_number1###</td>
</tr><tr>
<td>E-Mail: </td><td>###email###</td>
</tr>
</table>
<tcpdf method="AddPage" />
<h2>Datenschutz</h2>
<p>Die Speicherung der erhobenen Angaben im Ausleihverbuchungssystem der Bibliothek der HafenCity Universit&auml;t Hamburg erfolgt ausschlie&szlig;lich zum Zweck einer ordnungsgem&auml;&szlig;en Ausleihverbuchung. Speicherung und Verarbeitung erfolgen gem. §12, Abs.1 HmbDSG vom 05.07.1990 (HmbGVBl. S. 133) in Verbindung mit der Benutzungsordnung f&uuml;r die HCU. Eine Weitergabe der gespeicherten Daten erfolgt nur im Falle des R&uuml;ckgabeverzugs bei erfolgloser Mahnung sowie im Geb&uuml;hrenwesen an Amtshilfestellen. Die Daten der Anmeldung werden verschlüsselt übertragen.</p>
<h2>Erklärung</h2>
<p>Mit meiner Unterschrift erkl&auml;re ich mein Einverst&auml;ndnis mit der Speicherung und Verarbeitung meiner personenbezogenen Daten. Ich best&auml;tige die Richtigkeit meiner Angaben und verpflichte mich, Namens- bzw. Adressen&auml;nderungen unverz&uuml;glich der Bibliothek der HafenCity Universit&auml;t Hamburg mitzuteilen. Die Benutzungsordnung f&uuml;r die Bibliothek der HCU erkenne ich als verbindlich an. Mir ist bekannt, dass die Biblitohek ggf. Benachrichtigungen und Informationen an die von mir angegebene E-Mail-Adresse sendet.</p>
<p>Den Bibliotheksausweis habe ich erhalten.</p>
Hamburg, den ###datum#### _________________________________________
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment