ДОРОЖНІЙ ЛИСТ

Завантажити:

Для отримання оригінальних текстових даних із цього QR-коду вам потрібно виконати зворотний процес до того, як вони були закодовані (декодувати Base64 рядок, розпакувати ZIP-архів у пам’яті та прочитати файл).


{
  "car_adblue": "0",
  "car_boss": "",
  "car_driver": "",
  "car_gazatip": "АБ",
  "car_marka": "VOLKSWAGEN Passat B6 1.8TSI (2008 р. дв. CDAA,1798см³,МКПП,184 кВт,бензин, 🛞4х2)",
  "car_nomer": "",
  "car_norma": "11.1",
  "car_oil": "0.1",
  "car_osoba1": "",
  "car_osoba2": "",
  "car_speedplan": "0",
  "dok_datt_ot": "2026-06-07T13:32:13.788Z",
  "dok_datt_po": "2026-06-07T13:32:15.938Z",
  "dok_nomer": "999",
  "RowsFuel": [
    {
      "before": "0",
      "code": "111003",
      "datePL": "2026-06-07T13:32:27.419Z",
      "id": "1780839154786-10",
      "liters": 0,
      "name": "Бензин А-95",
      "odometer": 0,
      "price": 0,
      "received": "100",
      "spent": ""
    },
    {
      "before": "0",
      "code": "121055",
      "datePL": "2026-06-07T13:32:53.713Z",
      "id": "1780839179929-906",
      "liters": 0,
      "name": "Олива 15W-40",
      "odometer": 0,
      "price": 0,
      "received": "12",
      "spent": ""
    }
  ],
  "RowsWork": [
    {
      "cargo_name": "",
      "cargo_weight": "",
      "id": "1780856374331-309",
      "km_Distance": "97",
      "km_load": "",
      "km_tow": "",
      "km_trailer": "",
      "marshrut": "Київ - Лютіж - Київ - Київ",
      "moto_place": "",
      "pryb_date": "2026-06-07T19:56:30.635Z",
      "speedo_1": "000",
      "vyb_date": "2026-06-07T18:19:30.635Z"
    }
  ],
  "saveDate": "07.06.2026 21:19:45",
  "trailer_marka": "",
  "trailer_nomer": "",
  "сompany": ""
}

🖥️ 1. Через JavaScript / TypeScript (Frontend або React Native)
Якщо ви розробляєте додаток і скануєте код камерой, використовуйте бібліотеку jszip [1]:
typescript
import JSZip from “jszip”;
export const extractJsonFromQR = async (
base64Data: string,
documentId: string
): Promise => {
try {
if (!base64Data) return;

const zip = new JSZip();
// Завантажуємо ZIP-архів із рядка Base64
const loadedZip = await zip.loadAsync(base64Data, { base64: true });

// Шукаємо файл за ідентифікатором (у коді пакування він був названий як documentId)
const file = loadedZip.file(documentId);
if (!file) {
  console.error(`Файл ${documentId} не знайдено в архіві.`);
  return;
}

// Зчитуємо вміст як звичайний UTF-8 рядок
return await file.async("string");

} catch (error) {
console.error(“Помилка розпакування:”, error);
return;
}
};
🖥️ 2. Через Node.js (Backend)
Якщо дані відправляються сканером на сервер, для розпакування ідеально підійде легка бібліотека adm-zip:
javascript
const AdmZip = require(“adm-zip”);
function extractJsonFromQRNode(base64Data, documentId) {
try {
if (!base64Data) return null;

// Декодуємо Base64 рядок у бінарний буфер
const zipBuffer = Buffer.from(base64Data, "base64");

// Читаємо архів із пам'яті
const zip = new AdmZip(zipBuffer);

// Витягуємо вміст файлу як текст
return zip.readAsText(documentId);

} catch (error) {
console.error(“Помилка декомпресії в Node.js:”, error);
return null;
}
}
🐍 3. Через Python (Скрипти чи Аналітика)
Якщо ви обробляєте дані у сторонніх скриптах, можна обійтися без встановлення додаткових пакетів, використовуючи лише вбудовані модулі:
python
import base64
import io
import zipfile
def extract_json_from_qr_python(base64_data: str, document_id: str) -> str:
try:
if not base64_data:
return “”
# Декодуємо Base64 у бінарні байти
zip_bytes = base64.b64decode(base64_data)
# Створюємо віртуальний файл в оперативній пам’яті
zip_buffer = io.BytesIO(zip_bytes)

    # Відкриваємо буфер як ZIP-архів
    with zipfile.ZipFile(zip_buffer, "r") as zip_ref:
        if document_id in zip_ref.namelist():
            # Читаємо файл та трансформуємо байти в UTF-8 текст
            return zip_ref.read(document_id).decode("utf-8")
        else:
            print(f"Файл {document_id} відсутній в архіві.")
            return ""
except Exception as e:
    print(f"Помилка в Python: {e}")
    return ""