конвертировать CDA XML в PDF без * TeX?

Извинения за гиперспецифичность моих требований, но они такие, какие они …

резюме

Ящик, который я использую, запускает Debian. Я хочу, чтобы документ документации по клинической документации (CDA) был отправлен в PDF в качестве вложения. Chrome полностью не работает, Firefox почти преуспевает, а xmlto хочет, чтобы TeX (который в прошлом был проблемой установки в этом поле). Есть альтернатива?

Детали

CDA-документ – это, в основном, zip ed filetree, содержащий XML, стиль и изображения. В моем случае filetree похож на

 $ find | sort # edited for brevity and PII . ./MachineReadable_XDMFormat ./MachineReadable_XDMFormat/HTML ./MachineReadable_XDMFormat/HTML/IMAGES # list of PNGs omitted ./MachineReadable_XDMFormat/HTML/STYLE ./MachineReadable_XDMFormat/HTML/STYLE/colors.css ./MachineReadable_XDMFormat/HTML/STYLE/main.css ./MachineReadable_XDMFormat/IHE_XDM ./MachineReadable_XDMFormat/IHE_XDM/my_ID ./MachineReadable_XDMFormat/IHE_XDM/my_ID/DOC0001.XML # see note#=1 ./MachineReadable_XDMFormat/IHE_XDM/my_ID/METADATA.XML ./MachineReadable_XDMFormat/IHE_XDM/my_ID/STYLE.XSL ./MachineReadable_XDMFormat/INDEX.HTM # see note#=2 ./MachineReadable_XDMFormat/README.TXT # see note#=3 ./MachineReadable_XDMFormat/Summary.pdf # see note#=4 

Заметки:

  1. DOC0001.XML – полезная нагрузка данных: все остальные файлы являются просто украшением.
  2. INDEX.HTM не является рендерингом DOC0001.XML ; это полностью отдельная страница со ссылкой на DOC0001.XML ( и др. ) плюс некоторый пояснительный текст.
  3. README.TXT не так много: просто информация выше, а также как unzip файл.
  4. Так почему же Summary.pdf не решает мою проблему? К сожалению, этот PDF-файл содержит много посторонней информации, потому что .../DOC0001.XML (содержащий фактические данные) содержит много элементов, которые не имеют отношения к потребителю. Я могу без труда редактировать этот XML и даже редактировать отредактированный XML (см. Раздел = Firefox ниже), но я не могу преобразовать этот отредактированный XML в PDF … следовательно, мой вопрос.

попробовал и не смог

Хром

У меня есть Chrome (он же google-chrome-stable ) version = 60.0.3112.90 (который, я считаю, в настоящее время обновлен для версии Debian = 8,9, что, на мой взгляд, является стабильным для Debian). Когда я в этом и делаю

  1. Ctrl-o
  2. дать полный путь к .../MachineReadable_XDMFormat/IHE_XDM/my_ID/DOC0001.XML

Chrome абсолютно ничего не делает: никаких ошибок, но и полностью пустой страницы / вкладки. Аналогично, если я

  1. Ctrl-o
  2. дать полный путь к .../MachineReadable_XDMFormat/INDEX.HTM
  3. перейдите по ссылке в DOC0001.XML

Chrome делает INDEX.HTM соответствующим образом, но не работает, как ранее, на DOC0001.XML .

Fire Fox

У меня есть версия Firefox = 54.0 (которая, на мой взгляд, в настоящее время актуальна для версии Debian = 8.9, которая, по моему мнению, является текущей стабильностью Debian). Когда я в этом и делаю

  1. Ctrl-o
  2. дать полный путь к .../MachineReadable_XDMFormat/IHE_XDM/my_ID/DOC0001.XML

