{"id":21330493,"url":"https://github.com/friendsofredaxo/pdfout","last_synced_at":"2025-04-09T11:13:15.296Z","repository":{"id":9413563,"uuid":"61801209","full_name":"FriendsOfREDAXO/pdfout","owner":"FriendsOfREDAXO","description":" PDF-Generator dompdf und pdf.js für REDAXO","archived":false,"fork":false,"pushed_at":"2025-03-08T21:47:03.000Z","size":31149,"stargazers_count":48,"open_issues_count":1,"forks_count":19,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-02T09:08:55.986Z","etag":null,"topics":["dompdf","hacktoberfest","pdf","redaxo","redaxo-addon"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FriendsOfREDAXO.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-06-23T11:50:03.000Z","updated_at":"2025-03-08T21:47:06.000Z","dependencies_parsed_at":"2024-05-01T17:04:46.122Z","dependency_job_id":"6637ccf5-883d-48f2-b694-9a71dd5a5612","html_url":"https://github.com/FriendsOfREDAXO/pdfout","commit_stats":null,"previous_names":[],"tags_count":56,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FriendsOfREDAXO%2Fpdfout","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FriendsOfREDAXO%2Fpdfout/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FriendsOfREDAXO%2Fpdfout/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FriendsOfREDAXO%2Fpdfout/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FriendsOfREDAXO","download_url":"https://codeload.github.com/FriendsOfREDAXO/pdfout/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248027411,"owners_count":21035594,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dompdf","hacktoberfest","pdf","redaxo","redaxo-addon"],"created_at":"2024-11-21T22:19:35.101Z","updated_at":"2025-04-09T11:13:15.263Z","avatar_url":"https://github.com/FriendsOfREDAXO.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PdfOut für REDAXO!\n\nPdfOut stellt den \"HTML to PDF\"-Converter [dompdf](https://github.com/dompdf/dompdf) und [pdf.js](https://github.com/mozilla/pdf.js) in REDAXO zur Verfügung.\n\n## Installation\n\nDie Installation erfolgt über den REDAXO-Installer, alternativ gibt es die aktuellste Beta-Version auf [GitHub](https://github.com/FriendsOfREDAXO/pdfout).\n\n## Was kann PdfOut?\n\n- 🌈 Wandelt HTML in PDFs um\n- 🎨 Passt Ausrichtung, Schriftart und mehr nach Herzenslust an\n- 🖼 Integriert Bilder direkt aus dem REDAXO Media Manager\n- 💾 Speichert PDFs ab oder streamt sie direkt an den Browser\n- 🔢 Fügt sogar automatisch die Gesamt-Seitenzahlen ein\n- 🔍 Mit dem integrieren Viewer kann man sich alles ansehen\n\n## Lass uns loslegen!\n\n### Quick Start: Das erste PDF in 3... 2... 1...\n\n```php\nuse FriendsOfRedaxo\\PdfOut\\PdfOut; \n$pdf = new PdfOut();\n$pdf-\u003esetName('mein_erstes_pdf')\n    -\u003esetHtml('\u003ch1\u003eHallo REDAXO-Welt!\u003c/h1\u003e\u003cp\u003eMein erstes PDF mit PdfOut. Wie cool ist das denn?\u003c/p\u003e')\n    -\u003erun();\n```\n\n### Artikel-Inhalte als PDF\n\n```php\nuse FriendsOfRedaxo\\PdfOut\\PdfOut;\n$pdf = new PdfOut();\n$pdf-\u003esetName('artikel_als_pdf')\n    -\u003eaddArticle(1)  // Hier die ID eures Artikels einsetzen\n    -\u003erun();\n```\n\n### Erweiterte Konfiguration eines PDFs\n\n```php\nuse FriendsOfRedaxo\\PdfOut\\PdfOut;\n$pdf = new PdfOut();\n\n$pdf-\u003esetName('konfiguriertes_pdf')\n    -\u003esetPaperSize('A4', 'portrait')      // Setzt Papiergröße und Ausrichtung\n    -\u003esetFont('Helvetica')                // Setzt die Standardschriftart\n    -\u003esetDpi(300)                         // Setzt die DPI für bessere Qualität\n    -\u003esetAttachment(true)                 // Als Download statt Vorschau\n    -\u003esetRemoteFiles(true)                // Erlaubt externe Ressourcen\n    -\u003esetHtml($content, true)             // HTML mit Output Filter\n    -\u003erun();\n```\n\n### Schicke Vorlagen für PDFs\n\n```php\n$meineVorlage = '\n\u003c!DOCTYPE html\u003e\n\u003chtml\u003e\n\u003chead\u003e\n    \u003cstyle\u003e\n        body { font-family: Arial, sans-serif;}\n        .kopf { background-color: #ff9900; padding: 10px; }\n        .inhalt { margin: 20px; }\n        .footer { position: fixed; bottom: 0; width: 100%; text-align: center; }\n        .pagenum:before {\n\t\tcontent: counter(page);\n        }\n\u003c/style\u003e\n\n\u003c/style\u003e\n\u003c/head\u003e\n\u003cbody\u003e\n    \u003cdiv class=\"kopf\"\u003eMein supercooler PDF-Kopf\u003c/div\u003e\n    \u003cdiv class=\"inhalt\"\u003e{{CONTENT}}\u003c/div\u003e\n    \u003cdiv class=\"footer\"\u003eSeite \u003cspan class=\"pagenum\"\u003e\u003c/span\u003e von: DOMPDF_PAGE_COUNT_PLACEHOLDER\u003c/div\u003e\n\u003c/body\u003e\n\u003c/html\u003e';\n\nuse FriendsOfRedaxo\\PdfOut\\PdfOut;\n$pdf = new PdfOut();\n$pdf-\u003esetName('stylishes_pdf')\n    -\u003esetBaseTemplate($meineVorlage)\n    -\u003esetHtml('\u003ch1\u003eWow!\u003c/h1\u003e\u003cp\u003eDieses PDF sieht ja mal richtig schick aus!\u003c/p\u003e')\n    -\u003erun();\n```\n\n### PDFs speichern und verschicken\n\nPDF speichern und gleichzeitig an den Browser senden? So geht's:\n\n```php\nuse FriendsOfRedaxo\\PdfOut\\PdfOut;\n$pdf = new PdfOut();\n$pdf-\u003esetName('mein_meisterwerk')\n    -\u003esetHtml('\u003ch1\u003ePDF-Kunst\u003c/h1\u003e')\n    -\u003esetSaveToPath(rex_path::addonCache('pdfout'))\n    -\u003esetSaveAndSend(true)  // Speichert und sendet in einem Rutsch\n    -\u003erun();\n```\n\n## Erweiterte Methoden\n\n### `setPaperSize(string|array $size = 'A4', string $orientation = 'portrait')`\nSetzt das Papierformat und die Ausrichtung für das PDF. Als `$size` kann entweder ein Standardformat wie 'A4', 'letter' oder ein Array mit [width, height] in Punkten übergeben werden.\n\n```php\n$pdf-\u003esetPaperSize('A4', 'landscape');  // Querformat A4\n$pdf-\u003esetPaperSize([841.89, 595.28], 'portrait');  // Benutzerdefinierte Größe\n```\n\n### `setBaseTemplate(string $template, string $placeholder = '{{CONTENT}}')`\nSetzt ein Grundtemplate für das PDF. Der Platzhalter wird durch den eigentlichen Inhalt ersetzt. Besonders nützlich für einheitliches Layout über mehrere PDFs.\n\n### `addArticle(int $articleId, ?int $ctype = null, bool $applyOutputFilter = true)`\nErmöglicht das Hinzufügen von REDAXO-Artikelinhalten:\n- `$articleId`: Die ID des Artikels\n- `$ctype`: Optional die ID des Content-Types\n- `$applyOutputFilter`: Ob der OUTPUT_FILTER angewendet werden soll\n\n### `mediaUrl(string $type, string $file)`\nGeneriert korrekte URLs für Media-Manager-Bilder im PDF:\n\n```php\n$imageUrl = PdfOut::mediaUrl('media_type', 'bild.jpg');\n$html = '\u003cimg src=\"' . $imageUrl . '\" alt=\"Mein Bild\"\u003e';\n```\n\n### `viewer(string $file = '')`\nErzeugt eine URL für den integrierten PDF-Viewer:\n\n```php\n// Als Download-Link\necho '\u003ca href=\"' . PdfOut::viewer('/media/dokument.pdf') . '\" download\u003ePDF anzeigen\u003c/a\u003e';\n\n// Als iFrame eingebettet\necho '\u003ciframe src=\"' . PdfOut::viewer('/media/dokument.pdf') . '\"\u003e\u003c/iframe\u003e';\n```\n\n## Tipps für die Optimierung\n\n### Performance-Optimierung\n- CSS inline im HTML definieren statt externe Dateien\n- Auf große CSS-Frameworks verzichten\n- Bilder in optimierter Größe verwenden\n- OPcache für bessere PHP-Performance aktivieren\n\n### Bilder und Media Manager\n- Relative Pfade vom Frontend-Ordner: `media/bild.jpg`\n- Media Manager URLs immer als absolute URLs\n- `setRemoteFiles(true)` für externe Ressourcen\n\n### CSS und Schriftarten\n- Numerische font-weight Angaben vermeiden\n- Google Fonts lokal einbinden\n- Bei Schriftproblemen: `isFontSubsettingEnabled` auf `false` setzen\n\n### Kopf- und Fußzeilen\n- Fixierte Divs direkt nach dem body-Tag platzieren\n- Seitenzahlen über CSS count oder Platzhalter\n\n## Systemvoraussetzungen\n\n- DOM-Erweiterung\n- MBString-Erweiterung\n- `php-font-lib`\n- `php-svg-lib`\n- `gd-lib` oder ImageMagick\n\nEmpfohlen:\n- OPcache für bessere Performance\n- GD oder IMagick/GMagick für Bildverarbeitung\n\n## Support \u0026 Credits\n\n### Wo finde ich Hilfe?\n\n- [REDAXO-Channel auf Slack](https://friendsofredaxo.slack.com/messages/redaxo/)\n- [GitHub Issues](https://github.com/FriendsOfREDAXO/pdfout/issues)\n- [REDAXO Forum](https://forum.redaxo.org/)\n\n### Team\n\n**Friends Of REDAXO**  \nhttp://www.redaxo.org  \nhttps://github.com/FriendsOfREDAXO\n\n**Projekt-Lead**  \n[Thomas Skerbis](https://github.com/skerbis)\n\n### Danke an\n\n- [dompdf](http://dompdf.github.io)\n- [FriendsOfREDAXO](https://github.com/FriendsOfREDAXO)\n- [First release: Oliver Kreischer](https://github.com/olien)\n\n### Lizenz\n\n[MIT-Lizenz](https://github.com/FriendsOfREDAXO/pdfout/blob/master/LICENSE.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffriendsofredaxo%2Fpdfout","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffriendsofredaxo%2Fpdfout","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffriendsofredaxo%2Fpdfout/lists"}