2016-10-02 1 views

ответ

4

все, что я получаю кучу иероглифов.

Что вы получаете, является содержимым pdf-файла, который не является четким текстом.

Если вы хотите, чтобы прочитать файл в формате PDF в Go, используйте one of the golang pdf libraries как rsc.io/pdf, или один из those libraries как yob/pdfreader.

Как mentioned here:

Я сомневаюсь, есть ли «твердая основа» для такого рода вещи. Формат PDF не предназначен для машинного дизайна по дизайну, и AFAIK не существует гарантированного способа разбора произвольных PDF-файлов.

2

Это потому, что PDF не только содержит текст, но также содержит форматы (шрифты, отступы, поля, положение, фигуры, изображение).

Если вам необходимо прочитать простой текст без формата. Я разветвил репозиторий и реализовал функцию для этого. Вы можете проверить его на https://github.com/ledongthuc/pdf

Я также привел пример, помогаю ему пригодиться для вас.

package main 

import (
    "bytes" 
    "fmt" 

    "github.com/ledongthuc/pdf" 
) 

func main() { 
    content, err := readPdf("test.pdf") // Read local pdf file 
    if err != nil { 
     panic(err) 
    } 
    fmt.Println(content) 
    return 
} 

func readPdf(path string) (string, error) { 
    r, err := pdf.Open(path) 
    if err != nil { 
     return "", err 
    } 
    totalPage := r.NumPage() 

    var textBuilder bytes.Buffer 
    for pageIndex := 1; pageIndex <= totalPage; pageIndex++ { 
     p := r.Page(pageIndex) 
     if p.V.IsNull() { 
      continue 
     } 
     textBuilder.WriteString(p.GetPlainText("\n")) 
    } 
    return textBuilder.String(), nil 
} 
+1

У меня есть ошибка с вашей библиотеки, но это не возможно, можно опубликовать вопрос на 'ledongthuc/pdf' Git. – LeMoussel

+0

@LeMoussel, не уверен, почему вы не можете создать проблему в моем проекте. Но в любом случае, вы можете попросить отправить ошибку здесь, я постараюсь вам помочь –

+0

@ Le Dong Thuc: см. [Как извлечь простой текст из PDF в golang] (https://stackoverflow.com/questions/44560265/how- to-extract-plain-text-from-pdf-in-golang) – LeMoussel

1

Я попробовал некоторые идут в формате PDF LIBS, и нашел sajari/docconv работы, как я ожидал.

проста в использовании, вот пример:

package main 

import (
    "fmt" 
    "log" 

    "github.com/sajari/docconv" 
) 

func main() { 
    res, err := docconv.ConvertPath("your-file.pdf") 
    if err != nil { 
     log.Fatal(err) 
    } 
    fmt.Println(res) 
}