0

Response von API in pdf speichern

Es ist zum Mäuse melken:

Ich versuche verzweifelt ein PDF, das mir eine API schickt in Ninox als pdf zu speichern.

Postman zeigt mir sofort das pdf an. Aber Ninox mag das pdf Format scheinbar nicht - egal, ob ich es als Text oder Bild abspeichere - und files kann man ja scheinbar nur über URL erstellen. 

Gibt es irgendein workarround, ausser externe Dienste, wie Make etc. einzubinden?

Ich habe unten die Anfrage erstellt und brav gibt mir die API den pdf-code oder das Format Base64 zurück - aber mit Base64 kann ich auch diesen String scheinbar nicht als weiterverwertbaren file abspeichern... 

    headers := {
            Authorization: AccessTokenValue,
            'Content-type': "application/pdf"
        };
    let response := do as server
            http("GET", tokenEndpoint, headers, "")
        end;

Und wenn ich das dan in Text speichere, vermute ich, kann das Textformat den Zeichensatz nicht erkennen....

Kann mir jemand einen Tip geben?

2 Antworten

null
    • Seba.1
    • vor 1 Monat
    • Gemeldet - anzeigen

    Der erste Link hat mir schon weitergeholfen! Super Danke! - Also ist es doch möglich, aus einer exernen API Bilder und PDFs zu empfangen und intern abzuspeichern...mit der anderen Richtung habe ich es noch nicht probiert...

    Ich hatte dadurch gemerkt, dass beim Abspeichern in das ZielBildfeld alles in Base64Format eingefügt wird dadurch muss man nur einen String vorab miteinfügen - der davon abhängt, welches Bild oder od ein pdf File abgespeichert werden soll (in meinem Fall ein pdf)  - für andere zur Erläuterung ein Beispiel aus der API von Shippinglabel:

    Beispiel Einfügen eines pdfs, welches schon in Base64-Format aus der API kommt

    // Senden des Files\\";
        let postUrl := "https://api.ninox.com/v1/teams/" + teamId() + "/databases/" + databaseId() +
            "/tables/" +
            tableId(this) +
            "/records/" +
            number(this) +
            "/files/";
        let postHeaders := {
                Authorization: "Bearer " + NinoxKey(),
                Accept: "multipart/form-data"
            };
        let filesArray := [{
                    name: LabelNr + "-" + shippment_ID + ".pdf",
                    value: "data:application/pdf;base64," + response.result.label
                }];
        let vBody := {
                fieldId: "A"
            };
        http("POST", postUrl, postHeaders, vBody, filesArray)

     

    Beispiel Übernahme eines PDF in PDF-Format aus externer API (also mit Konvertierung  in Base64):

    let myEntity := this;
    let BaseRoute := first(select Dashboard).APIEndpointSippingLabel;
    let tokenEndpoint := first(select Dashboard).BaseRoute + "/shipments/labels/" + LabelNr;
    let headers := {
            Authorization: first(select Dashboard).AccessTokenValue,
            'Content-type': "application/pdf",
            'nx-file': "base64url"
        };
    let response := do as server
            http("GET", tokenEndpoint, headers, "")
        end;
    if response.error then
        'Error message' := text(response.error)
    else
        "

    // Senden des Files\\";
        Antworttext := response.result;
        let postUrl := "https://api.ninox.com/v1/teams/" + teamId() + "/databases/" + databaseId() +
            "/tables/" +
            tableId(this) +
            "/records/" +
            number(this) +
            "/files/";
        let postHeaders := {
                Authorization: "Bearer " + NinoxKey(),
                Accept: "multipart/form-data"
            };
        let filesArray := [{
                    name: LabelNr + "-" + shippment_ID + ".pdf",
                    value: "data:application/base64;pdf," + response.result
                }];
        let vBody := {
                fieldId: "A"
            };
        http("POST", postUrl, postHeaders, vBody, filesArray)
    end

Content aside

  • vor 1 MonatZuletzt aktiv
  • 2Antworten
  • 51Ansichten
  • 2 Folge bereits