mirror of
https://github.com/mickael-kerjean/filestash.git
synced 2025-11-01 19:32:27 +08:00
36 lines
680 B
Go
36 lines
680 B
Go
package formater
|
|
|
|
import (
|
|
"bytes"
|
|
"fmt"
|
|
. "github.com/mickael-kerjean/filestash/server/common"
|
|
"io"
|
|
"math/rand"
|
|
"os"
|
|
"os/exec"
|
|
)
|
|
|
|
func PdfFormater(r io.ReadCloser) (io.ReadCloser, error) {
|
|
tmpName := fmt.Sprintf("/tmp/pdf_%d.docx", rand.Intn(1000000))
|
|
defer os.Remove(tmpName)
|
|
f, err := os.OpenFile(tmpName, os.O_CREATE|os.O_WRONLY, os.ModePerm)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
_, err = io.Copy(f, r)
|
|
if err != nil {
|
|
f.Close()
|
|
return nil, err
|
|
}
|
|
f.Close()
|
|
|
|
cmd := exec.Command("pdftotext", tmpName, "-")
|
|
out := bytes.NewBuffer([]byte{})
|
|
cmd.Stdout = out
|
|
err = cmd.Run()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return NewReadCloserFromReader(out), nil
|
|
}
|