Форум программистов, компьютерный форум, киберфорум
Go (Golang)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
1 / 1 / 0
Регистрация: 03.09.2018
Сообщений: 71

Конвертер из doc в текст

16.10.2019, 23:19. Показов 2307. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь получить текст из .doc документа, но при компиляции пишет, что не может найти путь, особенность в том что компилировал под Linux и Windows, и эта проблема возникла только в Windows, с чем может быть связанна данная проблема?

ошибки
Кликните здесь для просмотра всего текста
2019/10/16 23:07:05 TempFile Out: open \tmp\sajari-convert-852871687: The system cannot find the path specified.
52871687: The system cannot find the path specified.
fatal error: all goroutines are asleep - deadlock!

goroutine 1 [chan receive]:
code.sajari.com/docconv.ConvertDoc(0x8c55a0, 0xc000088150, 0x0, 0x0, 0x0, 0x0, 0x0)
C:/Users/user-1/go/src/code.sajari.com/docconv/doc.go:85 +0x264
main.main()
C:/Users/user-1/Desktop/golang/doc2docx/doc2docx.go:16 +0xed
exit status 2

мой код
Go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import (
    "fmt"
    "log"
    "os"
 
    "code.sajari.com/docconv"
)
 
func main() {
    file, err := os.Open("z.doc")
    if err != nil {
        log.Fatal(file, err)
    }
    res, _, err := docconv.ConvertDoc(file)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(res)
 
}
код модуля
Go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package docconv
 
import (
    "bytes"
    "fmt"
    "io"
    "io/ioutil"
    "log"
    "os"
    "os/exec"
    "strings"
    "time"
)
 
// ConvertDoc converts an MS Word .doc to text.
func ConvertDoc(r io.Reader) (string, map[string]string, error) {
    f, err := NewLocalFile(r, "/tmp", "sajari-convert-")
    if err != nil {
        return "", nil, fmt.Errorf("error creating local file: %v", err)
    }
    defer f.Done()
 
    // Meta data
    mc := make(chan map[string]string, 1)
    go func() {
        meta := make(map[string]string)
        metaStr, err := exec.Command("wvSummary", f.Name()).Output()
        if err != nil {
            // TODO: Remove this.
            log.Println("wvSummary:", err)
        }
 
        // Parse meta output
        for _, line := range strings.Split(string(metaStr), "\n") {
            if parts := strings.SplitN(line, "=", 2); len(parts) > 1 {
                meta[strings.TrimSpace(parts[0])] = strings.TrimSpace(parts[1])
            }
        }
 
        // Convert parsed meta
        if tmp, ok := meta["Last Modified"]; ok {
            if t, err := time.Parse(time.RFC3339, tmp); err == nil {
                meta["ModifiedDate"] = fmt.Sprintf("%d", t.Unix())
            }
        }
        if tmp, ok := meta["Created"]; ok {
            if t, err := time.Parse(time.RFC3339, tmp); err == nil {
                meta["CreatedDate"] = fmt.Sprintf("%d", t.Unix())
            }
        }
 
        mc <- meta
    }()
 
    // Document body
    bc := make(chan string, 1)
    go func() {
 
        // Save output to a file
        outputFile, err := ioutil.TempFile("/tmp", "sajari-convert-")
        if err != nil {
            // TODO: Remove this.
            log.Println("TempFile Out:", err)
            return
        }
        defer os.Remove(outputFile.Name())
 
        err = exec.Command("wvText", f.Name(), outputFile.Name()).Run()
        if err != nil {
            // TODO: Remove this.
            log.Println("wvText:", err)
        }
 
        var buf bytes.Buffer
        _, err = buf.ReadFrom(outputFile)
        if err != nil {
            // TODO: Remove this.
            log.Println("wvText:", err)
        }
 
        bc <- buf.String()
    }()
 
    // TODO: Should errors in either of the above Goroutines stop things from progressing?
    body := <-bc
    meta := <-mc
 
    // TODO: Check for errors instead of len(body) == 0?
    if len(body) == 0 {
        f.Seek(0, 0)
        return ConvertDocx(f)
    }
    return body, meta, nil
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.10.2019, 23:19
Ответы с готовыми решениями:

Какими средствами написать конвертер DOC-HTML, HTML-DOC
Доброе время суток. Необходимо написать конвертер DOC-HTML, HTML-DOC. Как это сделать, ума не приложу. Есть идея использования регулярных...

Конвертер odt в doc
Добрый день! Кто-нибудь знает конвертер odt в doc , где можно закинуть сразу несколько файлов ? По 1-му открывать их в open office и...

Конвертер документов MS Word docx в doc
как написать такой конвертер!? может кто даст ссылку на библиотеку позволяющую это делать!?

2
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,779
17.10.2019, 11:59
degree128, с тем, что ты захардкодил путь к директории с временными файлами, а должен был взять его из переменной окружения
0
64 / 55 / 30
Регистрация: 30.12.2015
Сообщений: 166
17.10.2019, 13:59
Для определения рабочей директории можешь использовать в такой метод

Go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
func GetServiceExecutablePath() string {
    flag.Parse()
    if *workPath != "" {
        if strings.HasSuffix(*workPath, "/") {
            return *workPath
        }
        return *workPath + "/"
    }
 
    fullexecpath, err := osext.Executable()
    if err != nil {
        panic(err)
    } else {
        dir, _ := filepath.Split(fullexecpath)
        return dir
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.10.2019, 13:59
Помогаю со студенческими работами здесь

Конвертер файлов doc docx в html
Доброго всем времени суток! Срочно нужен конвертер файлов doc docx в html. Подскажите пожалуйста, если знаете! Заранее, спасибо! ...

Написать конвертер файлов pdf в doc
Нужно написать конвертер, неважно какой, wav to mp3, doc to txt, pdf to doc и т.д. Только осваиваю язык, подскажите с чего начать...

Получить текст из .doc (НЕ DOCX)
Необходимо достать текст из .doc файла и вывести на экран.Желательно что бы код работал в Qt. Спасибо за потраченное время. PS....

Перенести текст из doc в txt
имеется вордовский документ (*.doc или *.docx), необходимо открыть этот документ, считать все содержимое и записать его в текстовый файл...

Как извлечь текст из .doc в .txt?
:cry:


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru