Skip to content

Konwerter Base64 na PDF i plik · PDF na Base64

Konwersja Base64 do PDF online: wklej czyste Base64, data URI lub całą odpowiedź JSON. Rozpoznaje prawdziwy typ pliku, pokazuje podgląd, pobiera plik i ostrzega przed uciętym PDF. Także PDF na Base64. Nic nie jest wysyłane.

Bez śledzenia Działa w przeglądarce Bezpłatne
Dekodowanie i kodowanie odbywają się w całości w przeglądarce. Base64 ani pliki nigdy nie są wysyłane.

Odczytano jako:

Jaki plik kryje to Base64? Sprawdź początek

Każdy typ pliku zaczyna się od stałych „magicznych” bajtów, więc jego Base64 zaczyna się od stałych znaków. Poniższe prefiksy są obliczane z prawdziwych nagłówków plików przez ten sam silnik, którego używa to narzędzie.

Base64 zaczyna się od Typ pliku Magiczne bajty (hex)
JVBERi0 PDF 25 50 44 46 2D
iVBORw0KGgoAAAANSUhEU PNG 89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52
/9j/ JPEG FF D8 FF
R0lGOD GIF 47 49 46 38
UEsDB ZIP / DOCX / XLSX / PPTX 50 4B 03 04
0M8R4KGxGu Office 97–2003 (DOC/XLS/PPT) D0 CF 11 E0 A1 B1 1A E1
H4sI Gzip 1F 8B 08
UklGR RIFF (WebP / WAV / AVI) 52 49 46 46
SUQz MP3 (ID3) 49 44 33
e1xydG RTF 7B 5C 72 74 66
Działanie sprawdzone względem RFC 4648, RFC 2045 i RFC 2397 oraz sygnatur plików PDF, PNG, ZIP i Office. — Go Tools Engineering · Sep 30, 2026

Tekst napisany i sprawdzony przez inżynierów, którzy tworzą narzędzia do kodowania w Go Tools. Każda długość, prefiks i przykład na tej stronie pochodzi z silnika samej strony i jest weryfikowany automatycznymi testami.

Base64 na PDF — krótkie odpowiedzi

Jaki plik to Base64 zaczynające się od JVBERi0?

JVBERi0 = PDF PDF. Każdy PDF zaczyna się od bajtów `%PDF-`, a te w Base64 dają `JVBERi0`. `iVBORw0KGgo` to PNG, `/9j/` to JPEG, a `UEsDB` to ZIP, do którego należą też DOCX i XLSX.

O ile Base64 jest większe od oryginalnego pliku?

+33,3% 4 znaki na każde 3 bajty, czyli o około 33,3% więcej: PDF o rozmiarze 1 MB (1 048 576 bajtów) zamienia się w 1 398 104 znaki. Z łamaniem wiersza co 76 znaków, jak w załącznikach e-mail, wychodzi 1 434 896 znaków, czyli o 36,8% więcej.

Czym jest PDF w Base64?

Base64 zapisuje dowolne bajty za pomocą zaledwie 64 bezpiecznych znaków tekstowych (A–Z, a–z, 0–9, +, /), z = jako dopełnieniem. Każde 3 bajty stają się 4 znakami. Dzięki temu plik binarny, taki jak PDF, może przejść przez kanały przenoszące wyłącznie tekst — pole JSON, element XML, treść e-maila, kolumnę tekstową w bazie danych. Konwersja Base64 do PDF po prostu odwraca ten proces: zamienia znaki z powrotem na bajty i zapisuje je z rozszerzeniem .pdf. Kłopot w tym, że prawdziwe Base64 rzadko przychodzi czyste: ma prefiks data:, sekwencje ucieczki JSON, łamanie wierszy albo inny alfabet, a wiele konwerterów po cichu tworzy wtedy plik, którego nie da się otworzyć.

%PDF-1.4          → bytes 25 50 44 46 2D 31 2E 34
JVBERi0xLjQ=      → the same bytes in Base64
data:application/pdf;base64,JVBERi0xLjQ=   → data URI form

