string - 后记:用省略号截断字符串?

标签 string printing postscript

有没有办法通过 PostScript 添加一个字符串,这样它就会被“...”截断,以免超过一定的宽度?

我正在查看一些旧的报告生成代码,并希望添加此功能。在现有报告中,太长的值在视觉上会覆盖其他数据。

我尝试在 PS 级别执行此操作的原因是,在现有代码中我看不到任何可以计算任何类型的精确宽度指标的内容。

我还没有写任何后记,所以也许这是微不足道的。 (?)

下面的评论:是的,本地化将是一个问题。所以我想用户定义的“省略号”字符串是有意义的。

以下是一些示例输出,显示当前如何打印字符串:

% Change font style and/or size
/Times-Roman-ISOLatin1 findfont 12 scalefont setfont
219 234 moveto (AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA_) show

可以修改它以省略事物吗?

最佳答案

你可以这样做(用省略号替换连接字符串前面的字符):

/concatstrings % (a) (b) -> (ab)  
   { exch dup length    
     2 index length add string    
     dup dup 4 2 roll copy length
     4 -1 roll putinterval
   } bind def  

/ellipsis_show {
   1 dict begin
     /width_t exch def
     {dup stringwidth pop width_t lt {exit} if dup length 1 sub 0 exch getinterval} loop
     (_) concatstrings
     show
    end
}def

% Change font style and/or size
/Times-Roman-ISOLatin1 findfont 12 scalefont setfont
0 0 moveto (foobar barfoo foofoo barbar) 100.0 ellipsis_show

concatstrings 复制自:http://en.wikibooks.org/wiki/PostScript_FAQ#How_to_concatenate_strings.3F

关于string - 后记:用省略号截断字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19966532/

相关文章:

c++ - 从 ttf 到 type 2 CID 字体(type 42 基本字体)的转换

java - 在与声明不同的位置初始化的字符串

css - 为什么在打印模式下我会在 SVG 图标附近看到额外的线条?

javascript - 如何将字符串点符号转换为对象引用,而不是嵌套

python - 格式化字典

java - 如何在 Java 应用程序中打印 PDF 文件?

postscript - 后记中的居中剪切/倾斜

.net - 如何按指定顺序将数千个 PDF 文件转换为单个 Postscript 文件

python - 在 python 中,如何通过用户输入模块名称的字符串来导入模块

python - 拆分字符串 - Python