Exemplo n.º 1
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()
	}
}