Конкретная проблема, связанная с MathJax, затем (авто?) сохранить в слово или pdf

Слушайте, это может быть вопрос-обман, и извините, если это так... но, честно говоря, все, что я нашел по этому вопросу, похоже, относится к 2007 году или требует особых предостережений для IE6 и тому подобного.

Настройка: веб-страница с использованием математической разметки и MathJax для отображения математики на веб-странице (работает нормально).

Пользователь (пользователи) должен иметь возможность экспортировать это в какой-либо документ - слово, PDF и т. Д. - для распространения среди корректоров, которым не разрешено / не желательно находиться «в системе», где обслуживаются страницы.

Проблема: все, что я пробовал до сих пор, чтобы вывести обработанный конечный продукт в какой-то документ - ДРУГОЕ, чем выполнение пользователем инициированной браузером печати - показывает неотрендеренную разметку, а не конечный продукт.

Это, очевидно, связано с тем, как библиотека MathJax отображает страницу, когда она полностью доступна в браузере, поскольку это просто включение сценария JS. Никаких сюрпризов.

Я могу закрыть, выполнив ajax-вызов страницы, которая отображается, и отправив весь этот блок html на третью страницу, чтобы записать на диск и повторно обслужить его с заголовками mime и content disposition для msword, сохраняя его на диск и т. д., но рендеринг неправильный - предположительно из-за его упаковки в вызове POST. В любом случае, это слишком много шагов, чтобы прийти к не совсем правильному решению.

Я предполагаю, что ответ будет «вы не можете этого сделать», по крайней мере, без использования одной из ОГРОМНЫХ установок TeX Live или MikTex и т. д., и делать это в бэкэнде с вызовами оболочки. ... но у меня все равно нет возможности установить на эти хосты.

Я застрял с пользователями, использующими решение для печати в PDF? Есть что-то, что мне не хватает?

Спасибо, рад конкретизировать там, где это необходимо, но я не могу быть первым, кто пытается это сделать.


person ChrisH    schedule 20.05.2015    source источник
comment
Не уверен, что следую. Похоже, вы ищете способ превратить HTML в PDF на сервере с обработкой MathJax. Это примерно так? (docx - это совсем другой беспорядок, и он с меньшей вероятностью будет работать)   -  person Peter Krautzberger    schedule 22.05.2015
comment
Правильно, да. Мне нужно сделать его визуализированным и переносимым, без необходимости для конечных пользователей быть в сети и/или установить библиотеки MathJax. И, чтобы быть честным, мы оцениваем несколько вариантов, включая доступ только для чтения к системе и/или публикацию html в Wiki или что-то еще, чтобы люди могли проверить это там. Однако лучше всего использовать переносимые документы с пострендерингом. И опять же, я совершенно уверен, что ответом будет то, что вы не сможете этого сделать (без использования TexLive или аналогичных механизмов обработки), и это прекрасный ответ. Просто убедиться, что я ничего не пропустил. Спасибо!   -  person ChrisH    schedule 23.05.2015


Ответы (2)


Для PDF есть несколько вариантов, и они в основном зависят от того, сколько работы вы хотите приложить.

Быстрым и грязным решением может быть wkhtmltopdf, но вам придется укажите время ожидания для завершения рендеринга JavaScript — не идеально.

PhantomJS требует немного больше работы, но позволяет вам прослушивать страницу, например, это обсуждение ссылается на простой пример. (На самом деле существует множество инструментов на основе PhantomJS.)

Другой способ — сначала выполнить предварительную обработку с помощью MathJax-node, а затем передать результат в wkhtmltopdf (тогда вам не придется ждать MathJax).

Для doc/docx я не думаю, что сейчас есть какой-либо способ. Естественным способом было бы использовать MathJax-node для генерации MathML, поскольку Word может импортировать MathML. Но Word, похоже, не поддерживает MathML при импорте из HTML. То же самое относится и к генерации SVG с помощью MathJax-node (но с SVG вы потеряете возможность редактировать уравнения, так что в любом случае это может быть запредельным).

Пандок может в конечном итоге помочь. Очевидно, он может преобразовывать математику в формат MS Office, см. демонстрацию №30). Но, судя по быстрому тесту, сейчас это не работает для ввода HTML.

person Peter Krautzberger    schedule 25.05.2015
comment
Меня меньше заботит сложность любой реализации, чем получение последовательных, воспроизводимых и качественных результатов. Вещи, на которые я смотрел до сих пор, были ужасны, и до сих пор мы склонялись к тому, чтобы просто публиковать HTML с JIT-рендерингом MathJax с помощью обычных скриптов, включая что-то вроде вики или другого механизма отображения и отказываясь от переносимости на основе документов. . Это просто кажется лучше, проще и, как уже отмечалось, более последовательным и воспроизводимым. Спасибо за информацию; Я также посмотрю на MathJax-node. - person ChrisH; 26.05.2015
comment
Полагаю, я все еще не понимаю, чего вы на самом деле добиваетесь. - person Peter Krautzberger; 26.05.2015
comment
Я думаю, я не ясно. Я хочу предварительно преобразовать форматирование mathjax в автономный документ для передачи, не полагаясь на корректуру пользователей, подключенных к сети, и не используя js-библиотеку mathjax для рендеринга во время просмотра. *пожал плечами* - person ChrisH; 27.05.2015
comment
Верно. В своем комментарии выше вы упоминаете некоторые требования к качеству рендеринга, в то время как исходный вопрос, казалось, был эквивалентен печати в PDF. Вообще говоря, высококачественный HTML в PDF сложно (особенно без каких-либо знаний HTML и CSS), вероятно, сложно конвертировать html в docx (но в первую очередь очень разные). Добавление математики увеличивает сложность. - person Peter Krautzberger; 27.05.2015

Если вы рассматриваете коммерческие решения, взгляните на pdfChip от программного обеспечения callas (предупреждение: я тесно связан с этим решением).

Он преобразует HTML в PDF и фактически преобразует MathML с помощью MathJax в правильный файл PDF (это может быть даже файл PDF/X или PDF/A, если вы того пожелаете). Я буду рад предоставить более подробную информацию в автономном режиме.

person David van Driessche    schedule 25.05.2015
comment
Я не тот парень, который принимает решения о покупке. Я пишу код, анализирую, проектирую и решаю. Финансовые парни принимают окончательное решение. Я посмотрю на PDFChip, и если есть демоверсия, я попробую. Мы не боимся тратить правильные деньги на коммерческий пакет. Спасибо. - person ChrisH; 26.05.2015