36 lines
610 B
Go
36 lines
610 B
Go
package common
|
|
|
|
import (
|
|
"io"
|
|
"os"
|
|
"strings"
|
|
|
|
"github.com/pdfcpu/pdfcpu/pkg/api"
|
|
)
|
|
|
|
type pdfParser struct{}
|
|
|
|
// Parse PDF:抽取全部文本,按页分隔(分页符供分块器识别)
|
|
func (p *pdfParser) Parse(path string) (string, error) {
|
|
f, err := os.Open(path)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
defer f.Close()
|
|
|
|
var sb strings.Builder
|
|
err = api.ExtractContent(f, nil, func(r io.Reader, _ int) error {
|
|
b, err := io.ReadAll(r)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
sb.Write(b)
|
|
sb.WriteString("\n\n")
|
|
return nil
|
|
}, nil)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return sb.String(), nil
|
|
}
|