Как я могу визуализировать Xetex, используя Swift
Я работаю над приложением Какао, используя Swift 4.0, и я пытаюсь визуализировать LaTeX, используя компилятор xetex. Основным преимуществом моего приложения является то, что оно должно иметь возможность рендеринга с использованием разных.ttf, поэтому я считаю, что мне нужен xetex (или даже luaLaTeX).
Вот что я пробовал
Я подумал об использовании облачного рендерера LaTeX, чтобы мне не пришлось беспокоиться об установке Xetex для каждой системы, но это не очень удачно, потому что я мог найти только платный сервис, который делает это в Node.js, который я и не надену. Я не могу использовать.
Затем я предположил, что пользователь выполнил инструкцию по загрузке 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 перед использованием этого приложения.