// 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() } }