Документация
Вся документация

Библиотека A4 для C и C++

Три ядра — A4 Таблица, A4 Документ и A4 Презентация — в виде обычных нативных библиотек: .so для Linux, .dylib для macOS, .dll для Windows. Подключаются из C и C++ и из любого языка, который умеет вызывать функции C: Go, Rust, Swift, Delphi, 1С через внешнюю компоненту. Файлы обрабатываются внутри вашей программы и не покидают компьютер.

Что умеет

  • книги .xlsx и .xlsm: открыть, записать число, текст или формулу, пересчитать, прочитать значения, сохранить; проект VBA сохраняется без изменений;
  • документы .docx: открыть, прочитать и изменить текст, сохранить;
  • презентации .pptx: открыть, изменить надписи, добавить слайд, сохранить;
  • те же ядра, что в пакетах для Python, Node.js, .NET и Java — результат одинаковый на всех языках.

Как устроено

У каждого ядра восемь функций с одной и той же схемой: байты файла → сессия → запросы в JSON → байты файла. Приставка в имени функции говорит, какое это ядро:

ЯдроФайлыПриставка функций
A4 Таблица.xlsx, .xlsmf1_
A4 Документ.docxa4_
A4 Презентация.pptxp2_
f1_session_open(data, len, name, n) /* открыть файл из памяти            */
f1_session_handshake(session)       /* что умеет ядро, версия             */
f1_session_execute_json(session, j) /* команда: записать, пересчитать ... */
f1_session_save(session)            /* байты сохранённого файла           */
f1_last_error()                     /* текст последней ошибки             */
f1_buffer_free(buffer)              /* вернуть память, выданную ядром     */
f1_session_free(session)            /* закрыть сессию                     */
f1_session_new()                    /* пустая книга                       */

Для документов и презентаций — те же функции с приставками a4_ и p2_. Каждый буфер, который вернула библиотека, нужно отдать обратно в *_buffer_free; буферы не заканчиваются нулём — длина приходит вместе с данными.

Пример: изменить ячейку и пересчитать

#include "a4office.h"

F1Session *s = f1_session_open(data, len, (const uint8_t *)"budget.xlsx", 11);

/* рукопожатие называет книгу (subsetId) и активный лист (activeSheet.path) */
F1Buffer hello = f1_session_handshake(s);
/* ... достать subsetId и путь листа из JSON ... */
f1_buffer_free(hello);

/* A3 = «Итого», B3 = =B1*B2; строки и столбцы считаются от нуля */
const char *req =
  "{\"operation\":\"apply_cell_edits\",\"subsetId\":\"…\",\"edits\":["
  "{\"inputKind\":\"text\",\"sheetKey\":\"…\",\"row\":2,\"col\":0,\"input\":\"Итого\"},"
  "{\"inputKind\":\"formula\",\"sheetKey\":\"…\",\"row\":2,\"col\":1,\"input\":\"=B1*B2\"}],"
  "\"viewport\":{\"top\":2,\"left\":1,\"rows\":1,\"cols\":1}}";
F1Buffer r = f1_session_execute_json(s, (const uint8_t *)req, strlen(req));
/* ответ: {"ok":true,"payload":...} с пересчитанным значением B3 */
f1_buffer_free(r);

F1Buffer out = f1_session_save(s);          /* байты сохранённой книги */
write_file("budget-edited.xlsx", out.data, out.len);
f1_buffer_free(out);
f1_session_free(s);

Полный рабочий пример для всех трёх ядер — open_save.c с Makefile, CMakeLists.txt и образцами файлов — лежит в каждом архиве в папке examples/c. Он открывает книгу, документ или презентацию, вносит правку и сохраняет результат.

Сборка

# Linux и macOS
cc open_save.c -I a4-c/include -L a4-c/lib -lf1 -la4 -lp2 -Wl,-rpath,a4-c/lib -o open_save

# или через pkg-config
cc open_save.c $(pkg-config --cflags --libs a4-c/pkgconfig/a4office.pc) -o open_save

Windows: MSVC — ссылка на .lib из папки lib, MinGW — на .dll.a; библиотеки .dll кладутся рядом с программой.

Платформы: Linux x86-64 и aarch64 (glibc 2.28 и новее), macOS 11 и новее (Apple silicon и Intel), Windows x64.

Что бесплатно

Без ключаС ключом разработчика
Документов в сутки3010 000
Срокбез срока90 дней с выдачи

Квоту платят открытие и сохранение файла в любом из трёх ядер — так же, как в пакете для Python. Ключ задаётся переменной A4OFFICE_LICENSE или файлом из A4OFFICE_LICENSE_FILE; где вести счёт — A4OFFICE_STATE_DIR; язык сообщений — A4OFFICE_LANGUAGE (для русских сообщений задайте ru). Ключ разработчика — по запросу на partner@a4-office.ru.

Чего нет

  • макросы VBA не исполняются — только сохраняются;
  • преобразования в PDF и картинок страниц в этом выпуске нет;
  • шрифты в библиотеку не встроены: ядро A4 берёт системные.

Когда документы нужно показать людям

Библиотека создаёт и меняет файлы внутри вашей программы. Показать их людям и дать править — задача Сервера A4 (редакторы в браузере), настольных редакторов A4 Документ, A4 Таблица и A4 Презентация и мобильного SDK для партнёров.

Скачать

Библиотека A4 для C и C++версия 2026.4.5 · пять платформ
Каталог архивов
ФайлРазмерПлатформа
a4-c-2026.4.5-linux-x64.tar.gz48 022 793 байтLinux x86-64 (glibc 2.28+)
a4-c-2026.4.5-linux-arm64.tar.gz44 273 080 байтLinux aarch64 (glibc 2.28+)
a4-c-2026.4.5-macos-arm64.tar.gz42 364 633 байтmacOS 11+, Apple silicon
a4-c-2026.4.5-macos-x64.tar.gz46 652 852 байтmacOS 11+, Intel
a4-c-2026.4.5-windows-x64.zip48 079 626 байтWindows x64 (MSVC и MinGW)
SHA256SUMS488 байтконтрольные суммы архивов

В каждом архиве: заголовки (include/), три библиотеки (lib/), файл pkg-config, пример с образцами (examples/c), описание по-русски и контрольные суммы всех файлов.

Контрольные суммы

84a1071e3f515ac5d1d7ac308a9e393643f9b99bea771d9a0ae40ff7c2d0be04  a4-c-2026.4.5-linux-arm64.tar.gz
28fe68c95c069f6b22c06a783d1cc071b4bf3fd7b9e14ccd9c761c5ca88aab55  a4-c-2026.4.5-linux-x64.tar.gz
0d12e77dea5b6cbb1ffa9c2a8b99764d126c1ef58c903b7d7bc82763e0730d83  a4-c-2026.4.5-macos-arm64.tar.gz
01754ab393277e4a96e425b184d2732f2ad1acc3348d3181cbc8661df39902e4  a4-c-2026.4.5-macos-x64.tar.gz
8bd6dd356834021a6a75946703186c610efa97d2f08061e33040607649c5ebdd  a4-c-2026.4.5-windows-x64.zip

Проверка после скачивания:

shasum -a 256 -c SHA256SUMS

Помощник по документации A4

Ответы собираются из документации и могут быть неточны — сверяйтесь с разделами по ссылкам.