Skip to content

Integrations id

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

Memakai docxi dengan Rails, Rack, dan job latar belakang

docxi tidak punya plugin dan tidak punya integrasi bawaan. docxi adalah Ruby biasa yang mengembalikan StringIO, sehingga bisa dipakai di mana pun Anda dapat mengirim atau menyimpan string. Halaman ini menunjukkan cara-cara umum untuk menghubungkannya. Pola controller Rails di sini sama dengan yang ada di README, dan rangkaian pengujiannya dijalankan dengan Rails 5.2 sampai 8.1 dalam keadaan termuat.

Controller Rails: mengirim file ke browser

class ReportsController < ApplicationController
  def show
    word = Docxi::Document.new
    word.document.p { |p| p.text "Report for #{Date.today}" }

    send_data word.render.string,
              filename: "report.docx",
              type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
  end
end

send_data mengatur Content-Disposition: attachment, sehingga browser mengunduh file tersebut. Dengan Bundler, docxi dimuat otomatis dari Gemfile.

Job latar belakang Rails: membuat file di luar permintaan

Dokumen besar, atau dokumen yang dibangun dari kueri yang lambat, lebih baik dibuat di sebuah job:

class MonthlyReportJob < ApplicationJob
  queue_as :default

  def perform(path)
    word = Docxi::Document.new
    word.document.p { |p| p.text "Monthly report", bold: true, size: 16 }

    File.binwrite(path, word.render.string)
  end
end

Job tersebut menulis ke path yang Anda pilih. Ke mana file itu pergi selanjutnya, misalnya ke penyimpanan atau email, diatur oleh aplikasi Anda.

Rack dan framework lain

Aplikasi Rack apa pun bisa langsung mengembalikan byte-nya:

require "docxi"

class ReportApp
  def call(env)
    word = Docxi::Document.new
    word.document.p { |p| p.text "Generated by a Rack app" }

    headers = {
      "content-type" => "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
      "content-disposition" => 'attachment; filename="report.docx"'
    }
    [200, headers, [word.render.string]]
  end
end

Pasang dengan run ReportApp.new di config.ru. Pendekatan yang sama berlaku untuk Sinatra, Hanami, atau framework apa pun yang bisa mengirim string sebagai badan respons.

Skrip dan alat baris perintah

docxi tidak memerlukan server maupun perangkat lunak perkantoran, jadi skrip Ruby biasa sudah cukup:

require "docxi"

word = Docxi::Document.new
word.document.p { |p| p.text "Nightly export" }
File.binwrite(ARGV.fetch(0, "export.docx"), word.render.string)

Halaman terkait


← Beranda wiki · README

Clone this wiki locally