Repository navigation
Features id
English · 简体中文 · 繁體中文 · Español · العربية · Français · Português (Brasil) · Deutsch · हिन्दी · 日本語 · 한국어 · Русский · Bahasa Indonesia · Türkçe · Italiano · Tiếng Việt
Halaman ini mencantumkan setiap elemen yang bisa ditambahkan docxi ke dokumen Word beserta opsi yang diterima masing-masing. Contoh-contohnya dibangun di atas penyiapan berikut:
require "docxi"
word = Docxi::Document.new
document = word.documentOpsi yang tidak Anda perlukan boleh dihilangkan. Warna berupa nilai heksadesimal tanpa #, misalnya "8B0000". Untuk satuan dan pengaturan halaman, lihat Konfigurasi.
document.p(options) { |p| ... } menambahkan paragraf.
| Opsi | Nilai | Efek |
|---|---|---|
align |
"left", "center", "right", "both"
|
Perataan. "both" meratakan teks kiri-kanan |
fill |
Warna heksadesimal | Arsiran latar di belakang paragraf dan teksnya |
left, right
|
Seperdua puluh poin | Indentasi. Atur keduanya, karena jika hanya satu, nilainya diabaikan |
ul |
true |
Menjadikan paragraf sebagai item daftar berpoin |
bottom |
true |
Menggambar batas di bawah paragraf |
Opsi teks seperti size:, bold:, atau color: juga bisa diberikan ke p. Opsi itu menjadi nilai bawaan untuk setiap run teks di paragraf tersebut.
Di dalam blok, Anda bisa memanggil text, br, tab, image, hyperlink, dan frame. document.text(string, options) adalah jalan pintas untuk paragraf yang hanya berisi satu run.
document.p(align: "both", left: 720, right: 720) do |p|
p.text "An indented, justified paragraph."
end
document.p(ul: true) { |p| p.text "A bullet item" }
document.text "A one-line paragraph", size: 14, bold: truep.text(string, options) menambahkan satu run teks.
| Opsi | Nilai | Efek |
|---|---|---|
bold |
true |
Tebal |
italic |
true |
Miring |
underline |
true |
Garis bawah tunggal |
color |
Warna heksadesimal | Warna teks |
size |
Poin | Ukuran font |
font |
Nama font | Font, misalnya "Georgia"
|
fill |
Warna heksadesimal | Arsiran latar di belakang teks |
space |
true |
Mempertahankan spasi di awal dan akhir teks |
br |
true |
Menambahkan pemisah baris setelah teks |
String nil dilewati.
document.p do |p|
p.text "Total: ", bold: true, space: true
p.text "$1,200", color: "007A33", font: "Georgia", size: 14
end-
p.br, ataup.br(times: 3), menambahkan pemisah baris di dalam paragraf. -
document.br(page: true)memulai halaman baru. -
p.tab, ataup.tab(times: 2), menambahkan karakter tab di dalam paragraf. -
document.tab(page: true)menambahkan paragraf yang hanya berisi satu tab.
Jangan memanggil document.br atau document.tab tanpa page: true. Keduanya menaruh run teks langsung di isi dokumen, dan itu bukan WordprocessingML yang valid.
document.p do |p|
p.text "Name:", br: true
p.tab
p.text "Signature line"
p.br(times: 2)
end
document.br(page: true)document.table(options) menerima blok. Di dalamnya, table.tr(options) menambahkan baris dan tr.tc(options) menambahkan sel.
Opsi tabel
| Opsi | Nilai | Efek |
|---|---|---|
columns_width |
Array angka | Lebar kolom, dikalikan 14.92 menjadi seperdua puluh poin. Juga menjadi lebar bawaan sel |
height |
Seperdua puluh poin | Tinggi minimum setiap baris |
iwidth |
Seperdua puluh poin | Indentasi tabel dari margin kiri |
style |
ID gaya | Gaya tabel. docxi mendefinisikan TableNormal dan TableCustom
|
width |
Angka | Lebar tabel yang diinginkan, ditulis dengan tipe auto. Tanpa columns_width, setiap sel juga mendapat lebar ini, dikalikan 14.92 |
align |
"left", "center", "right"
|
Perataan tabel. Teks yang ditambahkan dengan tc.text diratakan dengan cara yang sama |
padding |
true |
Menambahkan padding tetap di dalam sel |
borders |
Hash | Masalah yang diketahui: diterapkan ke setiap sel, bukan ke tepi luar tabel |
Opsi baris: height: mengatur tinggi minimum baris. Setiap opsi sel yang diberikan ke tr berlaku untuk setiap sel di baris tersebut. Opsi tabel diteruskan dengan cara yang sama ke setiap baris dan sel.
Opsi sel
| Opsi | Nilai | Efek |
|---|---|---|
borders |
{ top:, right:, bottom:, left: } |
Lebar batas dalam seperdelapan poin. nil berarti tidak ada batas di sisi itu |
fill |
Warna heksadesimal | Arsiran latar sel. Sel tanpa isian berwarna putih ("FFFFFF") |
valign |
"top", "center", "bottom"
|
Perataan vertikal |
colspan |
Bilangan bulat | Jumlah kolom yang direntang sel |
rowspan |
true |
Memulai penggabungan vertikal |
merged |
true |
Melanjutkan penggabungan vertikal dari sel di atasnya. Isinya diabaikan |
width |
Angka | Lebar sel, dikalikan 14.92 |
Isi sel
-
tc.text(string, options): opsi sel dan baris, sepertibold:ataualign:, juga berlaku untuk teks. -
tc.p(options) { |p| ... }: paragraf yang hanya memakai opsinya sendiri. -
tc.image(media, width:, height:): gambar. Lihat masalah ukurannya di bagian Gambar. -
tc.page_numbers: bidang nomor halaman. Masalah yang diketahui: diawali teks "GlobalOptions".
document.table(columns_width: [150, 150]) do |table|
table.tr do |tr|
tr.tc(rowspan: true, valign: "center", borders: { top: 4, right: 4, bottom: 4, left: 4 }) do |tc|
tc.text "Spans two rows"
end
tr.tc { |tc| tc.text "Row 1" }
end
table.tr do |tr|
tr.tc(merged: true)
tr.tc { |tc| tc.text "Row 2" }
end
endmedia = document.add_media(source) mendaftarkan gambar. source bisa berupa:
- objek IO, seperti
FileatauStringIO - path file
- URL
http,https, atauftp
Gambar dibaca saat Anda memanggil render dan selalu disimpan sebagai part PNG, jadi file PNG adalah pilihan yang aman.
Gambar sebaris: p.image(media, options) menempatkan gambar di dalam baris teks.
| Opsi | Nilai | Efek |
|---|---|---|
style |
Hash properti CSS | Ukuran, misalnya { width: "120pt", height: "60pt" }
|
title |
String | Judul gambar |
fill_color |
Warna VML seperti "#00FF00"
|
Isian di belakang gambar |
opacity |
String seperti "50%"
|
Opasitas isian |
wrap |
true |
Mematikan pembungkusan teks di sekitar gambar |
logo = document.add_media(File.open("logo.png", "rb"))
document.p(align: "center") { |p| p.image logo, style: { width: "120pt", height: "60pt" } }Gambar berposisi: p.image(media, pH:, pV:, wrap: true, width:, height:) menambatkan gambar dengan offset dari kolom (pH) dan dari paragraf (pV), dalam EMU. pH, pV, dan wrap harus diberikan semuanya, jika tidak gambar ditempatkan sebaris.
Gambar header: h.image(media, align:, width:, height:, pH:, pV:, behind:, wrap:). wrap: "none" mematikan pembungkusan. Nilai lain mana pun membuat teks membungkus gambar dalam bentuk persegi.
Masalah yang diketahui di 0.1.0: gambar berposisi, gambar header, dan gambar di sel tabel menghitung lebar sekaligus tingginya sebagai width * height * 14.92 EMU. Hasilnya selalu persegi dan biasanya sangat kecil. Gambar sebaris yang ukurannya diatur dengan style: tidak terpengaruh. Lihat Praktik terbaik untuk solusi sementaranya.
header = Docxi::Word::Headers::Header.new do |h|
h.text "Quarterly report", size: 9, align: "right"
end
footer = Docxi::Word::Footers::Footer.new do |f|
f.page_numbers name: "Page", align: "center"
end
document.add_header(header)
document.add_footer(footer)
document.add_first_header(Docxi::Word::Headers::Header.new { |h| h.text "Cover page" })- Header dapat berisi
text,br,table,image, danpage_numbers. Footer dapat berisitext,br,table, danpage_numbers. - Opsi yang diberikan ke
Header.newatauFooter.newberlaku untuk teksnya. -
add_headerdanadd_footerberlaku mulai halaman 2. Halaman 1 selalu memakaiadd_first_headerdanadd_first_footer. Lihat Konfigurasi.
page_numbers(name: "Page", align: "center") menulis teks name diikuti bidang PAGE. Nomornya ditampilkan dengan Arial 10 pt berwarna abu-abu gelap. Nilai bawaan align adalah "right".
Masalah yang diketahui: kode bidang ditulis tanpa garis miring terbalik pada \* MERGEFORMAT.
document.table_of_content do |toc|
toc.add_row "Introduction", 1
toc.add_row "Appendix", 7, leader: "hyphen", pos: 8000
toc.add_row "Notes"
end-
add_row(text, page = nil, leader: "dot", pos: 9360). - Jika diberi nomor halaman, entri mendapatkan perhentian tab rata kanan di
pos(dalam seperdua puluh poin; 9360 sama dengan 6,5 inci) yang diisi karakterleader. Nilai karakter pengisi berasal dari WordprocessingML, seperti"dot","hyphen","underscore","middleDot", dan"none". - Tanpa nomor halaman, entri berupa teks setelah satu tab.
- Nomor halamannya adalah yang Anda berikan. docxi tidak membuat bidang TOC Word dan tidak menghitung halaman.
url = "https://github.com/hammad417/docxi"
link = document.add_hyperlink(url)
document.p { |p| p.hyperlink "docxi on GitHub", url, link }add_hyperlink(url) mengembalikan ID relasi, dan hyperlink(text, url, id) menempatkan tautannya. Tujuannya diambil dari relasi, jadi berikan ID yang dikembalikan untuk URL yang Anda inginkan. Hanya tautan eksternal yang didukung.
document.p do |p|
p.frame(style: "width:200pt;height:40pt") do |f|
f.text "Text inside a box"
end
end
document.frame "A box with one line", style: "width:200pt;height:30pt"- Bingkai adalah kotak teks VML dengan isian abu-abu muda semi-transparan dan garis tepi hitam yang tetap. Teks berada di atas dan di bawahnya.
- Di dalam bingkai, Anda bisa memanggil
text,br,tab,image, danframe. -
spacing: truemenambahkan jarak sebelum teks.
word.render mengembalikan StringIO yang berisi paket .docx lengkap. Arsipnya ditulis tanpa rekaman Zip64, sehingga Google Docs dan versi LibreOffice yang lebih lama bisa membukanya. Arsitektur mencantumkan setiap part dalam paket.
- Contoh penggunaan
- Referensi API
- Peta jalan, untuk masalah yang diketahui dan direncanakan untuk 0.2.0
docxi wiki · README · Installation · Troubleshooting · Report an issue · MIT License
Start
Build documents
Help
Project
Links
Languages