mirror of
https://github.com/unidoc/unipdf.git
synced 2025-04-27 13:48:51 +08:00
156 lines
3.0 KiB
Go
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)
|
|
}
|
|
}
|