Funkcje

Wklejasz tak, jak przyszło

Obsługuje data URI, sekwencje ucieczki JSON \/ i \n, cudzysłowy, łamanie wierszy MIME, znaki URL-safe - _, %2B %2F z adresów URL, nagłówki PEM i brakujące dopełnienie = — i pokazuje każdy wykonany krok.

Przyjmuje całą odpowiedź JSON

Wklej {"code":0,"data":{"file":"JVBERi0…"}} bez zmian. Użyte zostaje najdłuższe pole wyglądające na Base64, a jego ścieżka (data.file) jest wyświetlana, więc wiadomo, które pole zostało zdekodowane.

Prawdziwy typ z magicznych bajtów

PDF, PNG, JPEG, GIF, WebP, DOCX, XLSX, PPTX, ZIP, GZIP, MP3, MP4 i ponad 40 innych formatów rozpoznawanych jest po pierwszych bajtach. Pobrany plik dostaje właściwe rozszerzenie, nawet gdy prefiks twierdzi co innego.

Wyjaśnia, dlaczego plik się nie otwiera

Wykrywa PDF bez %%EOF (ucięty przy kopiowaniu albo przez limit długości kolumny), Base64 zakodowane dwukrotnie, hex wklejony jako Base64, dane skompresowane gzipem i zaszyfrowane PDF-y.

Podgląd na stronie

PDF-y otwierają się we wbudowanej przeglądarce PDF, obrazy i SVG są wyświetlane, tekst i JSON pokazywane jako tekst. HTML nigdy nie jest renderowany — widać tylko kod źródłowy — bo inaczej zostałby wykonany na tej stronie.

PDF lub dowolny plik na Base64

Upuść plik do 50 MB i otrzymaj czyste Base64 albo data URI, opcjonalnie w wariancie URL-safe lub z łamaniem co 76 znaków, wraz z dokładnym narzutem rozmiaru.

Base64 na PDF w Pythonie, Javie, JavaScripcie i innych

Python

base64.b64decode

open('out.pdf', 'wb').write(base64.b64decode(s)). Dla - i _ użyj urlsafe_b64decode; b64decode ignoruje znaki nowego wiersza, chyba że przekażesz validate=True.

Java

java.util.Base64

Files.write(Path.of("out.pdf"), Base64.getMimeDecoder().decode(s)). getDecoder() odrzuca znaki nowego wiersza; getUrlDecoder() służy do - i _.

Node.js

Buffer

fs.writeFileSync('out.pdf', Buffer.from(s, 'base64')). Buffer akceptuje oba alfabety i ignoruje białe znaki, ale po cichu pomija też każdy inny niedozwolony znak zamiast zgłosić błąd, więc warto sprawdzić, czy wynik zaczyna się od %PDF-.

JavaScript w przeglądarce

atob / Uint8Array.fromBase64

Przed utworzeniem Blob zbuduj Uint8Array. Uint8Array.fromBase64() to nowsza wbudowana metoda; sprawdź jej obsługę w docelowych przeglądarkach.

PHP

base64_decode

file_put_contents('out.pdf', base64_decode($s, true)). Przekaż true, aby włączyć tryb ścisły — inaczej niedozwolone znaki są po cichu odrzucane.

C#

Convert.FromBase64String

File.WriteAllBytes("out.pdf", Convert.FromBase64String(s)). Białe znaki są dozwolone; - i _ już nie.

Wiersz poleceń

base64 -d / certutil

macOS i Linux: base64 -d < in.txt > out.pdf. Windows: certutil -decode in.txt out.pdf.

Przykłady konwersji Base64 na PDF

Czyste Base64 pliku PDF

JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4K…
PDF · wersja 1.4 · pobrany jako file.pdf

Zaczyna się od JVBERi0, czyli %PDF-. Nie ma czego czyścić, więc jest dekodowane bez zmian.

