unipdf/creator/list_test.go
2019-05-16 20:44:51 +00:00

156 lines
3.0 KiB
Go

/*
* This file is subject to the terms and conditions defined in
* file 'LICENSE.md', which is part of this source code package.
*/
package creator
import (
"fmt"
"testing"
"github.com/unidoc/unipdf/v3/model"
)
func TestListSimple(t *testing.T) {
red := ColorRGBFrom8bit(255, 0, 0)
c := New()
c.NewPage()
list := c.NewList()
// Add some paragraphs to the list.
items := []string{
"Apples",
"Oranges",
"Apricots",
"Cherries",
"Cranberries",
"Grapes",
"Lemons",
}
for _, item := range items {
sp := c.NewStyledParagraph()
sp.Append(item).Style.Color = red
list.Add(sp)
}
// Shortcut used to add paragraphs to the list.
list.AddTextItem("Prunes")
list.AddTextItem("Watermelons")
list.AddTextItem("Pineapples")
list.AddTextItem("Clementines")
err := c.Draw(list)
if err != nil {
t.Fatalf("Error drawing: %v", err)
}
// Write output file.
err = c.WriteToFile(tempFile("list_simple.pdf"))
if err != nil {
t.Fatalf("Fail: %v\n", err)
}
}
func TestListAdvanced(t *testing.T) {
fontHelveticaBold := model.NewStandard14FontMustCompile(model.HelveticaBoldName)
red := ColorRGBFrom8bit(255, 0, 0)
blue := ColorRGBFrom8bit(0, 0, 255)
c := New()
c.NewPage()
list := c.NewList()
// Add list item.
list.AddTextItem("Fruit:")
items := []string{
"Apple",
"Orange",
"Apricot",
"Cherry",
"Cranberry",
"Grape",
"Lemon",
}
// Add a new list to the main list.
fruitList := c.NewList()
fruitList.Marker().Text = "- "
for _, item := range items {
sp := c.NewStyledParagraph()
sp.Append(item).Style.Color = red
fruitList.Add(sp)
}
list.Add(fruitList)
// Add list item.
list.AddTextItem("Vegetables:")
items = []string{
"Chilly",
"Tomato",
"Potato",
"Cucumber",
"Ginger",
"Garlic",
"Onion",
}
// Add another list to the main list.
vegList := c.NewList()
vegList.Marker().Style.Font = fontHelveticaBold
for i, item := range items {
sp := c.NewStyledParagraph()
sp.Append(item).Style.Color = blue
marker, _ := vegList.Add(sp)
marker.Text = fmt.Sprintf("%d. ", i+1)
}
// Hide the marker for the newly added list item.
marker, _ := list.Add(vegList)
marker.Text = ""
// Add a long item to the list.
list.AddTextItem("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.")
// Add nested lists
nestedList := c.NewList()
currentList := nestedList
for i := 0; i < 5; i++ {
l := c.NewList()
l.Marker().Text = "- "
l.SetIndent(10)
l.AddTextItem(fmt.Sprintf("Nesting level %d", i+1))
l.AddTextItem(fmt.Sprintf("Nesting level %d", i+1))
l.AddTextItem(fmt.Sprintf("Nesting level %d", i+1))
currentList.Add(l)
currentList = l
}
list.Add(nestedList)
err := c.Draw(list)
if err != nil {
t.Fatalf("Error drawing: %v", err)
}
// Write output file.
err = c.WriteToFile(tempFile("list_advanced.pdf"))
if err != nil {
t.Fatalf("Fail: %v\n", err)
}
}