1
我使用Perl在PDF報告上打印文本。數據來自oracle數據庫表。如果字符串長度超過此大小,我想截斷字符串到特定大小。我嘗試使用substr
函數,但它似乎是以字符計算的。我想計算佔用的空間。這是我的嘗試:在Perl中截斷字節的字符串
$field_str .= ($totalwidth < 210) ? ' ' : "\n";
$field_str_trunc = substr($field_str, 0, 278);
這個工作正常,當數據是全部大寫的;但是,當我將它設置爲小寫並添加了更多數據時,沒有足夠的數據顯示在PDF上。我怎樣才能做到這一點?
字符串的每個元素都是一個字符。這些字符可以是字節,Unicode代碼點或其他任何內容。 ///這聽起來像你有一串Unicode代碼點,並且它想要限制其UTF-8編碼的大小。你沒有對字符串進行UTF-8編碼,因此得到這是你需要做的第一件事。 – ikegami
這聽起來像你想截斷整個字符串的特定圖形長度(以像素或其他),而不是字節。每個字符的字節數相同(除了佔用2個字節的特殊字符,但通常所有字符都是單個字節)。這並不意味着它們都是相同的圖形長度 - 這取決於字體。你可以使用像Courier這樣的固定寬度的字體來解決這個問題。否則,您將不得不檢索字體細節以計算長度。 – hepcat72