Jak używać
- Wklej ciąg Base64 lub data URI zaczynający się od data:application/pdf;base64, w pole wejściowe.
- Sprawdź, czy plik został wykryty jako PDF, i odczytaj go w przeglądarce dokumentów.
- Pobierz plik PDF, aby zapisać go na urządzeniu.
Kopiowanie Base64 z odpowiedzi API
Usługi generujące faktury, etykiety wysyłkowe, raporty lub podpisane umowy często zwracają PDF wewnątrz JSON, np. {"filename": "label.pdf", "data": "JVBERi0..."}. Skopiuj tylko tekst między cudzysłowami po nazwie pola i zwróć uwagę na następujące szczegóły:
- Ukośniki ze znakiem ucieczki. Niektóre kodery JSON, w tym
json_encodew PHP, zapisują każdy znak/jako\/. Ponieważ/to zwykły znak Base64, przed wklejeniem zamień\/na/albo najpierw sparsuj JSON i skopiuj wartość. - Cudzysłowy i przecinki. Pomiń otaczające cudzysłowy i ewentualny przecinek na końcu.
- Podziały wierszy. Spacje i prawdziwe podziały wierszy wewnątrz Base64, np. w wartości zawiniętej co 76 znaków, nie przeszkadzają i nie trzeba ich usuwać. Co innego dosłowne sekwencje
\nlub\r\nw surowym JSON: to znaki ukośnika wstecznego, które trzeba usunąć.
Skopiowanie wartości ze sparsowanego widoku w narzędziach deweloperskich przeglądarki pozwala uniknąć wszystkich tych problemów z sekwencjami ucieczki.
Wyodrębnianie załącznika PDF z wiadomości e-mail
Załączniki e-mail są zapisane w Base64 wewnątrz surowej wiadomości. Otwórz źródło wiadomości („Pokaż oryginał” w Gmailu, „Źródło wiadomości” w Thunderbirdzie, „Surowe źródło” w Apple Mail) i znajdź część, której nagłówki zawierają Content-Type: application/pdf (lub application/octet-stream z nazwą pliku .pdf) oraz Content-Transfer-Encoding: base64. Skopiuj blok, który zaczyna się po pustym wierszu pod tymi nagłówkami i kończy przed następnym wierszem zaczynającym się od --, czyli granicą MIME. Wklej go tutaj bez zmian; podziały wierszy są ignorowane.
Wyświetlanie PDF z Base64 we własnej aplikacji internetowej
Gdy frontend otrzymuje PDF w Base64 i ma go wyświetlić, adres URL typu Blob jest bardziej niezawodny niż data URI, którego niektóre przeglądarki nie chcą otworzyć w nowej karcie:
const bytes = Uint8Array.from(atob(base64), c => c.charCodeAt(0));
const blob = new Blob([bytes], { type: 'application/pdf' });
const url = URL.createObjectURL(blob);
window.open(url); // lub użyj go jako src elementu <iframe>
Gdy dokument nie jest już potrzebny, wywołaj URL.revokeObjectURL(url), aby zwolnić pamięć. Pamiętaj, że atob przyjmuje tylko standardowy alfabet Base64, więc dane w wariancie bezpiecznym dla URL (- i _) trzeba najpierw przekonwertować.
Najczęściej zadawane pytania
Dlaczego Base64 nie jest wykrywany jako PDF?
JVBERi0, czyli zakodowanego ciągu %PDF-. Jeśli ciąg zaczyna się od cudzysłowu, nazwy pola lub innego tekstu, usuń je. Jeśli zaczyna się od SlZCRVJ, PDF został zakodowany w Base64 dwukrotnie: zdekoduj go raz za pomocą dekodera Base64 i wklej tutaj wynik. W przeciwnym razie dane mogą być innym typem pliku, który rozpozna narzędzie Base64 na plik.Plik PDF się pobiera, ale nie otwiera. Co poszło nie tak?
Najprawdopodobniej ciąg Base64 został obcięty. Dzienniki, konsole i narzędzia bazodanowe często ucinają długie wartości, a PDF bez końcowej części nie da się odczytać, ponieważ tablica odsyłaczy, która wskazuje położenie każdej strony, znajduje się blisko końca pliku. Skopiuj ponownie całą wartość, najlepiej zapisując oryginalną odpowiedź do pliku.
Podgląd na telefonie jest pusty. Czy plik jest uszkodzony?
Niekoniecznie. Niektóre przeglądarki mobilne nie potrafią wyświetlić pliku PDF wewnątrz strony. Pobierz plik i otwórz go w czytniku PDF, aby to sprawdzić.
Czy można zdekodować PDF chroniony hasłem?
Tak. Dekodowanie odtwarza plik bajt po bajcie, łącznie z jego szyfrowaniem. Podgląd może poprosić o hasło lub pozostać pusty, a pobrany plik otworzy się w każdym czytniku PDF po wpisaniu hasła.
Czy dokument jest gdzieś przesyłany?
Nie. Dekodowanie i podgląd odbywają się w przeglądarce, więc poufne pliki PDF, takie jak umowy, odcinki wypłat czy dokumentacja medyczna, pozostają na urządzeniu.