Inline-PDF-Vorschauen

Das habe ich versucht, cors origins auf https://xxxxx.s3.us-east-2.amazonaws.com gesetzt
und DISCOURSE_ENABLE_CORS: true in /var/discourse/containers/app.yml gesetzt
aber es funktioniert nicht.

1 „Gefällt mir“

Und hast du ./launcher rebuild app ausgeführt, nachdem du Änderungen an app.yml vorgenommen hast? Möglicherweise musst du auch einen Hard Refresh im Browser durchführen.

2 „Gefällt mir“

Nebenbei bemerkt, könnten Sie den Abschnitt „Dateien“ der Admin-Einstellungen überprüfen, um zu sehen, ob Sie Einstellungen geändert haben, die diese Funktion beeinträchtigen. Ich glaube auch nicht, dass diese Funktion funktionieren kann, wenn Sie auf eine PDF-Datei verlinken, die auf einem anderen Server gehostet wird. Ich habe dies gerade auf meiner Website getestet und dieselbe remote gehostete PDF-Datei zeigte keine Vorschau.

Lassen Sie uns wissen, wenn Sie die Ursache des Problems finden!

Beispiel-Markdown eines Beitrags, bei dem remote nicht funktionierte, aber lokal hochgeladen funktionierte.

remote:

[test remote pdf](https://jsoncompare.org/LearningContainer/SampleFiles/PDF/sample-pdf-with-images.pdf)

uploaded locally:

[sample-pdf-with-images.pdf|attachment](upload://uOJLgHidEXnbqPRn2p6yP10ecQU.pdf) (3,8 MB)

So sieht es aus:

3 „Gefällt mir“

Ja. Aber es hat nicht funktioniert.

Wenn du S3 in Discourse aktivierst


Dann werden die Dateien per Definition auf einer anderen Domain gespeichert.
Ich denke, das klärt das Problem. Aber ich hoffe immer noch, dass das Plugin so angepasst werden kann, dass es Discourse-Installationen unterstützt, bei denen S3 aktiviert ist.

2 „Gefällt mir“

Ich bin mit dieser Konfiguration nicht so vertraut. Haben Sie diese Anweisungen befolgt?

1 „Gefällt mir“

Ja, ich habe S3 (und die zugehörige Einstellung „sichere Medien“) seit einigen Jahren problemlos am Laufen.
Nur die Inline-PDF-Komponente funktioniert mit dieser Einstellung nicht.

Zur Referenz, selbst wenn app.yml so eingestellt ist:

DISCOURSE_ENABLE_CORS: true
DISCOURSE_CORS_ORIGIN: ‘*’

hilft nicht.

2 „Gefällt mir“

Ich bin auf genau dasselbe Problem gestoßen und habe meine S3-Uploads rückgängig gemacht, nur um diesen TC zum Laufen zu bringen, da er für uns von hohem Wert ist:

Ich denke wirklich, da dies #offiziell ist und S3-Uploads gefördert werden, sollte dies untersucht werden, um zu sehen, ob es irgendwie mit S3 funktionieren kann. Es könnte sein, dass PDFs speziell von S3-Uploads ausgeschlossen sind, aber das wäre schlecht, da einige riesig sind!

6 „Gefällt mir“

Ich glaube nicht, dass jemand widersprechen würde.
Ich vermute, es geht um Bewusstsein und Prioritäten.
Zumindest was das „Bewusstsein“ angeht, könnte @Johani, der OP, vielleicht eine kleine Notiz im Thema dieser Diskussion hinzufügen, dass die Inline-PDF-Komponente nicht mit aktiviertem S3 funktioniert.
Es würde anderen Zeit für die Fehlerbehebung ersparen und das Bewusstsein für das Problem schärfen.

3 „Gefällt mir“

Es gibt ein paar Informationen zu S3 in diesen Beiträgen, die ich aus dem Auto-Timer gefischt habe, falls sie hilfreich sind?

7 „Gefällt mir“

Ein Beitrag wurde in ein bestehendes Thema zusammengeführt: Theme-Component Topics project

Ja, das funktioniert :smiley:
Zur Referenz, falls jemand anderes dies benötigt:

  1. Gehen Sie zur AWS-Konsole-Buckets https://s3.console.aws.amazon.com/s3/buckets und wählen Sie den Bucket aus, der für Ihre Discourse-Installation verwendet wurde

  2. Wählen Sie die Registerkarte Berechtigungen
    image

  3. Scrollen Sie nach unten zu “Cross-origin resource sharing (CORS)” und fügen Sie Folgendes ein:

[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "GET"
        ],
        "AllowedOrigins": [
            "https://my-site.com"
        ],
        "ExposeHeaders": []
    }
]

