Maison > développement back-end > Golang > le corps du texte

doc à docx golang

WBOY
Libérer: 2023-05-10 10:23:36
original
1401 Les gens l'ont consulté

Aujourd'hui, je souhaite partager avec vous comment utiliser Golang pour convertir des fichiers doc en fichiers docx.

Avec la mise à jour de la suite Microsoft Office, le format de fichier doc a été progressivement supprimé et le format de fichier docx est désormais devenu un format de document plus courant. Si vous devez traiter des documents dans votre propre application, la conversion de doc en docx est nécessaire.

Golang est un langage de programmation puissant qui fonctionne très bien dans la gestion de tâches telles que la conversion de documents. Ci-dessous, je vais vous présenter comment utiliser Golang pour effectuer la tâche de conversion de doc en docx.

Tout d'abord, nous devons utiliser la bibliothèque tierce "github.com/unidoc/unioffice" pour effectuer cette tâche. La bibliothèque "unioffice" dépend d'une autre bibliothèque "github.com/antchfx/xmlquery", nous devons donc introduire ces deux bibliothèques dans le projet :

go get github.com/unidoc/unioffice
go get github.com/antchfx/xmlquery
Copier après la connexion

Ensuite, nous devons lire le contenu du texte du fichier doc, et convertir en texte au format docx. Voici un exemple de code simple :

package main

import (
    "fmt"
    "github.com/antchfx/xmlquery"
    "github.com/unidoc/unioffice/document"
    "io"
    "os"
    "path/filepath"
)

func convertDocx(filePath string) error {
    f, err := os.Open(filePath)
    if err != nil {
        return err
    }
    defer f.Close()

    r, err := document.Open(f)
    if err != nil {
        return err
    }

    docxFilePath := filepath.Join(filepath.Dir(filePath), fmt.Sprintf("%s.docx", filepath.Base(filePath)))
    f2, err := os.Create(docxFilePath)
    if err != nil {
        return err
    }
    defer f2.Close()

    w, err := document.Create(f2, document.WithTemplate(r))
    if err != nil {
        return err
    }

    for _, para := range r.Paragraphs() {
        for _, run := range para.Runs() {
            if run.IsLineBreak() {
                w.AddLineBreak()
            } else if run.IsTab() {
                w.AddTab()
            } else if run.IsPicture() {
                io.Copy(w, r.GetPictureData(run.Picture()))
            } else {
                w.WriteString(run.Text())
            }
        }

        w.AddParagraph()
    }

    w.Close()
    r.Close()

    return nil
}

func main() {
    err := convertDocx("test.doc")
    if err != nil {
        fmt.Println(err)
        return
    }

    fmt.Println("Conversion complete!")
}
Copier après la connexion

Dans le code ci-dessus, nous ouvrons d'abord le fichier doc et le lisons dans un objet document. Nous créons ensuite un nouveau fichier docx et le transmettons comme paramètre "modèle" de l'objet document. Ensuite, nous parcourons chaque paragraphe et chaque instance en cours d'exécution dans le fichier doc, le convertissons au format docx correspondant et l'écrivons dans le fichier. Enfin, nous fermons l'objet flux de fichiers et renvoyons nil pour indiquer que le traitement est terminé.

Avec l'exemple de code ci-dessus, nous pouvons utiliser Golang pour convertir des fichiers doc en fichiers docx. Il convient de noter que dans la pratique, nous devons également prendre en compte la gestion des exceptions et la robustesse du programme.

Pour résumer, cet article explique comment utiliser Golang pour convertir des fichiers doc en fichiers docx. J'espère que cet article pourra vous aider et vous fournir de l'aide lors des tâches de conversion de documents.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal