Start · Sprachen · PHP · Referenz · ps_begin_page

ps_begin_page

Funktion

Beginnt eine neue Seite in einem PostScript-Dokument mit den angegebenen Abmessungen.

seit PHP 4.3.2 Kategorie: misc

Signatur

ps_begin_page(resource $psdoc, float $width, float $height): bool

Beschreibung

ps_begin_page() leitet eine neue Seite in einem mit ps_new() erzeugten PostScript-Dokument ein. Jede Seite muss mit einem zugehörigen Aufruf von ps_end_page() abgeschlossen werden, bevor eine weitere Seite begonnen oder das Dokument gespeichert wird.

Die Parameter width und height geben die Seitenabmessungen in PostScript-Punkten (Einheit: pt, 1 pt = 1/72 Zoll) an. Für DIN-A4 gelten beispielsweise 595 × 842 Punkte, für Letter-Format 612 × 792 Punkte.

Die Funktion setzt außerdem den grafischen Zustand zurück, sodass Transformationen, Clipping-Pfade und ähnliche Zustandsänderungen der vorherigen Seite nicht in die neue Seite übertragen werden. Sie ist daher essenziell für den korrekten Seitenaufbau in mehrseitigen Dokumenten.

Diese Funktion gehört zur ps-Erweiterung (pslib), die separate Installation und Aktivierung in der PHP-Umgebung erfordert.

Parameter

Name Typ Default Beschreibung
$psdoc Pflicht resource Die Ressource des PostScript-Dokuments, wie sie von ps_new() zurückgegeben wird.
$width Pflicht float Breite der Seite in PostScript-Punkten (pt). DIN-A4 entspricht beispielsweise 595 pt.
$height Pflicht float Höhe der Seite in PostScript-Punkten (pt). DIN-A4 entspricht beispielsweise 842 pt.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, false im Fehlerfall (z. B. wenn das Dokument nicht geöffnet ist oder eine vorherige Seite nicht mit ps_end_page() beendet wurde).

Beispiele

Einfaches DIN-A4-Dokument mit einer Seite

<?php
// Neues PostScript-Dokument erzeugen
$ps = ps_new();

if (!ps_open_file($ps, '/tmp/beispiel.ps')) {
    die('Datei konnte nicht geöffnet werden.');
}

ps_set_info($ps, 'Creator', 'MeineApp');
ps_set_info($ps, 'Title', 'Beispieldokument');

// DIN-A4-Seite beginnen (595 x 842 Punkte)
ps_begin_page($ps, 595, 842);

// Text auf der Seite platzieren
ps_set_font($ps, 'Helvetica', 0, 0);
$font = ps_findfont($ps, 'Helvetica', '', 0);
ps_setfont($ps, $font, 14.0);
ps_show_xy($ps, 'Hallo, Welt!', 100, 700);

// Seite beenden
ps_end_page($ps);

// Dokument schließen
ps_close($ps);
ps_delete($ps);

echo 'PostScript-Datei wurde erfolgreich erstellt.';
?>
PostScript-Datei wurde erfolgreich erstellt.

Mehrseitiges Dokument

<?php
$ps = ps_new();
ps_open_file($ps, '/tmp/mehrseiten.ps');

ps_set_info($ps, 'Title', 'Mehrseitiges Dokument');

$seiten = ['Seite 1: Einleitung', 'Seite 2: Hauptteil', 'Seite 3: Fazit'];

$font = null;

foreach ($seiten as $inhalt) {
    // Neue Seite im Format Letter (612 x 792 pt)
    ps_begin_page($ps, 612, 792);

    if ($font === null) {
        $font = ps_findfont($ps, 'Times-Roman', '', 0);
    }
    ps_setfont($ps, $font, 16.0);
    ps_show_xy($ps, $inhalt, 72, 720);

    ps_end_page($ps);
}

ps_close($ps);
ps_delete($ps);

echo 'Mehrseitiges Dokument mit ' . count($seiten) . ' Seiten erstellt.';
?>
Mehrseitiges Dokument mit 3 Seiten erstellt.

// Wichtig · Fallstricke

Erweiterungsabhängigkeit: Die ps-Erweiterung basiert auf der externen C-Bibliothek pslib. Sie ist nicht standardmäßig in PHP enthalten und muss separat kompiliert und aktiviert werden (extension=ps in der php.ini).

Seitenreihenfolge: Es darf immer nur eine Seite gleichzeitig offen sein. Wird ps_begin_page() aufgerufen, ohne die vorherige Seite mit ps_end_page() beendet zu haben, kann das Dokument beschädigt werden oder die Funktion schlägt fehl.

Koordinatensystem: Das Koordinatensystem in PostScript-Dokumenten hat seinen Ursprung unten links auf der Seite. Der y-Wert wächst nach oben, was sich von üblichen Bildschirmkoordinaten unterscheidet.