Example #1
0
// Parse will draw the rectangle on the document with the given attributes.
func (b *Rectangle) Parse(doc documents.Document) {
	if b.Rotation != 0 {
		doc.TransformBegin()
		fmt.Println(b.Position.X + b.Width/2)
		fmt.Println(b.Position.Y + b.Height/2)
		doc.TransformRotate(b.Rotation, b.Position.X+b.Width/2, b.Position.Y+b.Height/2)
	}

	doc.SetFillColor(utils.HexToRGB(b.Color))
	doc.Rect(b.Position.X, b.Position.Y, b.Width, b.Height, "F")

	if b.Rotation != 0 {
		doc.TransformEnd()
	}
}
Example #2
0
// Parse puts the text on a specific position on the page.
func (b *TextBox) Parse(doc documents.Document) {
	b.Font.Register(doc)

	if b.Rotation != 0 {
		doc.TransformBegin()

		rotationX, rotationY := b.getRotation(doc)
		doc.TransformRotate(b.Rotation, rotationX, rotationY)
	}

	if b.Text != "" {
		b.setPosition(doc)
		doc.MultiCell(b.Width, doc.PointConvert(b.Font.LineHeight), b.Text, "", b.Align, b.Fill)
	}

	if b.HTML != "" {
		leftMargin, topMargin, rightMargin, _ := doc.GetMargins()
		doc.SetLeftMargin(leftMargin + b.Position.X)
		doc.SetY(b.Position.Y + topMargin)

		if b.Width > 0 {
			pageWidth, _ := doc.GetPageSize()
			rm := pageWidth - rightMargin - (b.Position.X + b.Width)
			doc.SetRightMargin(rm)
		}

		html := doc.HTMLBasicNew()
		html.Write(doc.PointConvert(b.Font.LineHeight), b.HTML)

		doc.SetLeftMargin(leftMargin)
		doc.SetRightMargin(rightMargin)
	}

	if b.Rotation != 0 {
		doc.TransformEnd()
	}
}