将 Docx 文件转换为 Swift 中的文本

Converting Docx Files To Text In Swift

我的临时存储中有一个 .docx 文件:

    let location: NSURL = NSURL.fileURLWithPath(NSTemporaryDirectory())
    let file_Name = location.URLByAppendingPathComponent("5 November 2016.docx")

我现在要做的是提取文档中的文本。但我似乎找不到任何转换器或方法。

我试过这个:

    let file_Content = try? NSString(contentsOfFile: String(file_Name), encoding: NSUTF8StringEncoding)
    print(file_Content)

但是它打印 nil。

那么如何阅读 docx 文件中的文本?

您最初的问题是如何从 URL 中获取字符串。 String(File_Name) 不是将文件 URL 转换为文件路径的正确方法。正确的方法是使用path函数。

let location = NSURL.fileURLWithPath(NSTemporaryDirectory())
let fileURL = location.URLByAppendingPathComponent("My File.docx")
let fileContent = try? NSString(contentsOfFile: fileURL.path, encoding: NSUTF8StringEncoding)

注意许多变化。使用正确的命名约定。更清楚地命名变量。

事情是这样的。这仍然行不通,因为 docx 文件是 XML 和其他文件的压缩集合。您不能将 docx 文件加载到 NSString。您需要使用 NSData 来加载 zip 内容。然后你需要解压缩它。然后您需要浏览所有文件并找到所需的文本。它远非微不足道,它远远超出了单个堆栈溢出的范围 post.

Swift 4,Xcode 9.1,OSX 目标从 10.10 到 10.13

我发现以下代码可以轻松地从 Word .doc 文件中提取文本,然后轻松地将其转换为字符串。 (属性字符串包含格式信息,这些信息可能会被解析并产生良好效果。)我想传达的主要信息是关于使用 .docFormat 指定文档类型的一些信息。

    let openPanel   = NSOpenPanel()
    var fileString  = String("")
    var fileData    = NSData()
    let fileURL     = openPanel.url

    do {
        fileData =  try NSData(contentsOf: fileURL!)
        if let tryForString = try? NSAttributedString(data: fileData as Data, options: [
            .documentType: NSAttributedString.DocumentType.docFormat,
            .characterEncoding: String.Encoding.utf8.rawValue
            ], documentAttributes: nil) {
            fileString = tryForString.string
        } else {
            fileString = "Data conversion error."
        }
        fileString = fileString.trimmingCharacters(in: .whitespacesAndNewlines)
    } catch {
        print("Word Document File Not Found")
    }