Flask, der eine PDF-Datei als eigene Seite behandelt

8

Für meine persönliche Website möchte ich eine separate Seite nur für meinen Lebenslauf haben, der ein PDF ist. Ich habe mehrere Möglichkeiten ausprobiert, aber ich kann nicht herausfinden, wie man eine PDF-Datei mit einem Flaschendeckel löst.

Danke. Lassen Sie es mich wissen, wenn ich besser erklären muss, was ich zu tun versuche.

    
Stealthy Stan 16.08.2013, 20:12
quelle

4 Antworten

20

Ein Hinweis für alle, die zu dieser Frage gekommen sind, weil sie versuchen, PDF-Dateien aus einer Datenbank mit Flask bereitzustellen. Das Einbetten einer PDF, wenn die Datei in einer Datenbank gespeichert ist, ist nicht so einfach wie im statischen Ordner. Sie müssen die Funktion make_response verwenden und sie mit den entsprechenden Headern versehen, damit der Browser weiß, was Sie mit Ihren binären PDF-Daten tun sollen, anstatt sie einfach wie üblich aus der Ansichtsfunktion zurückzugeben. Hier ist ein Pseudocode zur Hilfe:

%Vor%

Sie können die Inhaltsdisposition von "Inline" in "Anhang" ändern, wenn Sie möchten, dass die Datei heruntergeladen und nicht im Browser angezeigt wird. Sie könnten diese Ansicht auch in eine Subdomain einfügen, z. docs.yourapp.com und nicht yourapp.com/docs. Der letzte Schritt besteht darin, dieses Dokument tatsächlich in den Browser einzubetten. Auf jeder Seite, die Sie möchten, verwenden Sie einfach die Strategie von rawrgulmuffin:

%Vor%

Du könntest sogar den src mit einer Jinja2-Vorlage dynamisieren. Lassen Sie uns dies in doc.html (beachten Sie die geschweiften Klammern):

%Vor%

In einer View-Funktion geben Sie einfach die gerenderte Vorlage mit der entsprechenden doc_id zurück:

%Vor%

Dies bettet ein Dokument ein, das der Benutzer von einer Datenbank mit einer einfachen GET-Anfrage angefordert hat. Hoffe das hilft jedem, der mit vielen PDFs in einer Datenbank arbeitet!

    
teechap 22.12.2013 18:04
quelle
4

Sie haben zwei Möglichkeiten. Sie können entweder eine Vorlage rendern, die eine statische PDF-Datei verwendet, oder eine Vorlage rendern, die eine PDF generiert. Ich würde persönlich mit der ersten Option gehen.

Diese Frage bezieht sich darauf, wie eine HTML-Seite geschrieben wird, die ein PDF. Sie können dies in Ihrer jinja2 Vorlage verwenden.

Hier ist ein schneller und schmutziger Weg, um es zu erledigen.

%Vor%

Sie können auch eine jinja2-Vorlage erstellen, die alle erforderlichen Header für die Rückgabe einer PDF-Datei festlegt und dann sagt:

%Vor%

mit einer View-Funktion namens static, die das PDF zurückgibt.

Sie können mehr über die zweite Option in diesem Flashen-Snippet lesen

    
AlexLordThorsen 16.08.2013 20:24
quelle
4

Sie können die Funktion flask send_file oder send_static_file in 5 Zeilen verwenden:

%Vor%

Dieser Snippet-Link ist hilfreich

Kann auch send_from_directory verwenden, wenn Sie eine Datei aus einem bestimmten Verzeichnis senden wollen:

%Vor%

lesen Sie mehr über send_from_directory

    
Mohsen 19.05.2015 11:19
quelle
0

Wenn Sie versuchen, Ihr typisches

zu tun %Vor%

Wenn der Benutzer auf den Link klickt und das PDF heruntergeladen wird, müssen Sie Ihre Dokumente in Ihrem statischen Ordner ablegen.

Dann enden Sie mit etwas wie:

%Vor%     
Mwspencer 21.03.2018 17:23
quelle

Tags und Links