Ciąg skopiowany z odpowiedzi JSON

"data:application\/pdf;base64,JVBERi0xLjQK…"
Odczytano jako: usunięto otaczające cudzysłowy → cofnięto sekwencje ucieczki JSON → usunięto prefiks data URI (application/pdf)

json_encode w PHP i niektóre serializatory Javy zapisują / jako \/. Po wklejeniu do dekodera, który tego nie cofa, ukośnik wsteczny jest niedozwolonym znakiem.

Cała odpowiedź API

{"code":0,"data":{"name":"invoice.pdf","file":"JVBERi0xLjQK…"}}
Odczytano jako: wyjęto pole data.file z JSON

Nie trzeba ręcznie wycinać ciągu. Użyte zostaje najdłuższe pole wyglądające na Base64, a jego ścieżka jest wyświetlana.

Opisany jako PDF, a w rzeczywistości PNG

data:application/pdf;base64,iVBORw0KGgoAAAANSUhEUgAA…
Ostrzeżenie: data URI podaje application/pdf, ale bajty to PNG. Zapisano jako file.png

Wiele konwerterów zapisałoby plik .pdf, którego nie otworzy żaden czytnik. Magiczne bajty mają pierwszeństwo przed etykietą.

Wklejony hex zamiast Base64

255044462d312e370a…
Ostrzeżenie: to wygląda na zapis szesnastkowy — odczytane jako hex to PDF. [Dekoduj jako hex]

Cyfry szesnastkowe są poprawnymi znakami Base64, więc dekodowanie Base64 nie zgłasza błędu, tylko po cichu produkuje śmieci. 25 50 44 46 to %PDF.

Jak przekonwertować Base64 na PDF

  1. 1

    Wklej Base64 w takiej postaci, w jakiej przyszło

    Czyste Base64, data:application/pdf;base64,…, ciąg skopiowany z JSON z sekwencjami \/ albo cała odpowiedź API. Bardzo długie ciągi lepiej wczytać przez Otwórz plik .txt niż wklejać.

  2. 2

    Sprawdź, jak dane zostały odczytane

    Wiersz pod polem wymienia każdy krok czyszczenia — usunięty prefiks, cofnięte sekwencje ucieczki, dodane dopełnienie, pole wyjęte z JSON. Jeśli coś jest nie tak, komunikat błędu podaje dokładny znak i jego pozycję.

  3. 3

    Zobacz wykryty typ i ostrzeżenia

    Plakietka pokazuje typ odczytany z magicznych bajtów pliku. Żółta uwaga pojawia się, gdy to w ogóle nie jest PDF, gdy data URI podaje fałszywy typ albo gdy PDF urywa się przed %%EOF.

  4. 4

    Podgląd i pobieranie

    PDF-y otwierają się we wbudowanej przeglądarce PDF, obrazy i tekst są wyświetlane bezpośrednio na stronie. W razie potrzeby zmień nazwę pliku i kliknij Pobierz. Aby przejść w drugą stronę, przełącz na PDF / plik → Base64 i upuść plik.

Dlaczego PDF z Base64 się nie otwiera: typowe błędy

Dekodowanie prefiksu data URI razem z danymi

data:application/pdf;base64, nie jest częścią Base64. Pozostawiony prefiks albo powoduje błąd (: i ; są niedozwolone), albo — w pobłażliwych dekoderach — psuje pierwsze bajty, przez co plik nie zaczyna się już od %PDF-.

✗ Niepoprawne
base64.b64decode(value)  # value = 'data:application/pdf;base64,JVBERi0…'
✓ Poprawne
b64 = value.split(',', 1)[1] if value.startswith('data:') else value
pdf = base64.b64decode(b64)

Zapisywanie zdekodowanych bajtów jako tekstu

PDF jest plikiem binarnym. Zamiana zdekodowanych bajtów na ciąg znaków i zapisanie go z kodowaniem tekstowym podmienia nieprawidłowe bajty i zmienia znaki końca wiersza, co psuje tablicę odsyłaczy (xref).

