我正在使用tcpdf([例8] [1])从txt模板创建PDF文件。 txt模板如下所示:
SALUTATION
FIRSTNAME LASTNAME
STREET CURRENTDATE
SOMEMOREINFORMATION MYWEBSITE
我用正确的值替换这些标记。所以它看起来像这样:
Mr.
John Doe
Downingstreet 10 14th May, 2010
john@doe.com www.stackoverflow.com
在此示例中,当我替换值时,日期的缩进取决于街道名称的长度(我不想要)。我可以用str_pad解决这个问题,但问题是,我通常使用三列,并且有一些行只在col1中有内容,而col3在最后一行中。我该如何解决这个问题?是否有像Word中的“覆盖”功能,当你写,文本被覆盖?
提前致谢。
答案 0 :(得分:1)
计算街道的字符串长度,然后添加/删除日期的左边距。
答案 1 :(得分:0)
您可以使用sprintf,例如
function something($street, $currentDate, $foo) {
$s = sprintf('%-20s %-18s %s',
$street,
$currentDate,
$foo
);
return $s;
}
echo something('streetA', '14th May, 2010', 'lalala'), "\n";
echo something('Downingstreet 10', '14th May, 2010', 'lalala'), "\n";
echo something('abcdefghijklmnopqrstuvwxyz 10', '14th May, 2010', 'lalala'), "\n";
打印
streetA 14th May, 2010 lalala
Downingstreet 10 14th May, 2010 lalala
abcdefghijklmnopqrstuvwxyz 10 14th May, 2010 lalala
(从第三行可以看出,宽度规格是最小长度,所以你可能需要使用像substr()这样的东西)
答案 2 :(得分:0)
我认为你只是str_replace()使用它们的值来占位符?
$streetPlaceHolder = 'STREET ';
$streetReplacement = str_pad('Downingstreet 10', strlen($streetPlaceHolder));
$template = str_replace($streetPlaceHolder, $streetReplacement, $template);
据推测,你将遇到与SOMEMOREINFORMATION相同的问题。可以使用相同的解决方案。
我意识到你说str_pad对你来说不是一个理想的解决方案。但是,我不明白为什么,即使你把它扩展到三列。你仍然可以使用这种方法。