Реалізація перегляду офісних документів в мобільному додатку

TRUETECH займається розробкою, підтримкою та обслуговуванням мобільних додатків iOS, Android, PWA. Маємо великий досвід та експертизу для публікації мобільних додатків до популярних маркетів Google Play, App Store, Amazon, AppGallery та інші.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1735 послуг
Реалізація перегляду офісних документів в мобільному додатку
Середній
~2-3 дні
Часті запитання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

Імплементація просмотру офісних документів у мобільному застосунку

.docx, .xlsx, .pptx — Office Open XML формати на основі ZIP-архівів з XML всередину. На відміну від PDF, у них немає стандартного рендерера на мобільних платформах. Кожен виробник вирішує це по-своєму: Microsoft надає SDK, Google — Document Viewer API, решта — сторонні бібліотеки з змінною якістю рендеринга таблиць та формул.

Три стратегії

1. Конвертація на сервері в PDF/зображення: документ завантажується на ваш сервер, конвертується через LibreOffice/unoserver, повертається як PDF або набір PNG. На клієнт — готовий для відображення формат. Плюси: передбачуваний рендеринг, немає залежності від мобільного SDK. Мінуси: затримка конвертації, передача документа через сервер (GDPR-питання для чутливих даних).

2. Нативний просмотрщик ОС: відкрити документ у системному застосунку (Microsoft Office, QuickLook на iOS). Виходимо за межі свого застосунку — іноді неприйнятно.

3. Клієнтська бібліотека рендеринга: вбудований рендерер у React Native/Flutter. Обмежена підтримка форматів, але без залежності від серверу.

iOS: QuickLook та QLPreviewController

iOS надає QLPreviewController — системний просмотрщик, що підтримує .docx, .xlsx, .pptx, .pdf, .txt, зображення, архіви. Вбудовується у застосунок через нативний модуль:

@objc func previewDocument(_ filePath: String) {
    DispatchQueue.main.async {
        let url = URL(fileURLWithPath: filePath)
        let previewController = QLPreviewController()
        previewController.dataSource = self
        UIApplication.shared.windows.first?.rootViewController?
            .present(previewController, animated: true)
    }
}

QuickLook рендерить Microsoft-документи через системний рушій — якість ідентична Microsoft Office на iOS. Обмеження: лише перегляд, без редагування.

У React Native: react-native-doc-viewer використовує QLPreviewController під капотом для iOS.

Android: немає єдиного системного просмотрщика

Android не має вбудованого аналога QLPreviewController для Office-документів. Опції:

Intent ACTION_VIEW: запускає зовнішній застосунок (Google Drive Docs, Microsoft Office, WPS Office). Користувач має мати хоча б один. Якщо немає — застосунок крешить з ActivityNotFoundException. Обов'язкова перевірка:

val intent = Intent(Intent.ACTION_VIEW).apply {
    setDataAndType(fileUri, getMimeType(filePath))
    flags = Intent.FLAG_GRANT_READ_URI_PERMISSION
}
val resolveInfo = packageManager.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY)
if (resolveInfo != null) {
    startActivity(intent)
} else {
    // Fallback: пропозиція встановити Google Docs або відкрити як PDF
}

Aspose.Words for Android via Java: комерційний SDK, рендерить .docx без встановленого Office. Якість близька до Microsoft Word. Ліцензія від $999/рік.

Android WebView + Google Docs Viewer: https://docs.google.com/viewer?url=<encoded_url>. Працює для публічних файлів. Для приватних — тимчасово розмістити файл на доступному URL або використовувати Google Drive API для шерингу.

react-native-doc-viewer: кросплатформна обгортка

import FileViewer from 'react-native-file-viewer';
import RNFS from 'react-native-fs';

const openDocument = async (url: string, filename: string) => {
  const localPath = `${RNFS.CachesDirectoryPath}/${filename}`;
  const exists = await RNFS.exists(localPath);
  if (!exists) {
    await RNFS.downloadFile({ fromUrl: url, toFile: localPath }).promise;
  }
  await FileViewer.open(localPath, {
    showOpenWithDialog: true,
    showAppsSuggestions: true,
  });
};

На iOS FileViewer використовує QLPreviewController. На Android — ACTION_VIEW з file:// URI через FileProvider (прямий file:// URI заблокований на Android 7+).

Конвертація на сервері: LibreOffice Headless

Для максимальної сумісності та privacy:

libreoffice --headless --convert-to pdf --outdir /output /input/document.docx

unoserver — REST API над LibreOffice для production-використання. Конвертація типового .docx займає 1–3 секунди. Кешуємо результат по хешу файлу — не конвертуємо одне й те ж дважди.

Порівняння підходів

Підхід iOS Android Privacy Затримка
QLPreviewController Відлично Висока Немає
Intent + сторонні Залежить Середня Немає
Server conversion Відлично Відлично Низька 1–5 сек
Aspose SDK Відлично Відлично Висока Немає
Google Docs Viewer Добре Добре Низька 2–4 сек

Оцінка

QuickLook + Android Intent з fallback на серверну конвертацію: 2–4 тижні. З кешуванням та офлайн-підтримкою: 4–6 тижнів.