✗ Niepoprawne
fs.writeFileSync('out.pdf', Buffer.from(b64, 'base64').toString())
✓ Poprawne
fs.writeFileSync('out.pdf', Buffer.from(b64, 'base64'))

Ścisły dekoder i Base64 z łamaniem wierszy

Base64.getDecoder() w Javie odrzuca znaki nowego wiersza. Base64 z e-maili albo z polecenia base64 w Linuksie jest łamane co 76 znaków. Należy użyć dekodera MIME albo najpierw usunąć białe znaki.

✗ Niepoprawne
byte[] pdf = Base64.getDecoder().decode(wrapped);  // IllegalArgumentException
✓ Poprawne
byte[] pdf = Base64.getMimeDecoder().decode(wrapped);

Base64 URL-safe w standardowym dekoderze

JWT i wiele parametrów URL używa - i _ zamiast + i / oraz pomija dopełnienie =. Standardowy dekoder je odrzuca albo dekoduje niewłaściwe bajty.

✗ Niepoprawne
base64.b64decode(token_part)  # contains - and _
✓ Poprawne
base64.urlsafe_b64decode(token_part + '=' * (-len(token_part) % 4))

Traktowanie wyniku atob() jako tekstu

W przeglądarce atob zwraca ciąg binarny, jeden znak na bajt. Przekazany do new Blob([str]) zostaje zakodowany jako UTF-8, więc każdy bajt powyżej 127 zamienia się w dwa. Najpierw skopiuj go do Uint8Array.

✗ Niepoprawne
new Blob([atob(b64)], { type: 'application/pdf' })
✓ Poprawne
const bytes = Uint8Array.from(atob(b64), c => c.charCodeAt(0));
new Blob([bytes], { type: 'application/pdf' })

Ucięty ciąg

PDF kończy się znacznikiem %%EOF. Jeśli Base64 zostało ucięte przez kolumnę VARCHAR, limit długości wiersza logu albo niepełne kopiowanie, plik da się zdekodować, ale czytniki pokażą błąd lub brakujące strony. Porównaj długość z tym, co wygenerował nadawca.

✗ Niepoprawne
SELECT LENGTH(pdf_b64) FROM docs;  -- 65535: suspiciously round
✓ Poprawne
ALTER TABLE docs MODIFY pdf_b64 LONGTEXT;  -- or store the bytes in a BLOB

Kiedy potrzebna jest konwersja Base64 do PDF

API zwraca PDF jako Base64
API do fakturowania, podpisu elektronicznego i drukowania etykiet często zwracają dokumenty wewnątrz JSON. Wystarczy wkleić odpowiedź, żeby sprawdzić dokument, zanim powstanie kod, który go zapisuje.
Debugowanie PDF-a, który się nie otwiera
Gdy zapisany plik jest pusty lub uszkodzony, wklej tutaj to samo Base64. Narzędzie powie, czy jest ucięte, zakodowane dwukrotnie, czy to w ogóle nie PDF, czy też wszystko jest w porządku — a wtedy błąd tkwi w tym, jak kod zapisuje plik.
Wysyłanie pliku w żądaniu JSON
Wiele endpointów do przesyłania plików oczekuje {"filename": …, "content": "<base64>"}. Zakoduj tu plik, aby zbudować testowe żądanie dla Postmana lub cURL.
Osadzanie pliku w HTML, CSS lub e-mailu
Wygeneruj data URI dla osadzonego linku do PDF, czcionki czy małego obrazka albo Base64 w 76 kolumnach dla części MIME wiadomości e-mail.
Odczyt załączników z logów i baz danych
Pliki zapisane w kolumnie tekstowej albo wypisane do logu można wyciągnąć z powrotem — a brakujące %%EOF zdradza, że kolumna lub wiersz logu były za krótkie.

Jak działa kodowanie plików w Base64