Sollte so aussehen:

11 „Gefällt mir“

Ich wünschte, ich hätte das gefunden, als ich noch bei S3-Uploads war!!

Muss es jetzt vielleicht noch einmal überarbeiten. @JammyDodger, ich frage mich, ob diese Dinge sowohl bei S3 als auch in dieser OP vermerkt werden sollten, damit andere nicht darüber stolpern.

5 „Gefällt mir“

Absolut. :+1: Ich habe nur auf eine Bestätigung gewartet, dass es funktioniert, bevor ich darüber nachgedacht habe, wie ich es am besten bearbeiten kann. :slightly_smiling_face:

7 „Gefällt mir“

Zwei Ideen, die dasselbe Problem angehen: Der Viewport von Discourse ist ziemlich schmal, sodass die meisten PDFs zu klein sind, um sie inline zu lesen. Um dies zu beheben, könnten wir

a) den PDF-iframe vergrößerbar machen? Ich habe dies bereits mit CSS versucht, aber ohne Erfolg – das zugrunde liegende Raster scheint im Weg zu sein
b) neben dem Download-Link einen zweiten Link „In neuem Tab öffnen“ anbieten? Ich bin sehr daran interessiert, nicht zu viele Dinge aus unserem Forum herunterzuladen.

5 „Gefällt mir“

[Zitat=“Ralf Stockmann, Beitrag:111, Thema:157649, Benutzername:Ralf_Stockmann”]
b) einen zweiten Link “In neuem Tab öffnen” neben dem Download-Link anbieten? Ich möchte möglichst wenig Zeug aus unserem Forum herunterladen.
[/Zitat]

Das wäre eine deutliche Verbesserung! Und sollte meiner Meinung nach nicht allzu schwer hinzuzufügen sein. Vielleicht versuche ich mich in den nächsten Tagen an einem PR (Pull Request), wenn ich Zeit dafür finde.

4 „Gefällt mir“

Ich denke, (b) ist bereits als Option vorgesehen, z. B. Inline oder in neuem Tab öffnen. Vielleicht eine dritte Option, damit Benutzer Inline und in neuem Tab öffnen können? Diese Idee gefällt mir auch.

(a) könnte schwierig sein, da es schwierig sein kann, Dinge in einem Beitrag richtig aussehen zu lassen.

3 „Gefällt mir“

Ich würde mich über eine Schaltfläche zum Erweitern

in der Symbolleiste freuen, die das PDF im Vollbildmodus anzeigt und nicht inline.

3 „Gefällt mir“

@Ralf_Stockmann und @Alon1 habt ihr schon versucht…

Außerdem verwende ich auf meinem Discourse diese Methode…

PDF von Google Drive einbetten

(Dies ist meine bevorzugte Methode, damit PDFs in iFrames responsiv sind - andere Methoden scheitern meist daran, browserübergreifend responsiv zu sein.)

  1. Teilen
  2. Freigabelink kopieren
  3. Freigabelink in einem neuen Tab öffnen
  4. Klicken Sie auf die 3 vertikalen Punkte in der oberen rechten Ecke
  5. Einbetten auswählen
  6. Den angezeigten iFrame-Code kopieren
  7. In den Discourse-Editor einfügen

Ein Test-PDF auf Google Drive ist hier unten eingebettet, das Sie \u003c\u003c hier herunterladen \u003e\u003e können

<iframe src="https://drive.google.com/file/d/1KQ-jn7R0NmZxw955QaPu3lvLFh5zpnDe/preview" width="640" height="480" allow="autoplay"></iframe>

So sieht das aus… (was Sie auch live HIER auf meiner Seite ausprobieren können)

3 „Gefällt mir“

Das ist großartig! \nEinfach (1) die IFrame Lightboxes Theme-Komponente installieren und (2) meine eigene Website-URL zur Liste der „iframe origin domains“ in den Komponenteneinstellungen hinzufügen, funktioniert! Sie fügt den Erweiterungsbutton direkt über der rechten Ecke des Inline-PDFs hinzu \n

\n\n\nSofort einsatzbereit :slight_smile:

4 „Gefällt mir“

Da ich PDFs immer noch nicht in einem neuen Tab öffnen konnte, habe ich ein kleines Plugin geschrieben, das alle lokalen PDFs mit content-disposition: inline bereitstellt:

4 „Gefällt mir“