13 KiB
QOffice
QOffice — оригинальная основа кроссплатформенного офисного пакета с четырьмя приложениями:
- QWord: редактор документов
- QExcell: редактор таблиц
- QPowerPoint: редактор презентаций
- QOutlook: локальное рабочее пространство почты
Репозиторий не содержит код, ресурсы, брендинг, иконки или проприетарные UI-материалы Microsoft Office.
Запуск
npm install
npm run dev
Прямые web-пути отдельных приложений: /qword, /qexcell, /qpowerpoint, /qoutlook.
Desktop-оболочка
npm run electron:dev
Отдельные desktop-запуски приложений:
npm run electron:qword
npm run electron:qexcell
npm run electron:qpowerpoint
npm run electron:qoutlook
Electron также принимает аргумент --qoffice-app=qword|qexcell|qpowerpoint|qoutlook.
Проверка
npm run test
npm run build
Поддержка форматов
- QWord открывает
.docxи сохраняет.docx; при импорте базовых DOCX-абзацев читает заголовки WordHeading 1/Heading 2/Heading 3, выравнивание, отступыw:ind, переносы строк, разрывы страниц, табуляцию, закладки, внешние и внутренние гиперссылки-якоря, маркированные и нумерованные списки черезw:numPr/numbering.xml, простые таблицы, базовые растровые изображения, явные цвета текста, подсветку, размер и семейство шрифта из OOXML, а при экспорте DOCX сохраняются заголовки HTMLh1/h2/h3, абзацы, переносы строк, разрывы страниц, табуляция, выравнивание и отступы абзацев из HTMLmargin-left/text-indent, закладки из HTMLid, списки, простые таблицы, внешние и внутренние гиперссылки-якоря, базовые растровые изображения и базовое inline-форматирование текста: полужирный, курсив, подчеркивание, зачеркивание, цвет текста, подсветка, размер и семейство шрифта. - QExcell открывает
.xlsxи сохраняет.xlsx; сетка расширяется по фактически заполненным ячейкам, поддерживает несколько листов, скрытые и veryHidden листы черезsheet state, закрепленные области черезsheetViews pane, скрытие сетки черезsheetView showGridLines, масштаб листа черезsheetView zoomScale, автофильтр черезautoFilter ref, область печати через_xlnm.Print_Area, цвет вкладки листа черезsheetPr tabColor, ширину и скрытие колонок черезcols/col widthиcol hidden, высоту и скрытие строк черезrow ht/customHeightиrow hidden, управление скрытием выбранной строки и столбца в интерфейсе, активный лист черезworkbookView activeTab, формулы за пределами стартового диапазона A-H, shared formulas XLSX с относительными ссылками, базовые merged cells, внешние и внутренние гиперссылки ячеек, legacy-заметки ячеек черезcomments.xmlи VMLlegacyDrawing, базовые диаграммы листа и базовое форматирование ячеек: полужирный, курсив, подчеркивание, зачеркивание, размер и семейство шрифта, прямые RGB/theme/indexed цвета текста с учетомxl/theme/theme1.xml, заливку, горизонтальное и вертикальное выравнивание, перенос текста, границы и цвет границ ячеек, числовые форматы XLSX для дат, процентов, денежных и дробных значений. - QPowerPoint открывает
.pptxи сохраняет.pptx; импорт учитывает порядок слайдов изpresentation.xml, переносы абзацев и ручные переносы строкa:brвнутри текстовых блоков, маркированные и нумерованные списки подзаголовка черезa:buChar/a:buAutoNum, внешние ссылки текста заголовка/подзаголовка и изображений черезa:hlinkClickи hyperlink relationships, скрытые слайды через атрибутshow, переходыp:transitionдляfade/push/wipe, а также заметки докладчика через relationships слайда, сохраняет скрытые слайды, переходы слайдов, заметки докладчика, внешние ссылки текста заголовка/подзаголовка и изображений, базовые растровые изображения слайдов, пользовательский цвет фона слайда, списки подзаголовка, а также цвет, размер и семейство шрифта текста заголовка/подзаголовка. - QOutlook открывает
.emlи одиночные сообщения Outlook.msg, сохраняет письма в.eml; импорт EML поддерживает простые текстовые письма,multipart/alternative,multipart/mixed,multipart/related,text/plain, fallback изtext/htmlв читаемый текст, base64, quoted-printable, MIME encoded-word заголовки UTF-8/windows-1251, MIME-вложения и inline-вложения сContent-ID,To,Cc,Bcc,Reply-To,Message-ID,In-Reply-To,References,Importance,X-PriorityиPriority. Импорт MSG читает тему, отправителя, получателейTo/Cc/Bcc,Reply-To,Message-ID,In-Reply-To,References,Importance,X-PriorityиPriorityиз транспортных заголовков, текст/HTML body и вложения, если эти поля доступны в MSG-файле. Новые письма можно адресовать черезTo/Cc/Bcc, задаватьReply-Toи сохранять в EML вместе с добавленными файлами..pstи экспорт в.msgпока не реализованы. - QOutlook сохраняет HTML-тело импортированных EML/MSG писем в модели письма, показывает его в панели чтения через ограниченный HTML-preview без скриптов и экспортирует письма с HTML-телом в EML как
multipart/alternative; при наличии вложений HTML и текстовая версии вкладываются внутрьmultipart/mixed.
В desktop-режиме Electron используются системные диалоги открытия и сохранения файлов. В web-режиме остаются браузерный выбор файла и скачивание результата.
Экспорт PDF в desktop-режиме выполняется через Electron webContents.printToPDF; в web-режиме команда открывает браузерную печать, где пользователь может выбрать сохранение в PDF.
Desktop-меню поддерживает системные команды для активного модуля:
Ctrl/Cmd+O: открыть файл текущего приложения.Ctrl/Cmd+S: сохранить файл текущего приложения.Ctrl/Cmd+Shift+E: экспортировать текущую рабочую область в PDF.Ctrl/Cmd+P: печать текущей рабочей области.
Импорт и экспорт реализуют базовую совместимость с Office Open XML, EML и чтением MSG: текст, базовое inline-форматирование, явные w:br, w:br w:type="page", w:tab, w:color, w:shd, w:highlight, w:sz, w:rFonts и w:strike для переносов строк/разрывов страниц/табуляции/цвета/подсветки/размера/семейства/зачеркивания текста DOCX, выравнивание и отступы абзацев DOCX через w:jc/w:ind, закладки DOCX через w:bookmarkStart/w:bookmarkEnd, внешние w:hyperlink r:id и внутренние w:hyperlink w:anchor гиперссылки DOCX, маркированные и нумерованные списки DOCX через w:numPr и numbering.xml, внешние и внутренние гиперссылки XLSX, legacy-заметки ячеек XLSX через comments.xml, relationship comments, VML vmlDrawing и legacyDrawing, базовые растровые изображения DOCX/PPTX, простые таблицы, несколько листов, скрытые/veryHidden листы через sheet state, закрепленные области через sheetViews pane, скрытие сетки через sheetView showGridLines, масштаб листа через sheetView zoomScale, автофильтр через autoFilter ref, область печати XLSX через _xlnm.Print_Area, цвет вкладки листа через sheetPr tabColor, ширину и скрытие колонок через cols/col width/col hidden, высоту и скрытие строк через row ht/customHeight/row hidden и активный лист XLSX через workbookView activeTab, ячейки, формулы, shared formulas XLSX с относительными ссылками, базовые merged cells, базовые стили, RGB/theme/indexed цвета XLSX с учетом xl/theme/theme1.xml, размеры и семейства шрифта, зачеркивание ячеек, горизонтальное и вертикальное выравнивание, перенос текста, границы и цвет границ ячеек, числовые форматы и простые bar/line/pie диаграммы ячеек XLSX, текстовые слайды PPTX с переносами абзацев и ручными переносами строк a:br при импорте, внешние ссылки текста заголовка/подзаголовка и изображений PPTX через a:hlinkClick и hyperlink relationships, скрытые слайды PPTX через атрибут show, переходы PPTX через p:transition для fade/push/wipe, пользовательский фон слайдов PPTX, цвет, размер и семейство шрифта текста заголовка/подзаголовка PPTX, импорт и экспорт заметок докладчика, адресацию To/Cc/Bcc/Reply-To, заголовки цепочки писем Message-ID/In-Reply-To/References, заголовки приоритета Importance/X-Priority/Priority, MIME encoded-word заголовки UTF-8/windows-1251, MIME-вложения EML, inline-вложения EML с Content-ID и базовые поля одиночных MSG-писем. Сложные стили, макросы, сложные диаграммы, сложное позиционирование и обтекание изображений, PST, экспорт MSG и полная fidelity документов Microsoft Office в текущем инкременте не заявлены.
Для QOutlook EML round-trip дополнительно покрывает HTML body через multipart/alternative без вложений и с вложениями внутри multipart/mixed.
Сборка пакета
npm run dist:desktop