pdfviewer — u_pbt_pdfviewer #
← Komponentenreferenz · Inhalt des Handbuchs
Integrierter PDF-Betrachter: zeigt ein lokales oder im Web veröffentlichtes Dokument direkt in Ihrem Fenster an, mit Seitennavigation, Zoom und Druckfunktion.
▶ Live ansehen — Demoanwendung, Kachel PDF viewer: die Vorschau, der zugehörige Code und diese Seite, nebeneinander.
Auf einen Blick #
| Userobject | u_pbt_pdfviewer |
| Item-Klasse | — (Komponente ohne Items) |
| Wofür | Eine Rechnung, eine Bestellung, einen Vertrag oder eine Anleitung anzeigen, ohne eine externe Anwendung zu starten |
| Opt-in-Optionen | — |
Die Komponente ersetzt das klassische „PDF in eine temporäre Datei speichern und dann ShellExecute aufrufen“: Das Dokument bleibt in Ihrer Anwendung, und der Benutzer verlässt nie den aktuellen Bildschirm.
Schnellstart #
// open-Event des Fensters : ein auf der Festplatte vorhandenes Dokument anzeigen
uo_pdf.is_source = "C:\factures\FA-2026-0142.pdf"
// ue_load_completed-Event von uo_pdf : (string as_source)
uo_statut.of_item("main").is_text = "Dokument angezeigt"
Das ist alles: is_source zu setzen genügt, um das Dokument zu laden und anzuzeigen.
Eigenschaften #
| Eigenschaft | Typ | Standard | Zweck |
|---|---|---|---|
is_source | string | "" | Anzuzeigendes Dokument: ein Dateipfad auf der Festplatte (absolut oder relativ zur Anwendung) oder eine Webadresse (https://…). Das Setzen des Werts löst das Laden aus; "" zu setzen leert den Betrachter |
ii_page | integer | 0 | Angezeigte Seite, ab 1 gezählt (0 = die erste Seite des Dokuments). Das Laden eines anderen Dokuments setzt sie zurück: die Seite des vorherigen zu behalten ließe den Leser mitten in einer gerade geöffneten Datei landen. Nur schreibend: Beim Auslesen erhalten Sie die zuletzt angeforderte Seite, nicht die angezeigte. Der Betrachter ist der der Web-Engine, und er meldet nichts zurück. |
ii_zoom | integer | 0 | Zoom in Prozent (0 = dem Betrachter überlassen). Ein gesetzter Zoom hebt is_fit auf, das ihm widerspricht. Nur schreibend, wie ii_page: Zoomt der Benutzer über die Leiste des Betrachters, folgt diese Eigenschaft nicht. |
is_fit | string | "" | Anpassung: FIT_PAGE, FIT_WIDTH, FIT_HEIGHT, oder "" für keine. Hebt ii_zoom auf |
ib_viewer_toolbar | boolean | true | Zeigt die eigene Leiste des Betrachters (Seitenzahl, Zoom, Drucken, Herunterladen). Blenden Sie sie aus, wenn Ihr Fenster diese Befehle selbst trägt |
is_theme_style | string | fluent | Visueller Stil der Komponente (Konstanten THEME_STYLE_*) |
is_theme_mode | string | light | Helle oder dunkle Variante (Konstanten THEME_MODE_*) |
il_theme_accent | long | -1 | Akzentfarbe dieser Komponente (-1 = Akzent des Designs) |
Methoden #
| Methode | Zweck |
|---|---|
of_refresh ( ) | Lädt das aktuelle Dokument neu — zum Beispiel nachdem die Datei auf der Festplatte neu erzeugt wurde |
of_reset ( ) | Leert den Betrachter und setzt alle Eigenschaften auf ihren Standard zurück |
of_set_redraw (boolean) | Fasst eine Folge von Änderungen zu einer einzigen Darstellung zusammen |
of_save_as_png (string) · of_save_as_jpg (string) | Exportiert die Darstellung als Bild |
Events #
| Event | Ausgelöst wenn |
|---|---|
ue_load_completed (string as_source) | Das Dokument wurde fertig geladen; as_source gibt an, was angezeigt wurde |
ue_ready ( ) | Die Komponente ist fertig geladen; alles zuvor Gesendete wurde nachgespielt |
ue_runtime_missing ( ) | Die WebView2-Runtime fehlt: die Komponente bleibt leer |
ue_bg_color (long al_color) | Die Komponente hat ihre Design-Hintergrundfarbe berechnet; das Userobject hat sie bereits übernommen (backcolor) |
Was der Benutzer ohne eine einzige Zeile Code tun kann #
Der Betrachter zeigt seine integrierte Symbolleiste über dem Dokument an. Sie müssen nichts programmieren: Sie wird vom System bereitgestellt und lokalisiert.
| Aktion | Wie |
|---|---|
| Seitennavigation | Mausrad und Bildlaufleiste, oder direkte Eingabe der Seitenzahl im Zähler n / gesamt |
| Zoom | Schaltflächen + / −, Strg + Mausrad, an Seite oder an Breite anpassen |
| Suche | Strg+F im Text des Dokuments |
Druckersymbol in der Symbolleiste, oder Strg+P | |
| Speichern | Schaltfläche zum Herunterladen, um eine Kopie des Dokuments zu sichern |
| Drehung | Drehen der Seiten über das Menü der Symbolleiste |
Beispiele #
Ein lokales Dokument öffnen #
// Absoluter Pfad, oder relativ zum Verzeichnis der Anwendung
uo_pdf.is_source = "doc\conditions-generales.pdf"
Ein im Web veröffentlichtes Dokument öffnen #
// Eine Webadresse wird genau wie eine lokale Datei geladen
uo_pdf.is_source = "https://www.monsite.fr/tarifs/catalogue-2026.pdf"
Eine Internetverbindung ist selbstverständlich erforderlich; das Laden erfolgt asynchron, ue_load_completed meldet Ihnen das Ende.
Das PDF anzeigen, das eine DataWindow gerade erzeugt hat #
string ls_fichier
ls_fichier = "C:\temp\etat_" + String(Today(), "yyyymmdd") + ".pdf"
// Die DataWindow erzeugt die Datei...
dw_etat.SaveAs(ls_fichier, PDF!, false)
// ...und der Betrachter zeigt sie sofort an
uo_pdf.is_source = ls_fichier
Nach der Neuerzeugung der Datei aktualisieren #
// Die Datei wurde am selben Ort neu geschrieben : neu laden, ohne is_source anzufassen
uo_pdf.of_refresh()
Mehrere Dokumente nacheinander im selben Betrachter anzeigen #
// ue_row_changed-Event von dw_liste : den Anhang der aktuellen Zeile anzeigen
string ls_pdf
ls_pdf = dw_liste.GetItemString(dw_liste.GetRow(), "chemin_pdf")
if ls_pdf = "" then
uo_pdf.of_reset() // kein Anhang : leerer Betrachter
else
uo_pdf.is_source = ls_pdf
end if
Das Ende des Ladevorgangs verfolgen #
// ue_load_completed-Event von uo_pdf : (string as_source)
uo_attente.Hide()
uo_imprimer.ib_enabled = true
Vorschau in einer Registerkarte, neben der Eingabe #
// open-Event : der Betrachter belegt eine Registerkartenseite, die Eingabe die andere
uo_tab.of_add_page("saisie", "Eingabe", uo_page_saisie)
uo_tab.of_add_page("apercu", "Vorschau", uo_page_apercu)
// Der Betrachter wird wie jedes andere Steuerelement in uo_page_apercu abgelegt
uo_pdf.is_source = is_document_courant
Die Komponente lässt sich ohne besondere Vorkehrungen in einer tab oder in einem dockcontainer-Panel hosten.
Die Datei vor der Anzeige prüfen #
string ls_chemin
ls_chemin = "C:\factures\" + is_numero + ".pdf"
if not FileExists(ls_chemin) then
// Nichts zu zeigen : den Betrachter leeren, statt das vorherige Dokument stehen zu lassen
uo_pdf.of_reset()
uo_statut.of_item("main").is_text = "Rechnung nicht gefunden"
return
end if
uo_pdf.is_source = ls_chemin
Akzeptierte Formate und Pfade #
Form von is_source | Beispiel | Hinweis |
|---|---|---|
| Absoluter Pfad | "C:\docs\contrat.pdf" | Am zuverlässigsten |
| Relativer Pfad | "doc\notice.pdf" | Relativ zum Verzeichnis der Anwendung |
| Netzwerkpfad | "\\serveur\partage\bon.pdf" | Der Benutzer muss Leserechte besitzen |
| Webadresse | "https://…/catalogue.pdf" | Asynchrones Laden, Verbindung erforderlich |
| Leer | "" | Leert den Betrachter |
Diese Komponente unterstützt ausschließlich PDF: für ein Bild verwenden Sie picture; für eine HTML-Seite webbrowser.
Best Practices #
- Prüfen Sie, ob die Datei existiert, bevor Sie
is_sourcezuweisen: Ein ungültiger Pfad lässt den Betrachter einfach leer, ohne blockierenden Fehler. - Rufen Sie
of_reset()auf, wenn kein Dokument mehr angezeigt werden soll (Wechsel zu einer Zeile ohne Anhang): sonst bleibt das vorherige Dokument sichtbar. - Bevorzugen Sie
of_refresh()gegenüber einer erneuten Zuweisung vonis_source, um dasselbe Dokument neu zu laden: Das ist schneller, und die Leseposition wird sauber wiederhergestellt. - Sehen Sie eine Wartanzeige für entfernte oder umfangreiche Dokumente vor und blenden Sie sie bei
ue_load_completedaus. - Geben Sie der Komponente eine großzügige Fläche (mindestens die Hälfte des Fensters): Die integrierte Symbolleiste und das Dokument brauchen Platz, um lesbar zu bleiben.
- Um eine Webseite statt eines PDF anzuzeigen, verwenden Sie webbrowser; für ein Bild picture.