{"id":30348,"date":"2023-01-14T15:39:44","date_gmt":"2023-01-14T10:09:44","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-create-a-word-document-swift-closed\/"},"modified":"2023-01-14T15:39:44","modified_gmt":"2023-01-14T10:09:44","slug":"solved-create-a-word-document-swift-closed","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-create-a-word-document-swift-closed\/","title":{"rendered":"[Solved] Create a word document, Swift [closed]"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-38938321\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"38938321\" data-parentid=\"38751495\" data-score=\"6\" data-position-on-page=\"1\" data-highest-scored=\"1\" data-question-has-accepted-highest-score=\"1\" itemprop=\"acceptedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<p>Unfortunately, it is nearly impossible to create a <code>.docx<\/code> file in Swift, given how complicated they are (you can see for yourself by changing the file extension on any old <code>.docx<\/code> file to <code>.zip<\/code>, which will reveal their inner structure). The next best thing is to simply create a <code>.txt<\/code> file, which can also be opened into Pages (though sadly not Docs). If you&#8217;re looking for a more polished format, complete with formatting and possibly even images, you could choose to create a <code>.pdf<\/code> file. <\/p>\n<hr>\n<p>Here are some code samples that might be of assistance:<\/p>\n<p><strong>Creating and sharing a <code>.txt<\/code> file in Swift 3:<\/strong><\/p>\n<pre><code>func export(_ string: String, title: String) throws {\n    \/\/ create a file path in a temporary directory\n    let fileName = \"\\(title).txt\"\n    let filePath = (NSTemporaryDirectory() as NSString).appendingPathComponent(fileName)\n\n    \/\/ save the string to the file\n    try string.write(toFile: filePath, atomically: true, encoding: String.Encoding.utf8)\n\n    \/\/ open share dialog\n\n        \/\/ Initialize Document Interaction Controller\n    self.interactionController = UIDocumentInteractionController(url: URL(fileURLWithPath: filePath))\n        \/\/ Configure Document Interaction Controller\n        self.interactionController!.delegate = self\n        \/\/ Present Open In Menu\n    self.interactionController!.presentOptionsMenu(from: yourexportbarbuttonoutlet, animated: true) \/\/ create an outlet from an Export bar button outlet, then use it as the `from` argument\n}\n<\/code><\/pre>\n<p>This can be called with<\/p>\n<pre><code>export(\"Hello World\", title: \"HelloWorld\")\n<\/code><\/pre>\n<p>to instantly create a txt file and open the share dialog for it.<\/p>\n<p><\/p>\n<p><strong>Creating and sharing a simple <code>.pdf<\/code> file in Swift 3:<\/strong><\/p>\n<pre><code>func openPDF(_ string: String, title: String) throws {\n    \/\/ 1. Create a print formatter\n\n    let html = \"&lt;h2&gt;\\(title)&lt;\/h2&gt;&lt;br&gt;&lt;h4&gt;\\(string)&lt;\/h4&gt;\" \/\/ create some text as the body of the PDF with html.\n\n    let fmt = UIMarkupTextPrintFormatter(markupText: html)\n\n    \/\/ 2. Assign print formatter to UIPrintPageRenderer\n\n    let render = UIPrintPageRenderer()\n    render.addPrintFormatter(fmt, startingAtPageAt: 0)\n\n    \/\/ 3. Assign paperRect and printableRect\n\n    let page = CGRect(x: 10, y: 10, width: 595.2, height: 841.8) \/\/ A4, 72 dpi, x and y are horizontal and vertical margins\n    let printable = page.insetBy(dx: 0, dy: 0)\n\n    render.setValue(NSValue(cgRect: page), forKey: \"paperRect\")\n    render.setValue(NSValue(cgRect: printable), forKey: \"printableRect\")\n\n    \/\/ 4. Create PDF context and draw\n\n    let pdfData = NSMutableData()\n    UIGraphicsBeginPDFContextToData(pdfData, CGRect.zero, nil)\n\n    for i in 1...render.numberOfPages {\n\n        UIGraphicsBeginPDFPage();\n        let bounds = UIGraphicsGetPDFContextBounds()\n        render.drawPage(at: i - 1, in: bounds)\n    }\n\n    UIGraphicsEndPDFContext();\n\n    \/\/ 5. Save PDF file\n\n    var path = \"\\(NSTemporaryDirectory())\\(title).pdf\"\n    pdfData.write(toFile: path, atomically: true)\n    print(\"open \\(path)\") \/\/ check if we got the path right.\n        \/\/ open share dialog\n        print(\"opening share dialog\")\n        \/\/ Initialize Document Interaction Controller\n        self.interactionController = UIDocumentInteractionController(url: URL(fileURLWithPath: path))\n        \/\/ Configure Document Interaction Controller\n        self.interactionController!.delegate = self\n        \/\/ Present Open In Menu\n        self.interactionController!.presentOptionsMenu(from: yourexportbarbuttonoutlet, animated: true) \/\/ create an outlet from an Export bar button outlet, then use it as the `from` argument\n}\n<\/code><\/pre>\n<p>This can be called with <\/p>\n<pre><code>openPDF(\"Hello World\", title: \"HelloWorld\")\n<\/code><\/pre>\n<p>to instantly create a pdf file and open the share dialog for it.<\/p>\n<hr>\n<p><strong>Edit:<\/strong> Found an interesting (though not polished) workaround to getting text to open up in Google Docs: use the function from the &#8220;creating a <code>.txt<\/code> file&#8221; section here, and just change the filename to <code>\"\\(title).docx\"<\/code>. This will fool Docs into thinking it&#8217;s a <code>.docx<\/code> document, which will allow the text to open in Docs successfully. Unfortunately, this creates an invalid document that can&#8217;t be opened by Pages, Word, or really any other app because it doesn&#8217;t <em>actually<\/em> create a real document file. And the Interaction Controller will make it look to the user like they can also open it in Pages, though that invariably fails.<\/p>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\">4<\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved Create a word document, Swift [closed] <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] Unfortunately, it is nearly impossible to create a .docx file in Swift, given how complicated they are (you can see for yourself by changing the file extension on any old .docx file to .zip, which will reveal their inner structure). The next best thing is to simply create a .txt file, which can also &#8230; <a title=\"[Solved] Create a word document, Swift [closed]\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-create-a-word-document-swift-closed\/\" aria-label=\"More on [Solved] Create a word document, Swift [closed]\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[471,522],"class_list":["post-30348","post","type-post","status-publish","format-standard","hentry","category-solved","tag-ios","tag-swift"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Solved] Create a word document, Swift [closed] - JassWeb<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jassweb.com\/solved\/solved-create-a-word-document-swift-closed\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] Create a word document, Swift [closed] - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] Unfortunately, it is nearly impossible to create a .docx file in Swift, given how complicated they are (you can see for yourself by changing the file extension on any old .docx file to .zip, which will reveal their inner structure). The next best thing is to simply create a .txt file, which can also ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-create-a-word-document-swift-closed\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2023-01-14T10:09:44+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-create-a-word-document-swift-closed\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-create-a-word-document-swift-closed\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] Create a word document, Swift [closed]\",\"datePublished\":\"2023-01-14T10:09:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-create-a-word-document-swift-closed\/\"},\"wordCount\":263,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\"ios\",\"swift\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-create-a-word-document-swift-closed\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-create-a-word-document-swift-closed\/\",\"name\":\"[Solved] Create a word document, Swift [closed] - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2023-01-14T10:09:44+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-create-a-word-document-swift-closed\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-create-a-word-document-swift-closed\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-create-a-word-document-swift-closed\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] Create a word document, Swift [closed]\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jassweb.com\/solved\/#website\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jassweb.com\/solved\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"contentUrl\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586\",\"contentUrl\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\/\/jassweb.com\"],\"url\":\"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] Create a word document, Swift [closed] - JassWeb","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jassweb.com\/solved\/solved-create-a-word-document-swift-closed\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] Create a word document, Swift [closed] - JassWeb","og_description":"[ad_1] Unfortunately, it is nearly impossible to create a .docx file in Swift, given how complicated they are (you can see for yourself by changing the file extension on any old .docx file to .zip, which will reveal their inner structure). The next best thing is to simply create a .txt file, which can also ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-create-a-word-document-swift-closed\/","og_site_name":"JassWeb","article_published_time":"2023-01-14T10:09:44+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-create-a-word-document-swift-closed\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-create-a-word-document-swift-closed\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] Create a word document, Swift [closed]","datePublished":"2023-01-14T10:09:44+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-create-a-word-document-swift-closed\/"},"wordCount":263,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["ios","swift"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-create-a-word-document-swift-closed\/","url":"https:\/\/jassweb.com\/solved\/solved-create-a-word-document-swift-closed\/","name":"[Solved] Create a word document, Swift [closed] - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2023-01-14T10:09:44+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-create-a-word-document-swift-closed\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-create-a-word-document-swift-closed\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-create-a-word-document-swift-closed\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] Create a word document, Swift [closed]"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/30348","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=30348"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/30348\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=30348"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=30348"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=30348"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}