使用 swift iOS 重命名下载的 pdf 文件

Rename the download pdf file using swift iOS

我正在从 api 端点成功下载 PDF。下载 pdf 后,pdf 的标题为:PDF document.pdf。 如何更改PDF的标题?

我尝试使用 PDFDocumentAttribute(见下文)更新 metadata 的 PDF,但它不起作用。

var metadata = pdfDocument.documentAttributes!
metadata[PDFDocumentAttribute.subjectAttribute] = "subject attribute"
metadata[PDFDocumentAttribute. titleAttribute] = "title attribute"
pdfDocument.documentAttributes = metadata

注意:我没有使用 FileManager

我如何获取 PDF:-

let task = session.dataTask(with: urlRequest) { (data, _, error) in
            DispatchQueue.main.async {
                guard let unwrappedData = data, error == nil else {
                    completion(.failure(error ?? Constants.dummyError))
                    return
                }

                guard let pdfDocument = PDFDocument(data: unwrappedData) else {
                    completion(.failure(error ?? Constants.dummyError))
                    return
                }

                completion(.success(pdfDocument))
            }
        }

试试这个:

pdfDocument.documentAttributes?["Title"] = "my title attribute"

pdfDocument.documentAttributes?[PDFDocumentAttribute.titleAttribute] = "my title attribute"

PDFDocumentAttribute.subjectAttribute 类似。

以上将设置您文档的 Title,当您保存它时,file 名称将是您给它的任何 file name

EDIT-1:将 pdfDocument 保存到具有所选 file name 的文件中。

       DispatchQueue.main.async {
            guard let unwrappedData = data, error == nil else {
                completion(.failure(error ?? Constants.dummyError))
                return
            }
            guard let pdfDocument = PDFDocument(data: unwrappedData) else {
                completion(.failure(error ?? Constants.dummyError))
                return
            }
            
            // set the Title
            pdfDocument.documentAttributes?[PDFDocumentAttribute.titleAttribute] = "my title attribute"
            
            do {
                // save the document to the given file name ("mydoc.pdf")
                let docURL = try FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false).appendingPathComponent("mydoc.pdf")  // <-- here file name
                pdfDocument.write(to: docURL)
                print("\n docUrl: \(docURL.absoluteString)\n")
            }
            catch {
                print("Error \(error)")
            }
            completion(.success(pdfDocument))
        }