>백엔드 개발 >Golang >doc에서 docx golang으로

doc에서 docx golang으로

WBOY
WBOY원래의
2023-05-10 10:23:361445검색

오늘은 Golang을 사용하여 doc 파일을 docx 파일로 변환하는 방법을 여러분과 공유하고 싶습니다.

Microsoft Office 제품군 업데이트로 doc 파일 형식이 점차 폐지되었으며 이제 docx 파일 형식이 보다 일반적인 문서 형식이 되었습니다. 자신의 애플리케이션에서 문서를 처리해야 하는 경우 doc를 docx로 변환해야 합니다.

Golang은 문서 변환과 같은 작업을 처리하는 데 매우 뛰어난 성능을 발휘하는 강력한 프로그래밍 언어입니다. 다음으로 Golang을 사용하여 doc를 docx로 변환하는 작업을 완료하는 방법을 소개하겠습니다.

먼저 이 작업을 완료하려면 타사 라이브러리 "github.com/unidoc/unioffice"를 사용해야 합니다. "unioffice" 라이브러리는 다른 라이브러리 "github.com/antchfx/xmlquery"에 의존하므로 프로젝트에 이 두 라이브러리를 도입해야 합니다.

go get github.com/unidoc/unioffice
go get github.com/antchfx/xmlquery

다음으로 doc 파일에서 텍스트 콘텐츠를 읽고 변환해야 합니다. docx 형식의 텍스트로 변환합니다. 다음은 간단한 샘플 코드입니다.

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!")
}

위 코드에서는 먼저 doc 파일을 열고 문서 개체로 읽어 들입니다. 그런 다음 새 docx 파일을 만들고 문서 개체의 "템플릿" 매개변수로 전달합니다. 다음으로 doc 파일의 각 단락과 실행 중인 인스턴스를 순회하여 해당 docx 형식으로 변환하고 파일에 씁니다. 마지막으로 파일 스트림 객체를 닫고 nil을 반환하여 처리가 완료되었음을 나타냅니다.

위의 코드 예제에서는 Golang을 사용하여 doc 파일을 docx 파일로 변환할 수 있습니다. 실제 사용에서는 예외 처리와 프로그램의 견고성도 고려해야 한다는 점은 주목할 가치가 있습니다.

요약하자면 이번 글에서는 Golang을 사용하여 doc 파일을 docx 파일로 변환하는 방법을 소개합니다. 이 글이 문서 변환 작업을 처리할 때 도움이 되기를 바랍니다.

위 내용은 doc에서 docx golang으로의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.