Open rorycl opened 4 years ago
Hi @phpdave11
I've found a PDF which causes a nil pointer dereference:
panic: runtime error: invalid memory address or nil pointer dereference
Perhaps it is because the PDF has form fields?
To reproduce:
package main import ( "fmt" "github.com/phpdave11/gofpdf" "github.com/phpdave11/gofpdf/contrib/gofpdi" "io" "io/ioutil" "net/http" "os" rpdf "rsc.io/pdf" ) const PDF_WIDTH_IN_MM = 222.6264 const PDF_HEIGHT_IN_MM = 297.0000 const MM_TO_RMPOINTS = 2.83465 var Verbose bool = true var url string = "http://www.campbell-lange.net/media/files/example_2020b.pdf" func main() { resp, err := http.Get(url) if err != nil { panic(err) } defer resp.Body.Close() tmpFile, err := ioutil.TempFile(os.TempDir(), "pdfexample-") if err != nil { panic(err) } filer := tmpFile.Name() defer os.Remove(filer) _, err = io.Copy(tmpFile, resp.Body) if err != nil { panic(err) } // get pdf file information fi, err := rpdf.Open(filer) if err != nil { panic(err) } pageNum := fi.NumPage() if Verbose { fmt.Printf("Example PDF from %s\n", url) fmt.Printf("file: %s\n pages: %3d\n", filer, pageNum) } // construct new gofpdf document pdf := gofpdf.NewCustom(&gofpdf.InitType{ UnitStr: "pt", Size: gofpdf.SizeType{ Wd: PDF_WIDTH_IN_MM * MM_TO_RMPOINTS, Ht: PDF_HEIGHT_IN_MM * MM_TO_RMPOINTS}, }) for p := 1; p <= pageNum; p++ { pdf.AddPage() bgpdf := gofpdi.ImportPage(pdf, filer, p, "/MediaBox") gofpdi.UseImportedTemplate(pdf, bgpdf, 0, 0, 210*MM_TO_RMPOINTS, 297 if Verbose { fmt.Printf(" page : %3d processed\n", p) } } }
By the way, pdftotext parses this ok so I assume the PDF is valid.
pdftotext
Cheers, Rory
Hi @phpdave11
I've found a PDF which causes a nil pointer dereference:
Perhaps it is because the PDF has form fields?
To reproduce:
By the way,
pdftotext
parses this ok so I assume the PDF is valid.Cheers, Rory