Files
Notare/README.md
mathias234 1f5576e5d8
All checks were successful
CI Pipeline / build (pull_request) Successful in 18s
Add examples to readme
2025-12-02 11:44:35 +01:00

235 lines
4.4 KiB
Markdown

# Ezdoc
A Ruby gem for creating docx files with a simple DSL
## Installation
Add this line to your application's Gemfile:
```ruby
gem 'ezdoc'
```
And then execute:
$ bundle install
Or install it yourself as:
$ gem install ezdoc
## Usage
### Basic Example
```ruby
require 'ezdoc'
Ezdoc::Document.create("output.docx") do |doc|
doc.p "Hello World"
end
```
### Paragraphs
```ruby
Ezdoc::Document.create("output.docx") do |doc|
# Simple paragraph
doc.p "This is a paragraph."
# Paragraph with multiple text runs
doc.p do
doc.text "First part. "
doc.text "Second part."
end
end
```
### Text Formatting
Formatting uses nested blocks. Nesting combines formatting styles.
```ruby
Ezdoc::Document.create("output.docx") do |doc|
doc.p do
doc.text "Normal text "
doc.b { doc.text "bold" }
doc.text " and "
doc.i { doc.text "italic" }
doc.text " and "
doc.u { doc.text "underlined" }
end
# Nested formatting (bold + italic)
doc.p do
doc.b do
doc.i { doc.text "bold and italic" }
end
end
end
```
### Lists
#### Bullet Lists
```ruby
Ezdoc::Document.create("output.docx") do |doc|
doc.ul do
doc.li "First item"
doc.li "Second item"
doc.li { doc.b { doc.text "Bold item" } }
end
end
```
#### Numbered Lists
```ruby
Ezdoc::Document.create("output.docx") do |doc|
doc.ol do
doc.li "First"
doc.li "Second"
doc.li "Third"
end
end
```
### Tables
```ruby
Ezdoc::Document.create("output.docx") do |doc|
doc.table do
doc.tr do
doc.td "Header 1"
doc.td "Header 2"
end
doc.tr do
doc.td "Cell 1"
doc.td { doc.b { doc.text "Bold cell" } }
end
end
end
```
### Images
Images can be added to paragraphs, table cells, and list items. Supports PNG and JPEG formats.
```ruby
Ezdoc::Document.create("output.docx") do |doc|
# Simple image (uses native dimensions)
doc.p do
doc.image "photo.png"
end
# Image with explicit dimensions (inches, cm, or pixels)
doc.p do
doc.image "logo.png", width: "2in", height: "1in"
end
# Specify only width (height auto-calculated to maintain aspect ratio)
doc.p do
doc.image "banner.jpg", width: "5cm"
end
# Image with text in the same paragraph
doc.p do
doc.text "Company Logo: "
doc.image "logo.png", width: "0.5in", height: "0.5in"
end
# Image in a table cell
doc.table do
doc.tr do
doc.td "Product"
doc.td do
doc.image "product.jpg", width: "1in", height: "1in"
end
end
end
# Image in a list item
doc.ul do
doc.li do
doc.image "icon.png", width: "16px", height: "16px"
doc.text " List item with icon"
end
end
end
```
### Complete Example
```ruby
Ezdoc::Document.create("report.docx") do |doc|
doc.p "Monthly Report"
doc.p do
doc.text "This report contains "
doc.b { doc.text "important" }
doc.text " information."
end
doc.p "Key Points:"
doc.ul do
doc.li "Revenue increased by 15%"
doc.li "Customer satisfaction improved"
doc.li { doc.i { doc.text "See appendix for details" } }
end
doc.p "Summary Table:"
doc.table do
doc.tr do
doc.td "Metric"
doc.td "Value"
end
doc.tr do
doc.td "Revenue"
doc.td "$1.2M"
end
doc.tr do
doc.td "Growth"
doc.td { doc.b { doc.text "15%" } }
end
end
end
```
## API Reference
| Method | Description |
|--------|-------------|
| `p(text)` | Create a paragraph with text |
| `p { }` | Create a paragraph with block content |
| `text(value)` | Add text to the current context |
| `b { }` | Bold formatting |
| `i { }` | Italic formatting |
| `u { }` | Underline formatting |
| `ul { }` | Bullet list |
| `ol { }` | Numbered list |
| `li(text)` | List item with text |
| `li { }` | List item with block content |
| `table { }` | Table |
| `tr { }` | Table row |
| `td(text)` | Table cell with text |
| `td { }` | Table cell with block content |
| `image(path, width:, height:)` | Insert image (PNG/JPEG). Dimensions: `"2in"`, `"5cm"`, `"100px"`, or integer pixels |
## Development
After checking out the repo, run `bundle install` to install dependencies. Then, run `rake test` to run the tests.
```bash
bundle install
bundle exec rake test # Run tests
bundle exec rake rubocop # Run linter
bundle exec rake # Run both
```
## License
The gem is available as open source under the terms of the [MIT License](LICENSE.txt).