Dlaczego Base64 jest o 33% większe
Każdy znak niesie 6 bitów, więc 3 bajty (24 bity) potrzebują 4 znaków. Z dopełnieniem długość wynosi 4 × ⌈n ÷ 3⌉: 100 KB (102 400 bajtów) daje 136 536 znaków. Łamanie MIME dodaje CRLF po każdych 76 znakach, więc 1 MB daje 1 434 896 zamiast 1 398 104 znaków.
Alfabet standardowy i URL-safe
RFC 4648 definiuje dwa alfabety różniące się tylko dwoma ostatnimi znakami: + / (standardowy, sekcja 4) oraz - _ (bezpieczny dla URL i nazw plików, sekcja 5). Base64 URL-safe zwykle pomija dopełnienie =. Oba warianty w jednym ciągu oznaczają, że był edytowany lub sklejony.
Dopełnienie i niemożliwe długości
Dopełnienie = sprawia, że długość jest wielokrotnością 4. Bez niego resztę 2 lub 3 da się odtworzyć; reszta 1 jest niemożliwa w żadnym poprawnym Base64 — jakiś znak zginął albo został dodany. = w środku zwykle oznacza, że sklejono dwa ciągi.
Typ określają magiczne bajty
Plik deklaruje swój format w pierwszych bajtach: %PDF- dla PDF, 89 50 4E 47 dla PNG, 50 4B 03 04 dla formatów opartych na ZIP, takich jak DOCX i XLSX. Te bajty wyznaczają pierwsze znaki Base64, więc typ da się odczytać jeszcze przed dekodowaniem — zobacz tabelę w narzędziu.
Jak wykrywany jest ucięty PDF
PDF kończy się znacznikiem %%EOF. Jeśli nie ma go w ostatnich 1 024 bajtach, plik niemal na pewno został ucięty. Nagłówek może zaczynać się do 1 024 bajtów od początku; większość czytników i tak otwiera takie pliki, więc jest to zgłaszane, ale plik nie jest odrzucany.

Dobre praktyki przesyłania plików jako Base64

Przesyłaj typ MIME i nazwę pliku razem z danymi
Base64 nie niesie nazwy ani typu. Warto umieścić oba obok ({"filename": "invoice.pdf", "mime": "application/pdf", "content": "…"}) albo użyć data URI, żeby odbiorca nie musiał zgadywać.
Sprawdzaj magiczne bajty po stronie odbiorcy
Przed zapisem sprawdź, czy zdekodowane bajty zaczynają się od %PDF-. Jedna linijka kodu wyłapuje błędne pola, podwójne kodowanie i strony błędów zwrócone jako Base64.
Dla dużych plików wybieraj multipart lub URL
Base64 zwiększa rozmiar o jedną trzecią, a cały ciąg musi zmieścić się w pamięci. Powyżej kilku megabajtów multipart/form-data albo wstępnie podpisany URL do pobrania jest lżejszy dla obu stron.
W bazie danych przechowuj bajty, nie Base64
Kolumna BLOB/bytea jest o jedną trzecią mniejsza i nie może zostać po cichu ucięta jak VARCHAR. Na Base64 koduj dopiero na granicy API.

Base64 na PDF — najczęściej zadawane pytania

