web-dev-qa-db-ja.com

PDF with golang?

型変換がわかりません。私はこれが正しくないことを知っています、私が得るのは象形文字の束だけです。

f, _ := os.Open("test.pdf") defer f.Close() io.Copy(os.Stdout, f)

弦を使って作業したい…。

5
omgj

私はいくつかのgopdf libsを試しましたが、 sajari/docconv 期待どおりに機能することがわかりました。

使いやすい、ここに例があります:

package main

import (
    "fmt"
    "log"

    "code.sajari.com/docconv"
)

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

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
}
4
Le Dong Thuc

私が得るのは象形文字の束だけです。

取得するのは、クリアテキストではないPDFファイルの内容です。

GoでPDFファイルを読みたい場合は、 golang pdfライブラリの1つ like rsc.io/pdf 、または これらのライブラリ のいずれか yob/pdfreader

として ここに記載

この種のもののための「堅固なフレームワーク」があるとは思えません。 PDF形式は、設計上、マシンフレンドリーであることを意図したものではありません。AFAIKでは、任意のPDFを解析する保証された方法はありません。

4
VonC