我正在使用PHP生成一些rtf文件。首先,我生成3种类型的文件,每种类型的多个变体(比如青铜、白银和黄金——我生成3个青铜文件、5个白银和2个黄金)。我想合并所有相同类型的文件-所有的青铜文件到一个rtf文件,所有的银文件合并到一个银文件和所有的金文件合并成一个金文件。
function merge_files($dir, $level, $type) {
if (is_dir($dir)) {
$files = glob("$dir/*$level*.rtf");
if (count($files) > 0) {
// open new file
$filename = "$type-$level.rtf";
if (!($out = fopen("$dir/$filename", "wb"))) { return false; }
foreach ($files as $file) {
if (!($in = fopen($file, "rb"))) { return false; }
/*while ($line = fgets($in)){
fwrite($out, $line);
}*/
fwrite($out, fread($in, filesize($file)));
fclose($in);
unlink($file);
}
fclose($out);
}
return true;
} else {
return false;
}
}
当我签入源代码时,它会将所有文件附加到一个文件中,但当我在MS Word中打开它时,它只显示第一个文件,而不显示其他文件。我想也许MS Word不显示它,因为必须有一些MS Word页面分隔符/页面分隔符才能在MS Word中显示所有内容。
我该怎么做?
一种方法是创建一个"容器"RTF组。容器RTF组将以"{\rtf1"开头,并以结尾"}"结束。您可以将所有RTF字符串插入到这个容器RTF组中。示例:
{\rtf1{第一rtf…}{第二rtf……}
Word随后会显示以上三个RTF。
这不是问题的真正答案,但它是我如何解决问题的答案。我在谷歌上搜索了更多,发现如果我想要简单易读的rtf源代码和自定义源代码,我必须将其保存在写字板中,而不是MS Word中,因为Word添加了很多(对我来说)无用的代码,只理解Word。另一方面,写字板将其保存得简单明了,然后可以很容易地将一个rtf文件附加到另一个。