对于我的要求的超具体性表示歉意,但它们就是这样......
概括
我使用的机器运行的是 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
笔记:
DOC0001.XML
是数据有效负载:所有其他文件都只是装饰。INDEX.HTM
不是 的渲染DOC0001.XML
;这是一个完全独立的页面,带有指向DOC0001.XML
(等人)加上一些解释性文字。README.TXT
不多:只是上面的信息,加上如何创建unzip
一个文件。- 那么为什么不能解决
Summary.pdf
我的问题呢?不幸的是,这个 PDF 包含一个很多无关信息,因为.../DOC0001.XML
(包含实际数据)包含许多与消费者无关的项目。我可以毫无困难地编辑该 XML,甚至渲染编辑后的 XML(请参阅Firefox
下面的部分),但我无法将编辑后的 XML 转换为 PDF...因此我的问题。
尝试过但失败了
铬合金
我有 Chrome(又名google-chrome-stable
)版本=60.0.3112.90(我相信它是当前最新的 Debian 版本=8.9,我相信它是当前的 Debian 稳定版)。当我这样做时
Ctrl-o
- 给出完全合格的路径
.../MachineReadable_XDMFormat/IHE_XDM/my_ID/DOC0001.XML
Chrome 绝对不执行任何操作:没有错误,但也是一个完全空白的页面/选项卡。同样如果我
Ctrl-o
- 给出完全合格的路径
.../MachineReadable_XDMFormat/INDEX.HTM
- 请点击链接
DOC0001.XML
Chrome 可以INDEX.HTM
正确渲染,但会像以前一样在DOC0001.XML
.
火狐浏览器
我的 Firefox 版本=54.0(我相信当前 Debian 版本=8.9 是最新的,我相信当前 Debian 是稳定的)。当我这样做时
Ctrl-o
- 给出完全合格的路径
.../MachineReadable_XDMFormat/IHE_XDM/my_ID/DOC0001.XML
Firefox 适当/漂亮地呈现文档。因此我想我可以使用通常的 FirefoxPrint to File
功能来打印这个......但是它失败了,因为它尝试打印相当长的DOC0001.XML
4 页:
- 第一个有 Buncha 短节
- 第二个只有 header=
Results
,没有其他文本。在 XML 中,它包含<section>
所有真实数据(如<item>
s)。 - 第三次尝试打印全部真实数据。不幸的是,一页纸上打印的数据远远不够;不处理这种情况,
Print to File
只是截断单个页面:-(
- 4th 有一些元数据,大部分“信息”来自
INDEX.HTM
.
xmlto
xmlto
(来自同名的 Debian 软件包)尝试过,但是
- 它想要运行 FO,为此它需要 TeX,这在本地是一个问题(参见
internal
下面的部分)。 - 从它的错误消息(如下)来看,我什至不确定
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
限制条件
外部的
- Big Faceless Org 及其 CDA 文档中编码的信息提供了这一点。由于 CDA 似乎是其领域内信息交换的标准格式,因此这似乎并非没有道理。
- 想要将信息编码到 CDA 文档中的人们可以通过电子邮件使用传真或 PDF,但没有什么比这更复杂的了。
- 我无法使用传真机。
内部的
即,我这边的限制:
- 我正在运行 Debian 版本=8.9 ...
- ...在没有足够可用磁盘空间的盒子上,或者可能没有正确分配磁盘空间。大概的结果是,...
...我上次尝试安装时
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