Skip to content
This repository has been archived by the owner on Nov 13, 2021. It is now read-only.

Multicell not justifying text #283

Open
Meowgician opened this issue Aug 1, 2019 · 1 comment
Open

Multicell not justifying text #283

Meowgician opened this issue Aug 1, 2019 · 1 comment

Comments

@Meowgician
Copy link

Meowgician commented Aug 1, 2019

I need to generate a pdf document, and I have been using MultiCell to do so. However, I need the text to be justified, and MultiCell doesn't do so even when I specify that it should be justified.
Here's some code that can reproduce the issue:
package main

package main

import (
	"github.com/jung-kurt/gofpdf"
)

const margin = 40
const lorem = "Lorem ipsum dolor sit amet consectetur adipiscing elit tellus rutrum suspendisse aliquet dignissim sem, faucibus tempor erat quisque vehicula sociosqu magna in praesent cursus habitant felis. Turpis ornare taciti habitant posuere inceptos vivamus viverra vulputate tempus convallis, molestie condimentum iaculis pellentesque leo ante est sed placerat curabitur vitae, suscipit mattis cursus fringilla lobortis litora sollicitudin justo nunc. Dignissim facilisi lectus natoque fermentum risus etiam integer mi iaculis nam ornare, augue porttitor blandit aliquet elementum sagittis faucibus habitasse et vitae."

func main() {
	var pdf = gofpdf.New("P", "pt", "A4", "")

	pdf.SetMargins(margin, margin, margin)

	pdf.SetAutoPageBreak(true, margin)

	pdf.AddPage()

	pdf.SetFont("Arial", "", 15.0)
	pdf.MultiCell(0.0, 15.0, lorem, "", "J", false)

	pdf.OutputFileAndClose("test.pdf")
}

It should generate the following PDF:
test.pdf

@jung-kurt
Copy link
Owner

It looks like before UTF-8 fonts were supported, gofpdf did not support text justification (alignStr = "J") in CellFormat() or MultiCell(). Until we can fix up this block in CellFormat() it looks like the only way to justify text in MultiCell() is to use UTF-8 fonts. Here is your example with that change:

package main

import (
  "fmt"
  "os"

  "github.com/jung-kurt/gofpdf"
)

const margin = 40
const lorem = "Lorem ipsum dolor sit amet consectetur adipiscing elit tellus rutrum suspendisse aliquet dignissim sem, faucibus tempor erat quisque vehicula sociosqu magna in praesent cursus habitant felis. Turpis ornare taciti habitant posuere inceptos vivamus viverra vulputate tempus convallis, molestie condimentum iaculis pellentesque leo ante est sed placerat curabitur vitae, suscipit mattis cursus fringilla lobortis litora sollicitudin justo nunc. Dignissim facilisi lectus natoque fermentum risus etiam integer mi iaculis nam ornare, augue porttitor blandit aliquet elementum sagittis faucibus habitasse et vitae."

func main() {
  var pdf = gofpdf.New("P", "pt", "A4", "")
  pdf.AddUTF8Font("dejavu", "", "DejaVuSansCondensed.ttf")

  pdf.SetMargins(margin, margin, margin)

  pdf.SetAutoPageBreak(true, margin)

  pdf.AddPage()

  pdf.SetFont("dejavu", "", 15)
  pdf.MultiCell(0.0, 15.0, lorem, "", "J", false)

  err := pdf.OutputFileAndClose("test2.pdf")

  if err != nil {
    fmt.Fprintf(os.Stderr, "%s\n", err)
  }

}

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

2 participants