From 5445b294cbb6fcc6645d017198fe842ee4018e3b Mon Sep 17 00:00:00 2001 From: James Date: Tue, 10 Feb 2026 00:33:13 -0500 Subject: [PATCH] Share links now use .pdf extension and Content-Disposition header for Android compatibility --- main.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/main.go b/main.go index c2872e3..3325cd3 100644 --- a/main.go +++ b/main.go @@ -576,7 +576,7 @@ func createShareHandler(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(map[string]string{ "token": token, - "url": "/s/" + token, + "url": "/s/" + token + ".pdf", }) } @@ -602,6 +602,7 @@ func listSharesHandler(w http.ResponseWriter, r *http.Request) { func publicShareHandler(w http.ResponseWriter, r *http.Request) { token := chi.URLParam(r, "token") + token = strings.TrimSuffix(token, ".pdf") doc, err := GetShare(token) if err != nil || doc == nil { http.Error(w, "Not found", http.StatusNotFound) @@ -617,6 +618,12 @@ func publicShareHandler(w http.ResponseWriter, r *http.Request) { } else { w.Header().Set("Content-Type", "text/plain") } + // Set filename so Android/browsers handle it properly + filename := strings.ReplaceAll(doc.Title, " ", "-") + ext + if ext == "" { + filename += ".pdf" + } + w.Header().Set("Content-Disposition", fmt.Sprintf(`inline; filename="%s"`, filename)) http.ServeFile(w, r, path) return }