概括

概括

对于我的要求的超具体性表示歉意,但它们就是这样......

概括

我使用的机器运行的是 Debian。我想渲染一个临床文档架构 (CDA)将文档转换为 PDF 以作为附件发送。 Chrome彻底失败,Firefox几乎成功了,并且xmlto想要 TeX(过去在这个盒子上安装它是一个问题)。有替代方案吗?

细节

CDA 文档基本上是一个zip包含 XML、样式和图像的 ed 文件树。就我而言,文件树就像

$ 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)版本=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.

火狐浏览器

我的 Firefox 版本=54.0(我相信当前 Debian 版本=8.9 是最新的,我相信当前 Debian 是稳定的)。当我这样做时

  1. Ctrl-o
  2. 给出完全合格的路径.../MachineReadable_XDMFormat/IHE_XDM/my_ID/DOC0001.XML

Firefox 适当/漂亮地呈现文档。因此我想我可以使用通常的 FirefoxPrint to File功能来打印这个......但是它失败了,因为它尝试打印相当长的DOC0001.XML4 页:

  1. 第一个有 Buncha 短节
  2. 第二个只有 header= Results,没有其他文本。在 XML 中,它包含<section>所有真实数据(如<item>s)。
  3. 第三次尝试打印全部真实数据。不幸的是,一页纸上打印的数据远远不够;不处理这种情况,Print to File只是截断单个页面:-(
  4. 4th 有一些元数据,大部分“信息”来自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. Big Faceless Org 及其 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
    

相关内容