converte CDA XML para PDF sem * TeX?

2

Pedimos desculpa pela hiperespecificidade dos meus requisitos, mas eles são o que são ...

resumo

A caixa que estou usando roda o Debian. Desejo apresentar um documento de Arquitetura de documentos clínicos (CDA) em PDF para enviar como anexo . O Chrome falha totalmente, o Firefox quase é bem-sucedido e xmlto quer o TeX (que já foi um problema de instalação nesta caixa). Tem uma alternativa?

detalhes

Um documento CDA é basicamente um arquivo zip ed contendo XML, estilo e imagens. No meu caso, o filetree é como

$ 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

Notas:

  1. DOC0001.XML é a carga de dados: todos os outros arquivos são apenas decoração.
  2. INDEX.HTM não é uma renderização de DOC0001.XML ; é uma página totalmente separada com um link para DOC0001.XML ( et al ) mais algum texto explicativo.
  3. README.TXT não é muito: apenas as informações acima, além de como unzip um arquivo.
  4. Então, por que o Summary.pdf não resolve meu problema? Infelizmente, este PDF contém um lote de informações irrelevantes, porque .../DOC0001.XML (que contém os dados reais) contém muitos itens que não são relevantes para o consumidor. Eu posso editar esse XML sem dificuldade, e até renderizar o XML editado (veja seção = Firefox abaixo), mas não consigo converter esse XML editado em um PDF ... daí minha pergunta.

tentou e falhou

Chrome

Eu tenho o Chrome (também conhecido por google-chrome-stable ) version = 60.0.3112.90 (que eu acredito que esteja atualmente atualizado para a versão Debian = 8.9, que eu acredito ser estável para o Debian atual). Quando estou nisso e faço

  1. Ctrl-o
  2. forneça o caminho completo para .../MachineReadable_XDMFormat/IHE_XDM/my_ID/DOC0001.XML

O Chrome não faz absolutamente nada: nenhum erro, mas também uma página / guia completamente em branco. Da mesma forma, se eu

  1. Ctrl-o
  2. forneça o caminho completo para .../MachineReadable_XDMFormat/INDEX.HTM
  3. siga o link para DOC0001.XML

O Chrome processa INDEX.HTM de forma adequada, mas falha como anteriormente em DOC0001.XML .

Firefox

Eu tenho a versão do Firefox = 54.0 (que eu acredito que esteja atualmente atualizada para a versão Debian = 8.9, que eu acredito ser estável para o Debian atual). Quando estou nisso e faço

  1. Ctrl-o
  2. forneça o caminho completo para .../MachineReadable_XDMFormat/IHE_XDM/my_ID/DOC0001.XML

O Firefox processa o documento de forma correta / adequada. Por isso eu pensei que eu poderia usar a funcionalidade normal do Firefox Print to File para imprimir isso ... mas ele falha, pois ele tenta imprimir o bastante longo DOC0001.XML como 4 páginas:

  1. 1º tem seções curtas
  2. O segundo tem apenas o cabeçalho = Results e nenhum outro texto. No XML, esse é o <section> contendo todos os dados reais (como <item> s).
  3. 3as tentativas de imprimir todos os dados reais. Infelizmente, há muito mais dados que podem ser impressos em uma página; em vez de manipular esse caso, Print to File apenas trunca a única página :-(
  4. O 4th possui alguns metadados e a maioria das "informações" de INDEX.HTM .

xmlto

xmlto (do pacote Debian de mesmo nome) tenta, mas

  1. Ele deseja executar o FO, para o qual ele quer o TeX, que é um problema local (consulte a seção = internal abaixo).
  2. De sua mensagem de erro (abaixo), não tenho certeza se xmlto renderizará esse XML adequadamente, pois a raiz desse documento (CDA) é ∉ {appendix article bibliography book chapter colophon dedication glossary index part preface qandaset refentry reference sect1 section set setindex} .

O que eu tentei:

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

restrições

externo

  1. A organização sem rosto grande com as informações codificadas no documento CDA fornece esse período. Como o CDA parece ser um formato padrão para o intercâmbio de informações em seu domínio, isso não parece irrazoável.
  2. As pessoas que desejam as informações codificadas no documento CDA podem consumir faxes ou PDF por email, mas nada mais sofisticado.
  3. Eu não tenho acesso imediato a um aparelho de fax.

interno

Ou seja, restrições do meu lado:

  1. Estou executando a versão Debian = 8.9 ...
  2. ... em uma caixa com espaço livre suficiente em disco, ou talvez não tenha alocado espaço em disco corretamente. Provavelmente como resultado, ...
  3. ... a última vez que tentei instalar o texlive , (IIRC) ele foi desativado devido à falta de espaço. Isso pode ser simplesmente devido ao espaço insuficiente alocado na minha partição / , que é na verdade uma partição para tudo que não é {/boot, /home, /swap} . Detalhes:

    # 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
    
por TomRoche 03.08.2017 / 03:42

0 respostas

Tags