1. 产品
  2.   字处理
  3.   Ruby
  4.   Caracal
 
  

用于 Word DOCX 创建和处理的免费 Ruby API 

开源 Ruby 库,使程序员能够制作专业的 Office Word 文档、修改 DOCX 文件、添加页边距、使用类似 HTML 的语法插入嵌套表格。

Caracal 库使 Ruby 开发人员能够使用类似 HTML 的语法在他们自己的应用程序中生成专业的 Office Word 文档。该库使开发人员能够使用一些简单的命令来创建和管理 Office Open XML (OOXML),从而使他们的工作变得轻松。该库是开源的,可在 MIT 许可下使用。

该库设计得非常好,它将文档解析指令与处理指令分开。这种策略为渲染过程提供了很大的灵活性。该库包含与 Word 文档处理相关的几个重要功能,例如 Word 文档创建、设置页面大小、页边距支持、分页符、页码、字体支持、样式和格式支持、添加段落、使用链接和书签、插入表格,嵌套表格支持,图像支持等等。

Previous Next

开始使用 Caracal

请添加以下命令应用程序的 Gemfile 以顺利使用该库。

通过将代码添加到应用程序的 Gemfile 来安装 Caracal

 gem 'caracal'

通过将代码添加到应用程序的 Gemfile 来安装 Caracal

bundle install

使用 Ruby 创建 Word Docx 文件

开源 Caracal 库使 Ruby 开发人员能够使用 Ruby 代码在其应用程序中生成 DOCX 文件。 DOCX 文件格式是 XML 文档的压缩集合,使用 OOXML 标准创建。该库通过创建文档的整个结构并将其压缩为输出文档来帮助程序员。该库支持修改现有文件、调整页面大小、设置边距、应用样式等等。

通过Ruby Caracas图书馆创建Word文档

Caracal::Document.save 'example.docx' do |docx|
  # page 1
  docx.h1 'Page 1 Header'
  docx.hr
  docx.p
  docx.h2 'Section 1'
  docx.p  'Lorem ipsum dolor....'
  docx.p
  docx.table @my_data, border_size: 4 do
    cell_style rows[0], background: 'cccccc', bold: true
  end
  # page 2
  docx.page
  docx.h1 'Page 2 Header'
  docx.hr
  docx.p
  docx.h2 'Section 2'
  docx.p  'Lorem ipsum dolor....'
  docx.ul do
    li 'Item 1'
    li 'Item 2'
  end
  docx.p
  docx.img 'https://www.example.com/logo.png', width: 500, height: 300
end

在 Word 文件中添加表格和嵌套表格

免费的 Caracal 库使软件开发人员只需几行 Ruby 代码即可在其 Word 文档中添加和修改表格。该库包含几个与表格管理相关的重要功能,例如添加标题、添加新列和行、设置顶部、底部或左右两侧的样式、将样式应用于特定单元格、合并或拆分单元格等等。该库还包括对嵌套表的支持。

在 Word 文档中使用列表

开源 Caracal 库支持使用 Ruby 命令在 DOCX 文件中使用列表。该库允许在 word 文档中添加有序列表和无序列表。它还支持深度嵌套列表和其他组合的混合。您可以轻松地为列表定义样式。该库支持有序列表和无序列表的 9 级默认样式。

如何通过Ruby图书馆在Word文档中使用清单

docx.ol do
  li 'First item'
  li do
    text 'Second item with a '
    link 'link', 'http://www.google.com'
    text '.'
    br
    text 'This sentence follows a line break.'
  end
end

将段落和书签插入 DOCX 文件

Caracal 库提供了轻松将段落添加到其 Word 文档的功能。该库包含了几个与段落处理相关的功能,例如文本对齐、字体选择、定义字体颜色和字体大小设置背景颜色、应用垂直对齐等。它还支持轻松地将书签直接插入文档或段落块内。

通过Ruby图书馆向Word文档添加书签

# document-level bookmark
dox.bookmark_start id: 's1', name: 'section1'
docx.h2 'Section Heading'
docx.bookmark_end id: 's1'
docx.p  'Section content.'
# pargraph-level bookmark
docx.h2 'Section Heading'
docx.p do
  text 'Pretend this paragraph has a lot of text and we want to bookmark '
  bookmark_start id: 'p1', name: 'phrase1'
  text 'a single phrase'
  bookmark_end id: 'p1'
  text ' inside the larger block.'
end
 中国人