-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexport_pdf.php
More file actions
64 lines (49 loc) · 1.67 KB
/
export_pdf.php
File metadata and controls
64 lines (49 loc) · 1.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?php
require_once 'includes/db.php';
// Beitrag-ID prüfen
if (!isset($_GET['id']) || !is_numeric($_GET['id'])) {
die('Ungültige Beitrags-ID.');
}
$beitrag_id = (int) $_GET['id'];
// Beitrag abrufen
$stmt = $pdo->prepare("
SELECT b.titel, b.inhalt, b.erstellt_am, k.name AS kategorie
FROM beitraege b
LEFT JOIN kategorien k ON b.kategorie_id = k.id
WHERE b.id = :id
");
$stmt->execute([':id' => $beitrag_id]);
$beitrag = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$beitrag) {
die('Beitrag nicht gefunden.');
}
// TCPDF einbinden
require_once('libs/tcpdf/tcpdf.php');
// Neues PDF-Dokument erstellen
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
// Dokumentinformationen
$pdf->SetCreator('Handbuch-System');
$pdf->SetAuthor('Handbuch');
$pdf->SetTitle($beitrag['titel']);
$pdf->SetSubject('Exportierter Beitrag');
$pdf->SetKeywords('PDF, Handbuch, Beitrag');
// Header und Footer deaktivieren
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
// Standard-Margins
$pdf->SetMargins(15, 15, 15);
// Automatischer Seitenumbruch
$pdf->SetAutoPageBreak(TRUE, 15);
// Zeichencodierung
$pdf->SetFont('dejavusans', '', 10, '', true);
// Seite hinzufügen
$pdf->AddPage();
// HTML-Inhalt aufbereiten
$html = '<h1>' . htmlspecialchars($beitrag['titel']) . '</h1>';
$html .= '<p><strong>Kategorie:</strong> ' . htmlspecialchars($beitrag['kategorie']) . '</p>';
$html .= '<hr>';
$html .= $beitrag['inhalt']; // Enthält HTML von TinyMCE
// HTML rendern
$pdf->writeHTML($html, true, false, true, false, '');
// PDF ausgeben (im Browser öffnen)
$pdf->Output('beitrag_' . $beitrag_id . '.pdf', 'I'); // 'I' = direkt im Browser anzeigen