Как я могу визуализировать Xetex, используя Swift

Я работаю над приложением Какао, используя Swift 4.0, и я пытаюсь визуализировать LaTeX, используя компилятор xetex. Основным преимуществом моего приложения является то, что оно должно иметь возможность рендеринга с использованием разных.ttf, поэтому я считаю, что мне нужен xetex (или даже luaLaTeX).

Вот что я пробовал

  1. Я подумал об использовании облачного рендерера LaTeX, чтобы мне не пришлось беспокоиться об установке Xetex для каждой системы, но это не очень удачно, потому что я мог найти только платный сервис, который делает это в Node.js, который я и не надену. Я не могу использовать.

  2. Затем я предположил, что пользователь выполнил инструкцию по загрузке xetex онлайн, и я использовал системный вызов через Process() с помощью команды /Library/TeX/texbin/xetex, и это почти сработало, но XCode ворчал по поводу безопасности, давая мне сообщение

compileLatex.sh: line 3: /Library/TeX/texbin/xetex: Operation not permitted

Есть ли какие-либо известные обходные пути для этого, которые я могу сделать? Если бы я мог каким-то образом связать компилятор xetex с моим приложением, я думаю, что это было бы хорошо, но я понятия не имею, как сделать что-то подобное.

Восстановить код

Содержимое compileLatex.sh, которое вызывается процессом ()

#!/bin/bash

/Library/TeX/texbin/xetex "$1"
open "$2"

Содержимое ViewController, который вызывает скрипт bash.

let file = "TemplateMODIFIED.tex"

    if let dir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first {

        var env = ProcessInfo.processInfo.environment
        var path = env["PATH"] as! String
        path = "/Library/TeX/texbin:" + path
        env["PATH"] = path

        let task = Process()
        task.launchPath = "/bin/bash"
        task.environment = env
        task.arguments = [dir.path + "/compileLatex.sh", dir.path + "/TemplateMODIFIED.tex", dir.path + "/TemplateMODIFIED.pdf"]
        task.launch()

    }

Любой совет по поводу обходного пути или лучшей практики, которую я должен использовать, приветствуется. Спасибо!

ОБНОВЛЕНИЕ: Я только что узнал о файле project.entitlements для проекта Какао, поэтому, выключив режим "Песочница", я смог выполнить системный вызов и преодолеть Operation not permitted ошибка. Так что я могу заставить его работать, но я все еще не полностью удовлетворен этим решением, поскольку пользователь должен загрузить и установить xetex перед использованием этого приложения.

0 ответов

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