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_status.of_panel(/*key*/ "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 (absolut, relativ zur Anwendung oder im Netzwerk; ein # gehört zum Namen), eine file:///-Adresse, eine Webadresse https://…, die als application/pdf ausgeliefert wird, oder eine data:application/pdf-Adresse. Das Setzen des Werts löst das Laden aus; "" (oder nur Leerzeichen) leert den Betrachter und behält seine Einstellungen. Alles andere wird abgelehnt und über ue_load_failed gemeldet — auch http:// und eine Adresse mit Benutzername und Kennwort (https://name:geheim@…). Ein PDF in einem Blob wird mit of_load_blob angezeigt. Wird so zurückgelesen, wie Sie es geschrieben haben |
ii_page | integer | 0 | Seite, auf der geöffnet wird, ab 1 gezählt (0 = die erste Seite des Dokuments). Während ein Dokument angezeigt wird gesetzt, ist es dessen Seite: Es wird neu geladen und auf ihr geöffnet. Bei leerem Betrachter gesetzt, gilt sie für das nächste Dokument; sonst öffnet sich ein neues Dokument auf seiner ersten Seite. Um ein Dokument auf einer Seite zu öffnen, setzen Sie is_source und dann ii_page: nur ein Ladevorgang. Jede Änderung lädt das Dokument neu und löst ue_load_completed erneut aus: Der Betrachter liest seine Seite nur beim Laden; derselbe Wert erneut gesetzt bewirkt nichts. 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, von 25 bis 500 — der Bereich der Schaltflächen des Betrachters (0 = dem Betrachter überlassen). Ein Wert außerhalb dieses Bereichs wird in ihn zurückgeführt und so zurückgelesen, wie er angewendet wurde. 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 |
ib_navigation_pane | boolean | false | Öffnet die Seitenleiste des Betrachters: die Seitenminiaturen und die Lesezeichen des Dokuments. Die Seitenleiste kommt mit der Leiste des Betrachters. Jede Änderung lädt das angezeigte Dokument neu |
is_destination | string | "" | Öffnet das Dokument an einem benannten Ziel des PDF — dem Ziel eines Lesezeichens, geschrieben von dem Werkzeug, das die Datei erzeugt hat. "" für keines; ein Name, den das Dokument nicht hat, öffnet es auf seiner ersten Seite. Bleibt für die folgenden Dokumente erhalten, bis Sie es ändern. Jede Änderung lädt das angezeigte Dokument neu |
is_find | string | "" | Ein Text des Dokuments, hervorgehoben dort, wo er zuerst vorkommt, und der Betrachter scrollt dorthin: die Zeile einer Rechnung, von der Ihre Anwendung spricht. "" für keinen; ein Text, den das Dokument nicht enthält, ändert nichts. Es ist keine per Code gesteuerte Suche (keine Anzahl, kein nächster Treffer): Der Benutzer sucht über die Leiste des Betrachters. Bleibt für die folgenden Dokumente erhalten, bis Sie ihn ändern. Jede Änderung lädt das angezeigte Dokument neu |
ib_allow_save | boolean | true | Bietet die Befehle Speichern und Speichern unter der Leiste des Betrachters und seines Menüs an. Bei false wird das Dokument angezeigt, ohne anzubieten, eine Kopie zu speichern. Jeder Betrachter behält seine eigene Einstellung: die eines anderen Fensters ändert hier nichts. Das ist kein Schutz: Die Datei bleibt auf der Festplatte lesbar. Jede Änderung lädt das angezeigte Dokument neu; vor is_source gesetzt, wird das Dokument nur einmal geladen |
ib_allow_print | boolean | true | Bietet den Befehl Drucken der Leiste des Betrachters und seines Menüs an. of_print druckt weiterhin: Ihre Anwendung entscheidet. Jeder Betrachter behält seine eigene Einstellung. Jede Änderung lädt das angezeigte Dokument neu; vor is_source gesetzt, wird das Dokument nur einmal geladen |
ib_allow_search | boolean | true | Bietet den Befehl Suchen der Leiste des Betrachters an. is_find hebt weiterhin einen Text hervor: Ihre Anwendung entscheidet. Jeder Betrachter behält seine eigene Einstellung. Jede Änderung lädt das angezeigte Dokument neu; vor is_source gesetzt, wird das Dokument nur einmal geladen |
ib_allow_rotate | boolean | true | Bietet den Befehl Drehen der Leiste des Betrachters an. Jeder Betrachter behält seine eigene Einstellung. Jede Änderung lädt das angezeigte Dokument neu; vor is_source gesetzt, wird das Dokument nur einmal geladen |
ib_allow_fullscreen | boolean | true | Bietet den Befehl Vollbild der Leiste des Betrachters an. Jeder Betrachter behält seine eigene Einstellung. Jede Änderung lädt das angezeigte Dokument neu; vor is_source gesetzt, wird das Dokument nur einmal geladen |
is_theme_style | string | "" | Visueller Stil der Komponente (Konstanten THEME_STYLE_*); leer = der der Anwendung, bei jeder Änderung übernommen |
is_theme_mode | string | "" | Helle oder dunkle Variante (Konstanten THEME_MODE_*); leer = die der Anwendung, bei jeder Änderung übernommen |
il_theme_accent | long | -1 | Akzentfarbe dieser Komponente (-1 = Akzent der Anwendung, sonst der des Designs) |
Methoden #
| Methode | Zweck |
|---|---|
of_refresh ( ) | Liest das aktuelle Dokument erneut (von der Festplatte oder aus dem Netzwerk), ohne die Einstellungen anzutasten: der Weg, eine am selben Pfad neu erzeugte Datei anzuzeigen. Die Scrollposition bleibt nicht erhalten: Der Betrachter beginnt wieder bei ii_page. Nach einem Fehlschlag wird dasselbe Dokument erneut versucht. Ein abgelehntes Dokument wird erneut beurteilt: ue_load_failed wird erneut ausgelöst. Gibt 0 zurück, sobald angefordert, -4 ohne Dokument (is_source leer), -2, wenn die Komponente nicht erstellt ist |
of_load_blob (blob ablb_pdf) · of_load_blob (blob ablb_pdf, string as_name) | Zeigt ein PDF aus einem Blob an — aus der Datenbank gelesen (SELECTBLOB) oder von einem Dienst empfangen —, ohne eine Datei zu schreiben, gleich welcher Größe: Die Bytes bleiben im Speicher und werden nur diesem Betrachter geliefert. Das zweite Argument ist der Name, den is_source und ue_load_completed / ue_load_failed zurückgeben (document.pdf ohne es). Der zuvor angezeigte Blob wird freigegeben, dieser durch das nächste Dokument oder of_reset. Gibt 0 zurück, sobald angefordert (ue_load_completed folgt), -5, wenn der Blob leer oder kein PDF ist, -4, wenn er für diesen Prozess zu groß ist (64 MB in 32 Bit, 512 MB in 64 Bit) — of_get_last_error sagt warum —, -2, wenn die Komponente nicht erstellt ist |
of_print ( ) · of_print (boolean) | Öffnet die Druckvorschau des Dokuments — nicht der Seite, die es umrahmt. Liefert 0, sobald die Vorschau angefordert ist, -4, wenn kein Dokument angezeigt wird, -2, wenn die Komponente nicht erstellt ist. Das Argument hat hier keine Wirkung: Es ist immer die Vorschau des PDF-Betrachters |
of_print_to_pdf (string) · of_print_to_pdf (string, boolean) | Gibt bei dieser Komponente -4 zurück, ohne etwas zu schreiben: Die gedruckte Seite wäre nur der Rahmen des Betrachters, nie das Dokument. Das Dokument ist bereits ein PDF: Kopieren Sie die Datei von is_source |
of_reset ( ) | Leert den Betrachter und setzt alle Eigenschaften auf ihren Standard zurück. Liefert 0 nach der Anwendung, -2 wenn die Komponente nicht erzeugt ist |
of_set_redraw (boolean) | Fasst eine Folge von Änderungen zu einer einzigen Darstellung zusammen. Liefert 0 nach der Anwendung, -2 wenn die Komponente nicht erzeugt ist |
of_save_as_png (string) · of_save_as_jpg (string) | Exportiert die Darstellung als Bild. Liefert 0 nach dem Schreiben des Bildes, -4 wenn das Schreiben fehlschlägt, -2 wenn die Komponente nicht erzeugt ist |
Events #
| Event | Ausgelöst wenn |
|---|---|
ue_load_completed (string as_source) | Das Dokument wird angezeigt; as_source ist is_source, so wie Sie es geschrieben haben (bei einem Blob der an of_load_blob übergebene Name). Wird auch durch of_refresh und jede Änderung von Seite, Zoom, Anpassung, Betrachterleiste, Seitenleiste, Ziel, hervorgehobenem Text, ib_allow_save oder ib_allow_print ausgelöst — setzen Sie sie vor is_source, damit nur einmal geladen wird; derselbe Wert erneut gesetzt löst es nicht aus. Nie bei einem Fehlschlag |
ue_load_failed (string as_source, string as_reason) | Das Dokument konnte nicht angezeigt werden; as_reason ist eine der unten stehenden Konstanten REASON_*. Der Betrachter bleibt leer |
ue_link_clicked (string as_url) | Der Benutzer ist einem Link im Dokument gefolgt. Der Betrachter bleibt beim Dokument: Öffnen Sie as_url, wo Sie möchten (Browser des Arbeitsplatzes, webbrowser…). as_url ist die Adresse des Links, wie sie ist (https://…, mailto:…); ein relativer Link eines lokalen Dokuments kommt als Festplattenpfad an. Einem Link auf eine lokale Datei des Arbeitsplatzes (file:///) in einem PDF wird nicht gefolgt: Der PDF-Betrachter von WebView2 blockiert ihn; es wird kein ue_link_clicked ausgelöst |
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) |
Warum ein Dokument nicht angezeigt wird #
as_reason von ue_load_failed ist eine dieser Konstanten von u_pbt_pdfviewer. Ein PDF wird so erkannt: Eine lokale Datei hat die Endung .pdf und beginnt mit der Signatur %PDF-; ein entferntes Dokument wird mit dem Typ application/pdf ausgeliefert (dem einzigen, den die Engine an ihren Betrachter übergibt); eine data:-Adresse kündigt application/pdf an.
| Konstante | Wert | Ursache |
|---|---|---|
REASON_NOT_FOUND | "notfound" | Datei fehlt oder ist nicht lesbar, Adresse antwortet mit 404 |
REASON_NOT_PDF | "notpdf" | Kein PDF: lokale Datei ohne die Signatur %PDF-, entfernte Antwort, die nicht application/pdf ist (ein Dateiserver, der application/octet-stream antwortet: Laden Sie das Dokument zuerst herunter, siehe die Beispiele), data: oder Blob eines anderen Typs |
REASON_TOO_LARGE | "toolarge" | Datei zu groß für diesen Prozess (über 64 MB in 32 Bit, 512 MB in 64 Bit), oder eine data:-Adresse mit mehr als 2 MB Zeichen (etwa 1,5 MB PDF) |
REASON_INSECURE | "insecure" | http://: nicht unterstützt, liefern Sie das Dokument über https:// aus |
REASON_UNSUPPORTED | "unsupported" | Eine andere Art von Adresse (ftp:, blob:…) oder eine Adresse mit Benutzername und Kennwort (https://name:geheim@…) |
REASON_NETWORK | "network" | Server nicht erreichbar, unbekannter Name, Verbindung unterbrochen |
REASON_CERTIFICATE | "certificate" | Zertifikat der Website ungültig, abgelaufen oder widerrufen |
REASON_AUTH | "auth" | Die Website oder der Proxy verlangt eine Authentifizierung: Laden Sie das Dokument mit dem restclient herunter (Token, Anmeldedaten) und zeigen Sie es dann an (siehe die Beispiele) |
REASON_HTTP | "http" | Ein anderer Serverfehler (403, 500…) |
REASON_REFUSED | "refused" | Die Website verweigert die Anzeige in einem Rahmen oder sendet das PDF als Download — die Datei wird deshalb nicht heruntergeladen |
REASON_FAILED | "failed" | Jede andere Ursache |
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 + / −, an Seite oder an Breite anpassen |
| Suche | Die Suchschaltfläche der Symbolleiste, im Text des Dokuments |
Druckerschaltfläche der Symbolleiste (mit ib_allow_print ausblendbar), oder of_print aus Ihrem Code | |
| Speichern | Download-Schaltfläche, um eine Kopie des Dokuments zu speichern (mit ib_allow_save ausblendbar) |
| Drehung | Drehen der Seiten über das Menü der Symbolleiste |
| Tastatur | Sobald die Komponente den Fokus hat (Tab oder of_focus_webview): Bild ab, die Pfeiltasten, Pos1 / Ende scrollen das Dokument, ohne vorherigen Klick |
Die Tastenkürzel des Browsers — Strg+F, Strg+P, Strg + Mausrad — sind in allen Komponenten abgeschaltet, auch in dieser: Verwenden Sie die Schaltflächen der Leiste des Betrachters.
Was der Betrachter nicht mitteilt #
Der Betrachter ist der in die Web-Engine integrierte: nichts zu installieren, Drucken, Suche, PDF-Formulare und Vollbild inbegriffen. Im Gegenzug teilt er Ihrer Anwendung nichts mit: weder die angezeigte Seite noch die Seitenzahl, weder den tatsächlichen Zoom noch den markierten Text, und die Suche lässt sich nicht per Code steuern (is_find hebt beim Öffnen einen Text hervor, mehr nicht). ii_page und ii_zoom sagen, wo das Dokument geöffnet wird, nicht wo sich der Benutzer befindet. Ein kennwortgeschütztes PDF: Der Betrachter fragt den Benutzer selbst nach dem Kennwort, Ihre Anwendung kann es ihm nicht übergeben. Das ist eine bewusste Entscheidung; eine skriptfähige Darstellung bräuchte eine externe Bibliothek.
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 #
// Local variables
string ls_file
// Eine Datei pro Tag, im temporaeren Ordner
ls_file = "C:\temp\report_" + String(Today(), "yyyymmdd") + ".pdf"
// Die DataWindow erzeugt die Datei...
dw_report.SaveAs(ls_file, PDF!, false)
// ...und der Betrachter zeigt sie sofort an
uo_pdf.is_source = ls_file
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 #
// rowfocuschanged-Event von dw_list : (long currentrow)
// Local variables
string ls_pdf
// Der Pfad des PDF der aktuellen Zeile
ls_pdf = dw_list.GetItemString(currentrow, "pdf_path")
// Ohne Anhang wird der Betrachter geleert (Einstellungen bleiben) ; sonst zeigt er ihn an
if ls_pdf = "" then
uo_pdf.is_source = ""
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_wait.Hide()
// of_print druckt das angezeigte Dokument
uo_print_button.ib_enabled = true
Sagen, warum das Dokument nicht da ist #
// ue_load_failed-Event von uo_pdf : (string as_source, string as_reason)
uo_wait.Hide()
choose case as_reason
case uo_pdf.REASON_NOT_FOUND
uo_status.of_panel(/*key*/ "main").is_text = "Dokument nicht gefunden: " + as_source
case uo_pdf.REASON_NOT_PDF
uo_status.of_panel(/*key*/ "main").is_text = "Diese Datei ist kein PDF"
case else
uo_status.of_panel(/*key*/ "main").is_text = "Dokument nicht verfuegbar (" + as_reason + ")"
end choose
Einen Link des Dokuments anderswo öffnen #
// ue_link_clicked-Event von uo_pdf : (string as_url)
// Der Betrachter bleibt beim Dokument : der Link oeffnet sich im Browser des Fensters
uo_web.is_address = as_url
Das Dokument drucken #
// clicked der Schaltflaeche Drucken : die Vorschau des PDF-Betrachters, auf dem Dokument selbst
if uo_pdf.of_print() = -4 then
uo_status.of_panel(/*key*/ "main").is_text = "Kein Dokument zu drucken"
end if
Anzeigen, ohne Speichern oder Drucken zu erlauben #
// Ein vertrauliches Dokument : weder Speichern noch Drucken in der Leiste des Betrachters
uo_pdf.ib_allow_save = false
uo_pdf.ib_allow_print = false
uo_pdf.is_source = is_current_document
Setzen Sie sie vor is_source: Das Dokument wird nur einmal geladen. Jeder Betrachter behält seine eigene Einstellung. Das ist kein Schutz: Die Datei bleibt auf der Festplatte lesbar, und of_print druckt weiterhin.
Vorschau in einer Registerkarte, neben der Eingabe #
// open-Event : der Betrachter belegt eine Registerkartenseite, die Eingabe die andere
uo_tab.of_add_page(/*key*/ "entry", /*title*/ "Eingabe", /*page*/ uo_page_entry)
uo_tab.of_add_page(/*key*/ "preview", /*title*/ "Vorschau", /*page*/ uo_page_preview)
// Der Betrachter wird wie jedes andere Steuerelement in uo_page_preview abgelegt
uo_pdf.is_source = is_current_document
Die Komponente lässt sich ohne besondere Vorkehrungen in einer tab oder in einem dockcontainer-Panel hosten.
Die Datei vor der Anzeige prüfen #
// Local variables
string ls_path
// Die Datei der angezeigten Rechnung
ls_path = "C:\factures\" + is_number + ".pdf"
// Keine Datei, nichts zu zeigen : den Betrachter leeren, statt das vorherige Dokument stehen zu lassen
if not FileExists(ls_path) then
uo_pdf.is_source = ""
uo_status.of_panel(/*key*/ "main").is_text = "Rechnung nicht gefunden"
return
end if
// Sonst wird die Rechnung angezeigt
uo_pdf.is_source = ls_path
Ein aus der Datenbank gelesenes PDF anzeigen (Blob) #
// Local variables
blob lblb_pdf
// Die in der Datenbank gespeicherte Rechnung, in einen Blob gelesen
SELECTBLOB pdf_file INTO :lblb_pdf FROM invoice WHERE invoice_no = :is_number USING SQLCA;
// Direkt aus dem Speicher angezeigt : keine temporaere Datei, gleich welcher Groesse
if SQLCA.SQLCode = 0 then
uo_pdf.of_load_blob(/*pdf*/ lblb_pdf, /*name*/ "invoice-" + is_number + ".pdf")
end if
Der übergebene Name kommt in is_source und in ue_load_completed zurück; der Blob wird durch das nächste Dokument oder durch of_reset freigegeben.
Eine bestimmte Zeile des Dokuments zeigen #
// Der Betrachter oeffnet sich auf der ersten Stelle dieses Textes, hervorgehoben
uo_pdf.is_find = "Delivery and assembly"
uo_pdf.is_source = "C:\factures\FA-2026-0142.pdf"
Auf einem Kapitel öffnen, Lesezeichen sichtbar #
// Die Seitenleiste mit ihren Lesezeichen, geoeffnet auf dem Kapitel "prices" des Katalogs
uo_pdf.ib_navigation_pane = true
uo_pdf.is_destination = "prices"
uo_pdf.is_source = "doc\catalogue-2026.pdf"
Der Name eines Ziels ist der, den das Werkzeug geschrieben hat, das das PDF erzeugt hat: Ihr Dokumentgenerator kennt ihn.
Ein Dokument hinter einem Token oder als octet-stream ausgeliefert #
// Local variables
long ll_status
string ls_file
// Der restclient (inv_rest, beim Oeffnen des Fensters vorbereitet) sendet das Token und laedt die Datei herunter
ls_file = "C:\temp\invoice-4152.pdf"
ll_status = inv_rest.of_download(/*url*/ "/orders/4152/invoice.pdf", /*path*/ ls_file)
// Dann zeigt der Betrachter die Datei an, gleich welchen Typ der Server angekuendigt hat
if ll_status = 200 then
uo_pdf.is_source = ls_file
end if
Der Betrachter der Engine kann weder ein Token senden noch eine application/octet-stream-Antwort anzeigen (REASON_AUTH, REASON_NOT_PDF): Der restclient übernimmt das für ihn.
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 |
Name mit # | "C:\devis\Devis #12.pdf" | Das # gehört zum Dateinamen |
file:-Adresse | "file:///C:/docs/contrat.pdf" | In einen Pfad umgewandelt, wie ein absoluter Pfad; auch file://localhost/C:/… und die UNC-Form mit vier Schrägstrichen file:////server/freigabe/… |
| Webadresse | "https://…/catalogue.pdf" | Als application/pdf ausgeliefert, asynchrones Laden. Ein in der Adresse geschriebenes #page=… wird ignoriert: Verwenden Sie ii_page. Eine Adresse mit Anmeldedaten (https://name:geheim@…) wird abgelehnt (REASON_UNSUPPORTED): Gehen Sie über den restclient |
| Dokument im Speicher | "data:application/pdf;base64,…" | Nichts wird auf die Festplatte geschrieben. Über 2 MB Zeichen (etwa 1,5 MB PDF) ue_load_failed mit REASON_TOO_LARGE: Für ein größeres Dokument im Speicher of_load_blob |
http://-Adresse | "http://intranet/bon.pdf" | Nicht unterstützt: ue_load_failed mit REASON_INSECURE. Liefern Sie das Dokument über https:// aus |
| Leer | "" | Leert den Betrachter und behält seine Einstellungen; ein Wert nur aus Leerzeichen ebenso |
Diese Komponente unterstützt ausschließlich PDF: Alles andere wird abgelehnt und über ue_load_failed (REASON_NOT_PDF) gemeldet. Für ein Bild verwenden Sie picture; für eine HTML-Seite webbrowser.
Best Practices #
- Beobachten Sie
ue_load_failed: Ein ungültiger Pfad, eine Datei, die kein PDF ist, oder eine nicht erreichbare Website wird dort mit ihrem Grund gemeldet, und der Betrachter bleibt leer. - Um den Betrachter zu leeren (Wechsel zu einer Zeile ohne Anhang), setzen Sie
is_source = "": sonst bleibt das vorherige Dokument sichtbar.of_reset()leert ihn ebenfalls, setzt aber zusätzlich alle Einstellungen auf ihren Standard zurück — Speichern und Drucken inbegriffen. of_refresh()ist der Weg, eine am selben Pfad neu erzeugte Datei anzuzeigen: Es liest die Datei erneut, ohne die Einstellungen anzutasten. Die Scrollposition bleibt nicht erhalten — der Betrachter beginnt wieder beiii_page.- Jede Änderung von
ii_zoom,is_fit,ib_viewer_toolbar,ib_navigation_pane,is_destination,is_find,ib_allow_saveoderib_allow_printlädt das Dokument neu (der Betrachter liest seine Einstellungen nur beim Laden) und löstue_load_completederneut aus: Setzen Sie sie voris_source, damit nur einmal geladen wird. Derselbe Wert erneut gesetzt lädt nichts neu.ii_page, gesetzt während ein Dokument angezeigt wird, gilt für dieses Dokument: Um ein anderes auf einer Seite zu öffnen, setzen Sieis_sourceund dannii_page. - Sehen Sie eine Wartanzeige für entfernte oder umfangreiche Dokumente vor und blenden Sie sie bei
ue_load_completedund beiue_load_failedaus. - 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.
Vom gemeinsamen Sockel geerbt #
Diese Mitglieder gibt es bei jeder visuellen Komponente — sie sind nicht dieser eigen. Sie werden einmal in den übergreifenden Kapiteln beschrieben; diese Tabelle sagt nur, wo man sie liest.
| Mitglieder | Rolle | Beschrieben in |
|---|---|---|
of_reset | Die Komponente zurücksetzen | 3.6 Eine Komponente zurücksetzen: of_reset() |
of_register_shortcut · of_clear_shortcuts | Tastenkürzel der Komponente | 3.5 Tastenkombinationen |
of_is_created · of_is_ready · of_get_last_error | Ob sie entstanden ist, ob sie bereit ist, was fehlschlug | 3.7 Diagnose |
of_save_as_png · of_save_as_jpg | Die Darstellung als Bild exportieren | 3.8 Die Darstellung als Bild exportieren |
of_set_redraw | Änderungen zu einem einzigen Neuzeichnen bündeln | 3.10 Best Practices |
of_preload_icons | Symbole ohne Verzögerung | Sofortige Anzeige: of_icon |
of_set_translation | Eine Beschriftung der Komponente übersetzen | 5.2 Eine Beschriftung anpassen: of_set_translation |
of_focus_webview | Der Komponente den Fokus geben | 6.4 Tastatur und Fokus |
of_print · of_print_to_pdf | Drucken oder ein PDF schreiben | 6.9 Drucken |
of_set_property · of_get_property · of_component_name | Eine Eigenschaft über ihren Namen steuern | 3.1 Die Eigenschaften-Engine |
is_accessible_name · is_accessible_description | Name und Beschreibung, die ein Bildschirmleser sagt | 3.4 Optionale Eigenschaften und Events |
Zwei Helfer werden nicht geerbt: of_icon und of_escape_markup liegen auf n_pbt_utils. Deklarieren Sie eines — n_pbt_utils lnv_utils, nichts zu erzeugen — und rufen Sie sie darauf auf.