package office import ( "bytes" "fmt" pdf "godo/office/pdf" xlsx "godo/office/xlsx" "html" "os" "regexp" "strings" ) func docx2txt(filename string) (string, error) { data_docx, err := ReadDocxFile(filename) // Read data from docx file if err != nil { return "", err } defer data_docx.Close() text_docx := data_docx.Editable().GetContent() // Get whole docx data as XML formated text text_docx = PARA_RE.ReplaceAllString(text_docx, "\n") // Replace the end of paragraphs ( 0 { text_row = fmt.Sprintf("%s\t%s", text_row, col.Value) } else { text_row = fmt.Sprintf("%s%s", text_row, col.Value) } } if rows_xlsx != "" { // Save all rows as ONE string rows_xlsx = fmt.Sprintf("%s\n%s", rows_xlsx, text_row) } else { rows_xlsx = fmt.Sprintf("%s%s", rows_xlsx, text_row) } } } // fmt.Println(rows_xlsx) return rows_xlsx, nil } func pdf2txt(filename string) (string, error) { // BUG: Cannot get text from specific (or really malformed?) pages file_pdf, data_pdf, err := pdf.Open(filename) // Read data from pdf file if err != nil { return "", err } defer file_pdf.Close() var buff_pdf bytes.Buffer bytes_pdf, err := data_pdf.GetPlainText() // Get text of entire pdf file if err != nil { return "", err } buff_pdf.ReadFrom(bytes_pdf) text_pdf := buff_pdf.String() // fmt.Println(text_pdf) return text_pdf, nil } func doc2txt(filename string) (string, error) { file_doc, _ := os.Open(filename) // Open doc file data_doc, err := DOC2Text(file_doc) // Read data from a doc file if err != nil { return "", err } defer file_doc.Close() actual := data_doc.(*bytes.Buffer) // Buffer for hold line text of doc file text_doc := "" for aline, err := actual.ReadString('\r'); err == nil; aline, err = actual.ReadString('\r') { // Get text by line aline = strings.Trim(aline, " \n\r") if aline != "" { if text_doc != "" { text_doc = fmt.Sprintf("%s\n%s", text_doc, removeStrangeChars(aline)) } else { text_doc = fmt.Sprintf("%s%s", text_doc, removeStrangeChars(aline)) } } } text_doc = removeStrangeChars(text_doc) // fmt.Println(text_doc) return text_doc, nil } func ppt2txt(filename string) (string, error) { file_ppt, err := os.Open(filename) // Open ppt file if err != nil { return "", err } defer file_ppt.Close() text_ppt, err := ExtractPPTText(file_ppt) // Read text from a ppt file if err != nil { return "", err } text_ppt = removeStrangeChars(text_ppt) // fmt.Println(text_ppt) return text_ppt, nil } func xls2txt(filename string) (string, error) { file_xls, err := os.Open(filename) // Open xls file if err != nil { return "", err } defer file_xls.Close() text_xls, err := XLS2Text(file_xls) // Convert xls data to an array of rows (include all sheets) if err != nil { return "", err } text_xls = removeStrangeChars(text_xls) // fmt.Println(text_xls) return text_xls, nil } func removeStrangeChars(input string) string { // Define the regex pattern for allowed characters re := regexp.MustCompile("[�\x13\x0b]+") // Replace all disallowed characters with an empty string return re.ReplaceAllString(input, " ") }