Jak przekonwertować Base64 na PDF?
Wklej Base64 w pole na tej stronie. Dekodowanie następuje od razu, PDF otwiera się w podglądzie, a Pobierz zapisuje go jako .pdf. Prefiks data:application/pdf;base64,, cudzysłowy, łamanie wierszy i sekwencje ucieczki JSON mogą zostać — są usuwane automatycznie.
Dlaczego zdekodowany PDF się nie otwiera?
Typowe przyczyny: prefiks data: został zdekodowany jako część danych; bajty zapisano jako tekst zamiast binarnie; ciąg został ucięty (brak %%EOF na końcu); Base64 zakodowano dwukrotnie; albo to w ogóle nie jest PDF — na przykład PNG lub komunikat błędu w JSON. Wklej tu ten sam ciąg: każdy z tych przypadków ma własne ostrzeżenie.
Czy plik jest wysyłany na serwer?
Nie. Dekodowanie, rozpoznawanie typu, podgląd i kodowanie działają w przeglądarce, w JavaScripcie. Nic, co zostanie wklejone lub upuszczone, nigdzie nie trafia, więc narzędzie jest bezpieczne dla faktur, umów i skanów dokumentów tożsamości.
Jak poznać typ pliku zapisanego w Base64?
Po początku: JVBERi0 to PDF, iVBORw0KGgo to PNG, /9j/ to JPEG, R0lGOD to GIF, UEsDB to ZIP (a więc także DOCX, XLSX, PPTX), H4sI to gzip. Narzędzie odczytuje magiczne bajty po zdekodowaniu, pokazuje typ i zapisuje plik z pasującym rozszerzeniem.
Czy można zamienić Base64 na plik Word, Excel, obraz lub ZIP?
Tak. Zdekodować można każdy typ pliku; rozszerzenie wynika z zawartości. DOCX, XLSX i PPTX są rozpoznawane wewnątrz kontenera ZIP, a starsze pliki DOC/XLS jako Office 97–2003. Obrazy, audio i wideo mają podgląd; pozostałe typy są pobierane bezpośrednio.
Jak zamienić PDF na Base64?
Otwórz kartę PDF / plik → Base64 i upuść PDF. Wybierz czyste Base64 lub data URI, opcjonalnie w wariancie URL-safe albo z łamaniem co 76 znaków, a potem skopiuj wynik lub pobierz go jako plik .txt.
Czym różni się Base64 od data URI?
Data URI to Base64 z nagłówkiem podającym typ: data:application/pdf;base64,JVBERi0…. Przeglądarki mogą je otworzyć bezpośrednio jako link lub src. API zwykle oczekują tylko części Base64 po przecinku.
Dlaczego pojawia się komunikat „To nie jest PDF”?
Bo zdekodowane bajty nie zaczynają się od %PDF-. Wyświetlany typ to to, czym bajty są naprawdę. Częste niespodzianki to skan w PNG lub JPEG, plik DOCX, ZIP z kilkoma PDF-ami albo komunikat błędu w JSON lub HTML zakodowany w Base64 zamiast dokumentu.
Co oznacza „brak %%EOF na końcu”?
Każdy PDF kończy się znacznikiem %%EOF. Jeśli go brakuje, Base64 niemal na pewno zostało ucięte: skopiowane tylko częściowo, obcięte przez kolumnę bazy danych, np. MySQL TEXT (65 535 bajtów), albo skrócone przez limit długości wiersza logu. Trzeba ponownie pobrać pełny ciąg — dekodowanie nie odtworzy brakujących danych.
Co oznacza „zdekodowano po raz drugi”?
Zdekodowane dane same były tekstem Base64. Dzieje się tak, gdy wartość zostaje zakodowana raz przez własny kod, a potem jeszcze raz przez framework lub klienta HTTP. Narzędzie dekoduje wewnętrzną warstwę tylko wtedy, gdy okazuje się rozpoznawalnym plikiem, więc zwykły tekst nigdy nie zostanie przez pomyłkę rozpakowany.
Czy jest limit rozmiaru?
Wklejony tekst może mieć do 100 MB, a pliki do zakodowania do 50 MB. Przy bardzo długim Base64 Otwórz plik .txt działa szybciej niż wklejanie. Podgląd tekstu pokazuje pierwsze 100 000 znaków; pobrany plik jest zawsze kompletny.
Dlaczego podgląd PDF na telefonie jest pusty?
Przeglądarki mobilne różnie obsługują osadzone PDF-y; niektóre pokazują tylko pierwszą stronę albo nic. Użyj Otwórz w nowej karcie lub Pobierz — sam plik nie jest uszkodzony.

Powiązane narzędzia

Zobacz wszystkie narzędzia →