文件名中的特殊符号在mPDF中无法正确显示

时间:2017-01-19 09:47:13

标签: php mpdf

我有代码:

    $mpdf = new mPDF();
    $mpdf->WriteHTML('some html text');
    return $mpdf->Output("123!@#$%^&*()_+<><?:}{P}" . '.pdf', 'I');

但是当我在文件名中保存文档时,符号<>?:会显示-----。 可以修复吗?

1 个答案:

答案 0 :(得分:2)

首先,这个问题与PDF生成无关。您希望创建一个文件系统对象,其名称包含在某些shell中具有特殊含义的字符:

  • <是输入redirecton运算符
  • >是输出重定向运算符
  • ?任意字符通配符
  • :是Windows驱动器号分隔符

并且您希望通过一个您无法控制的附加层来实现它(我假设是一个Web浏览器)。

某些文件系统(并非所有文件系统)将对象名称视为原始字节字符串,并且不强加任何条件。我记得能够在一个包含*字符和换行符的旧Unix框中创建文件,之后我读了一本书,解释了这样的事情是可能的。但是,文件名通过几个软件层,其中许多实际上需要理解名称,其中一些可能会对文件系统本身施加额外的限制。因此,即使您设法创建该文件,您也可能无法在以后阅读它。

因此,浏览器会主动删除有问题的字符。在某些情况下,它可能过于热心(:在Unix上是安全的)但它只是试图防止潜在的问题(例如,Unix文件通过电子邮件发送或复制到Windows共享)并且你没有什么可以做的在服务器上做以避免这种情况。