diff --git a/docconv.go b/docconv.go index eab82b2..f770758 100755 --- a/docconv.go +++ b/docconv.go @@ -76,10 +76,10 @@ func Convert(r io.Reader, mimeType string, readability bool) (*Response, error) body, meta, err = ConvertODT(r) case "application/vnd.apple.pages", "application/x-iwork-pages-sffpages": - body, meta, err = ConvertPages(r) + body, meta, err = ConvertPages(r, readability) case "application/pdf": - body, meta, err = ConvertPDF(r) + body, meta, err = ConvertPDF(r, readability) case "application/rtf", "application/x-rtf", "text/rtf", "text/richtext": body, meta, err = ConvertRTF(r) diff --git a/pages.go b/pages.go index c288314..9fae07c 100644 --- a/pages.go +++ b/pages.go @@ -17,7 +17,7 @@ import ( ) // ConvertPages converts a Pages file to text. -func ConvertPages(r io.Reader) (string, map[string]string, error) { +func ConvertPages(r io.Reader, readability bool) (string, map[string]string, error) { meta := make(map[string]string) var textBody string @@ -35,7 +35,7 @@ func ConvertPages(r io.Reader) (string, map[string]string, error) { if strings.HasSuffix(f.Name, "Preview.pdf") { // There is a preview PDF version we can use if rc, err := f.Open(); err == nil { - return ConvertPDF(rc) + return ConvertPDF(rc, readability) } } if f.Name == "index.xml" { diff --git a/pdf.go b/pdf.go index e5920d2..6a468fa 100644 --- a/pdf.go +++ b/pdf.go @@ -7,7 +7,7 @@ import ( "io" ) -func ConvertPDF(r io.Reader) (string, map[string]string, error) { +func ConvertPDF(r io.Reader, readability bool) (string, map[string]string, error) { f, err := NewLocalFile(r) if err != nil { @@ -15,7 +15,7 @@ func ConvertPDF(r io.Reader) (string, map[string]string, error) { } defer f.Done() - bodyResult, metaResult, convertErr := ConvertPDFText(f.Name()) + bodyResult, metaResult, convertErr := ConvertPDFText(f.Name(), readability) if convertErr != nil { return "", nil, convertErr } diff --git a/pdf_ocr.go b/pdf_ocr.go index 4d9d53a..32513da 100644 --- a/pdf_ocr.go +++ b/pdf_ocr.go @@ -129,7 +129,7 @@ func ConvertPDF(r io.Reader) (string, map[string]string, error) { } defer f.Done() - bodyResult, metaResult, textConvertErr := ConvertPDFText(f.Name()) + bodyResult, metaResult, textConvertErr := ConvertPDFText(f.Name(), false) if textConvertErr != nil { return "", nil, textConvertErr } diff --git a/pdf_text.go b/pdf_text.go index 01b65f8..ba4d523 100644 --- a/pdf_text.go +++ b/pdf_text.go @@ -20,7 +20,7 @@ type BodyResult struct { // Convert PDF -func ConvertPDFText(path string) (BodyResult, MetaResult, error) { +func ConvertPDFText(path string, readability bool) (BodyResult, MetaResult, error) { metaResult := MetaResult{meta: make(map[string]string)} bodyResult := BodyResult{} mr := make(chan MetaResult, 1) @@ -56,7 +56,14 @@ func ConvertPDFText(path string) (BodyResult, MetaResult, error) { br := make(chan BodyResult, 1) go func() { - body, err := exec.Command("pdftotext", "-q", "-nopgbrk", "-enc", "UTF-8", "-eol", "unix", path, "-").Output() + var body []byte + var err error + if readability { + body, err = exec.Command("pdftotext", "-q", "-nopgbrk", "-enc", "UTF-8", "-eol", "unix", "-layout", path, "-").Output() + } else { + body, err = exec.Command("pdftotext", "-q", "-nopgbrk", "-enc", "UTF-8", "-eol", "unix", path, "-").Output() + } + if err != nil { bodyResult.err = err }