示例#1
0
func (b *TextBox) setPosition(doc documents.Document) {
	if b.Position.Y >= 0 {
		doc.SetY(b.Position.Y)
	}

	if b.Position.X >= 0 {
		doc.SetX(b.Position.X)
	}
}
示例#2
0
// Register will register a font to the document for later usage.
func (f FontType) Register(doc documents.Document) {
	if f.Color != "" {
		doc.SetTextColor(utils.HexToRGB(f.Color))
	}

	if f.Type != "" && f.Size != 0 {
		doc.SetFont(f.Type, f.Weight, f.Size)
	}
}
示例#3
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()
	}
}
示例#4
0
func (b *TextBox) getRotation(doc documents.Document) (rotationX float64, rotationY float64) {
	if b.Width == 0 {
		pageWidth, _ := doc.GetPageSize()
		leftMargin, _, rightMargin, _ := doc.GetMargins()

		rotationX = (pageWidth - leftMargin - rightMargin - b.Position.X) / 2
	} else {
		rotationX = b.Position.X + b.Width/2
	}

	if b.Height == 0 {
		rotationY = b.Position.Y + doc.PointConvert(b.Font.LineHeight)/2
	} else {
		rotationY = b.Position.Y + b.Height/2
	}

	return
}
示例#5
0
// Parse will draw the line on the document for the given position and color.
func (b *Line) Parse(doc documents.Document) {
	doc.SetDrawColor(utils.HexToRGB(b.Color))
	doc.Line(b.Position.X, b.Position.Y, b.Position.X+b.W, b.Position.Y+b.H)
}
示例#6
0
// Parse will add a new page to the document and set the appropiate page
// settings.
func (b *AddPage) Parse(doc documents.Document) {
	doc.AddPage()
	doc.SetMargins(b.Margin.Left, b.Margin.Top, b.Margin.Right)
	doc.SetAutoPageBreak(true, b.Margin.Bottom)
}
示例#7
0
// Parse puts an image on the specified document for a specific position.
func (i *Image) Parse(doc documents.Document) {
	tp := doc.ImageTypeFromMime(i.Mime)
	doc.RegisterImageReader(i.Url, tp, i.Image)
	doc.Image(i.Url, i.X, i.Y, i.W, i.H, false, tp, 0, "")
}
示例#8
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()
	}
}