Chuyển đổi Base64 sang PDF

Dán Base64 lấy từ phản hồi API, email hoặc cơ sở dữ liệu để chuyển nó trở lại thành PDF. Đọc tài liệu trong trình xem nhúng, rồi lưu thành một tệp .pdf thông thường.

Chạy hoàn toàn trong trình duyệt của bạn. Không có gì được tải lên.

Cách sử dụng

  1. Dán chuỗi Base64, hoặc data URI bắt đầu bằng data:application/pdf;base64, vào ô đầu vào.
  2. Kiểm tra xem tệp có được nhận dạng là PDF không và đọc nó trong trình xem.
  3. Tải PDF xuống để lưu vào thiết bị của bạn.

Sao chép Base64 từ phản hồi API

Các dịch vụ tạo hóa đơn, nhãn vận chuyển, báo cáo hoặc hợp đồng đã ký thường trả về PDF bên trong JSON, ví dụ {"filename": "label.pdf", "data": "JVBERi0..."}. Chỉ sao chép phần văn bản nằm giữa hai dấu ngoặc kép sau tên trường, và chú ý các chi tiết sau:

  • Dấu gạch chéo bị thoát. Một số bộ mã hóa JSON, trong đó có json_encode của PHP, viết mọi ký tự / thành \/. Vì / là ký tự Base64 bình thường, hãy thay \/ bằng / trước khi dán, hoặc phân tích JSON trước rồi mới sao chép giá trị.
  • Dấu ngoặc kép và dấu phẩy. Bỏ dấu ngoặc kép bao quanh và mọi dấu phẩy ở cuối.
  • Dấu xuống dòng. Dấu cách và dấu xuống dòng thật bên trong Base64, chẳng hạn giá trị được ngắt dòng sau 76 ký tự, đều không sao và không cần xóa. Các chuỗi ký tự \n hoặc \r\n xuất hiện nguyên văn trong JSON thô thì khác: chúng chứa ký tự gạch chéo ngược và phải được xóa.

Sao chép giá trị từ chế độ xem đã phân tích trong công cụ dành cho nhà phát triển của trình duyệt sẽ giúp bạn tránh được tất cả các vấn đề thoát ký tự này.

Trích xuất tệp PDF đính kèm từ email

Tệp đính kèm email được lưu dưới dạng Base64 bên trong thư thô. Hãy mở mã nguồn thư ("Hiển thị bản gốc" trong Gmail, "Message Source" trong Thunderbird, "Raw Source" trong Apple Mail) và tìm phần có header chứa Content-Type: application/pdf (hoặc application/octet-stream kèm tên tệp .pdf) và Content-Transfer-Encoding: base64. Sao chép khối bắt đầu sau dòng trống bên dưới các header đó và kết thúc trước dòng tiếp theo bắt đầu bằng --, tức ranh giới MIME. Dán nguyên khối đó vào đây; các dấu xuống dòng sẽ được bỏ qua.

Hiển thị PDF Base64 trong ứng dụng web của bạn

Khi front-end nhận được PDF dạng Base64 và cần hiển thị nó, Blob URL đáng tin cậy hơn data URI, vì một số trình duyệt từ chối mở data URI trong thẻ mới:

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); // hoặc dùng làm src của một <iframe>

Hãy gọi URL.revokeObjectURL(url) khi không còn cần tài liệu nữa để giải phóng bộ nhớ. Lưu ý rằng atob chỉ chấp nhận bảng ký tự Base64 tiêu chuẩn, nên hãy chuyển đổi đầu vào dạng an toàn cho URL (- và _) trước.

Câu hỏi thường gặp

Vì sao Base64 của tôi không được nhận dạng là PDF?
PDF dạng Base64 bắt đầu bằng JVBERi0, tức dạng mã hóa của %PDF-. Nếu chuỗi của bạn bắt đầu bằng dấu ngoặc kép, tên trường hoặc văn bản khác, hãy xóa phần đó. Nếu chuỗi bắt đầu bằng SlZCRVJ, PDF đã bị mã hóa Base64 hai lần: hãy giải mã một lần bằng bộ giải mã Base64 rồi dán kết quả vào đây. Nếu không phải hai trường hợp trên, dữ liệu có thể là một loại tệp khác mà công cụ Base64 sang tệp có thể xác định.
PDF tải xuống được nhưng không mở được. Lỗi ở đâu?

Nhiều khả năng Base64 đã bị cắt mất một phần. Nhật ký, console và công cụ cơ sở dữ liệu thường cắt bớt giá trị dài, và PDF bị thiếu phần cuối sẽ không đọc được, vì bảng tham chiếu chéo dùng để định vị từng trang được lưu ở gần cuối tệp. Hãy sao chép lại toàn bộ giá trị, tốt nhất là lưu phản hồi gốc thành tệp.

Bản xem trước bị trống trên điện thoại. Tệp có bị hỏng không?

Chưa chắc. Một số trình duyệt di động không thể hiển thị PDF bên trong trang. Hãy tải tệp xuống và mở bằng trình đọc PDF để kiểm tra.

Tôi có thể giải mã PDF được bảo vệ bằng mật khẩu không?

Có. Quá trình giải mã khôi phục tệp đúng đến từng byte, kể cả phần mã hóa bảo mật. Bản xem trước có thể hỏi mật khẩu hoặc để trống, còn tệp tải xuống sẽ mở được trong mọi trình đọc PDF sau khi bạn nhập mật khẩu.

Tài liệu có bị tải lên đâu không?

Không. Việc giải mã và xem trước diễn ra trong trình duyệt của bạn, nên các tệp PDF mật như hợp đồng, phiếu lương hay hồ sơ y tế vẫn nằm trên thiết bị của bạn.