Firefox делает документ соответствующим / красивым. Поэтому я думал, что могу использовать обычную функциональность Firefox Print to File чтобы напечатать это … но он терпит неудачу, поскольку он пытается напечатать довольно длинный DOC0001.XML как 4 страницы:

  1. 1-й имеет короткие разделы buncha
  2. Второй имеет только заголовок = Results и другой текст. В XML это <section> содержащий все реальные данные (как <item> s).
  3. Третья попытка распечатать все реальные данные. К сожалению, есть гораздо больше данных, чем может печатать на 1 странице; вместо того, чтобы обрабатывать этот случай, Print to File просто обрезает одну страницу :-(
  4. Четвертый имеет некоторые метаданные и большую часть «информации» от INDEX.HTM .

xmlto

xmlto (из одноименного пакета Debian) пытается, но

  1. Он хочет запустить FO, для которого он хочет TeX, который является локально проблемой (см. Раздел = internal ниже).
  2. Из его сообщения об ошибке (ниже) я даже не уверен, что xmlto будет отображать этот XML надлежащим образом, так как этот (CDA) корневой каталог документа ∉ {appendix article bibliography book chapter colophon dedication glossary index part preface qandaset refentry reference sect1 section set setindex} .

То, что я пробовал:

 me@it:~ $ pushd /path/to/CDA/ me@it:/path/to/CDA $ ls -al > drwxr-xr-x 4 me me 4096 Jul 21 10:38 MachineReadable_XDMFormat > -rw-r--r-- 1 me me 1075851 Jul 21 13:35 Summary.pdf me@it:/path/to/CDA $ date ; xmlto pdf ./MachineReadable_XDMFormat/IHE_XDM/my_ID/DOC0001.XML ; date > Wed Aug 2 15:03:17 MST 2017 > xmlto: /path/to/CDA/MachineReadable_XDMFormat/IHE_XDM/my_ID/DOC0001.XML does not validate (status 3) > xmlto: Fix document syntax or use --skip-validation option > validity error : no DTD found! ... me@it:/path/to/CDA $ date ; find ./ -type f | fgrep -ie 'dtd' | wcl > Wed Aug 2 15:04:10 MST 2017 > 0 me@it:/path/to/CDA $ date ; xmlto --skip-validation pdf ./MachineReadable_XDMFormat/IHE_XDM/my_ID/DOC0001.XML ; date > Wed Aug 2 15:04:32 MST 2017 > ERROR: Document root element for FO output must be one of the following elements: appendix article bibliography book chapter colophon dedication glossary index part preface qandaset refentry reference sect1 section set setindex > PassiveTeX is needed for this format, but it is not installed. Please install the passivetex package. > Wed Aug 2 15:04:33 MST 2017 # Note PassiveTeX is a *TeX package me@it:/path/to/CDA $ date ; xmlto --with-fop --skip-validation pdf ./MachineReadable_XDMFormat/IHE_XDM/my_ID/DOC0001.XML ; date > Wed Aug 2 15:12:39 MST 2017 > ERROR: Document root element for FO output must be one of the following elements: appendix article bibliography book chapter colophon dedication glossary index part preface qandaset refentry reference sect1 section set setindex > [Fatal Error] :-1:-1: Premature end of file. > Exception > org.apache.fop.apps.FOPException: org.xml.sax.SAXParseException; Premature end of file. > javax.xml.transform.TransformerException: org.xml.sax.SAXParseException; Premature end of file. > > /tmp/xmlto.SEzLdk > Wed Aug 2 15:12:41 MST 2017 

ограничения

внешний

  1. Большая безликая организация с информацией, закодированной в документе CDA, предусматривает, что период. Поскольку CDA, по-видимому, является стандартным форматом обмена информацией в своей области, это кажется нецелесообразным.
  2. Люди, которые хотят получить информацию, закодированную в документе CDA, могут потреблять факсы или PDF по электронной почте, но не более сложные.
  3. У меня нет доступа к факсимильному аппарату.

внутренний

То есть, ограничения на моей стороне:

  1. Я запускаю версию Debian = 8.9 …
  2. … на ящике с недостаточно свободным дисковым пространством или, возможно, неправильно распределенным дисковым пространством. Вероятно, в результате …
  3. … в последний раз, когда я пытался установить texlive (IIRC), он был исправлен из-за нехватки места. Это может быть просто из-за нехватки места, выделенного на моем / разделе, который на самом деле является разделом для всего, что не является {/boot, /home, /swap} . Детали:

     # I tweak the header, but the data comes from ... me@it:~ $ df --human-readable | fgrep -ve 'Filesystem' | sort --key=2 --reverse --sort=human-numeric Filesystem Size Used Avail Use% Mounted on /dev/mapper/LVM2_crypt-home 322G 304G 19G 95% /home /dev/dm-2 20G 18G 891M 96% / tmpfs 1.6G 1.3M 1.6G 1% /run/shm /dev/sda3 477M 73M 375M 17% /boot # ... rest are fake filesystems like `/dev` # Notes on `lsblk`: # `sda1` == pre-installed Windows system drive # `sda2` == pre-installed Windows apps drive # Both are whackable, but I lack the time to reallocate the space # (and possibly reinstall after unforeseen/disastrous failure). me@it:~ $ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 465.8G 0 disk ├─sda1 8:1 0 16.6G 0 part ├─sda2 8:2 0 97.7G 0 part ├─sda3 8:3 0 500M 0 part /boot └─sda5 8:5 0 351G 0 part └─LVM2_crypt 254:0 0 351G 0 crypt ├─LVM2_crypt-swap 254:1 0 3.9G 0 lvm ├─LVM2_crypt-root 254:2 0 20G 0 lvm / └─LVM2_crypt-home 254:3 0 327.1G 0 lvm /home sr0 11:0 1 1024M 0 rom 

Linux и Unix - лучшая ОС в мире.