Skip to content

Troubleshooting ru

Hammad Maqbool edited this page Oct 29, 2026 · 1 revision

English · 简体中文 · 繁體中文 · Español · العربية · Français · Português (Brasil) · Deutsch · हिन्दी · 日本語 · 한국어 · Русский · Bahasa Indonesia · Türkçe · Italiano · Tiếng Việt

Устранение неполадок docxi: ошибки установки, ошибки выполнения и испорченные документы

Найдите свой симптом ниже. Большинство проблем в старых приложениях вызваны docxi 0.0.x, и обновление до 0.1.0 устраняет их без изменения кода.

Установка

Bundler не находит совместимые версии nokogiri в приложении на Rails 6+. docxi 0.0.6 фиксирует nokogiri < 1.7, а всем версиям Rails начиная с 6.0 нужен nokogiri 1.8.5 или новее. Используйте gem "docxi", "~> 0.1".

Bundler не находит совместимые версии rubyzip. docxi 0.0.6 фиксирует rubyzip ~> 0.9.9, что конфликтует с любым гемом, которому нужен более новый rubyzip. docxi 0.1.0 принимает rubyzip от 1.3 до 3.x.

Bundler продолжает устанавливать 0.0.6. Либо Gemfile фиксирует docxi на версии 0.0.x, например через "~> 0.0.6", либо версия Ruby ниже 2.5, а 0.1.0 требует как минимум 2.5. Замените строку в Gemfile на gem "docxi", "~> 0.1" и проверьте ruby -v.

nokogiri не компилируется. Для вашей платформы нет подходящего предкомпилированного гема nokogiri, поэтому он собирается из исходников. Установите компилятор C и следуйте руководству по установке nokogiri.

Ошибки при создании документа

NoMethodError: undefined method 'present?' вне Rails. docxi 0.0.6 рассчитывал, что ActiveSupport уже загружен. Версии 0.1.0 он не нужен.

NameError при вызове tab, frame или page_numbers верхнего колонтитула. В 0.0.6 эти методы не работали, а в 0.1.0 работают, включая document.frame("text").

Errno::ENOENT при добавлении изображения. Путь не существует относительно каталога, в котором запущена программа. В Ruby 3 с docxi 0.0.6 так же падают и URL изображений, потому что 0.0.6 использовал Kernel#open. 0.1.0 скачивает URL через URI#open.

Документы, которые выглядят неправильно

Google Docs или LibreOffice не открывают файл. docxi 0.0.6 с rubyzip 3 записывает записи Zip64 в каждую запись архива, а эти программы их отклоняют. 0.1.0 записывает архивы без них.

На первой странице нет колонтитулов. docxi задаёт первой странице собственные колонтитулы. Установите их через add_first_header и add_first_footer. См. Настройка.

Пропало поле или макет страницы выглядит неправильно. Задавая поля, передавайте top, right, bottom и left вместе. Пропущенные значения записываются пустыми.

Пропадают пробелы между фрагментами текста. Word удаляет пробелы в начале или в конце фрагмента. Добавьте space: true в этот вызов text.

Изображения в колонтитулах, в ячейках таблиц или с pH/pV получаются крошечными или квадратными. Известная проблема 0.1.0: их размер вычисляется как width * height * 14.92 EMU по обоим измерениям. Используйте встроенные изображения с размером, заданным через style:, или обходной путь из раздела Рекомендации.

Изображение пропадает при повторном формировании того же документа. Изображения, добавленные из открытого File или другого IO, читаются во время render, и при повторном формировании читается пустой поток. Передавайте путь или формируйте документ один раз.

Границы, заданные для table, появляются вокруг каждой ячейки. Известная проблема: borders: на уровне таблицы применяются к каждой ячейке, а не к внешнему контуру таблицы. Чтобы нарисовать только контур, задайте borders: для крайних ячеек и только для их внешних сторон.

Номера страниц в ячейках таблиц начинаются с «GlobalOptions». Известная проблема TableCell#page_numbers. Размещайте номера страниц в колонтитулах.

Изображение JPEG или GIF выглядит неправильно или не отображается. Каждое изображение сохраняется как часть PNG с типом содержимого PNG, независимо от реального формата, поэтому некоторые программы могут не показывать другие форматы. Перед добавлением преобразуйте изображения в PNG.

Как заглянуть в созданный файл

.docx — это zip-архив, поэтому его содержимое можно посмотреть:

unzip -l report.docx
unzip -p report.docx word/document.xml

Если проблема осталась, создайте issue с коротким скриптом, который её воспроизводит, и версиями Ruby, docxi, nokogiri и rubyzip.

Связанные страницы


← Главная вики · README

Clone this wiki locally