Вывести сложную HTML-строку в WKWebView в Swift4

Мы используем функцию JS window.webkit.messageHandlers.name.postMessage(messageBody) для отправки HTML-кодов в iOS для операции печати. ( Захват window.print () из WKWebView)

И мы получаем messageBody как JSON String, используя WKScriptMessageHandler в iOS.

 func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
  if message.name == "print", let messageBody = message.body as? String 
   {
      let html = (messageBody as! NSDictionary)["html"] as! String
      let printController = UIPrintInteractionController.shared
      let printInfo = UIPrintInfo(dictionary:nil)
      printInfo.outputType = UIPrintInfoOutputType.general
      printInfo.jobName = ""
      printInfo.duplex = UIPrintInfoDuplex.none
      printInfo.orientation = UIPrintInfoOrientation.portrait
      printController.printInfo = printInfo
      let formatter = UIMarkupTextPrintFormatter(markupText: html)
      printController.printFormatter = formatter
   }
}

В соответствии с приведенным выше кодом мы проанализировали messageBody, чтобы получить html. После анализа html содержит несколько скриптов и таблиц стилей. Таким образом, они имеют теги, такие как src, href и т. Д. Значения тегов обозначены ** кавычками и символами новой строки **

<link href="/css/basic/core/a.css" rel="stylesheet">

Мы используем UIPrintInteractionController - центральный класс для печати в iOS. Этот контроллер использует форматер для печати HTML-кодов, например:

 let formatter = UIMarkupTextPrintFormatter(markupText: html)
            printController.printFormatter = formatter

Функция UIMarkupTextPrintFormatter хочет, чтобы входные данные были представлены как String, поэтому мы должны преобразовать (messageBody как! NSDictionary) ["html"] в String.

Я пытаюсь объяснить вам, что я сделал до сих пор.

Основная проблема: приведение html-кода (взятого из простого текста JSON) к String,

Двойные кавычки (") были преобразованы в \", одинарные кавычки (') были преобразованы в \'. Новые строки преобразуются в \ n.

Таким образом, HTML был сломан так:

Перед тем как бросить строку:

 <link href="/css/basic/core/a.css" rel="stylesheet">

 <a href="https://www.w3schools.com">Visit W3Schools.com!</a>

После произнесения строки:

 <link href=\"/css/basic/core/a.css" rel="stylesheet">\n <a href=\"https://www.w3schools.com\">Visit W3Schools.com!</a>

Поскольку структура HTML нарушена, мы не можем печатать. Кто-нибудь сталкивался с этой проблемой раньше? Как мы можем установить форматирование текста?

Спасибо заранее С уважением,

0 ответов

Другие вопросы по тегам