我有这个变量字符串: ID#9NAME#9VALUE
这个字符串在PDF中是什么样的?(ID) Tj (姓名) Tj (价值) Tj
我必须将s变量转换为PDF字符串。如何将#9字符更改为工作的制表字符?我可以将9号字符改为7号#20,但这对我不好,因为我和W是不同的宽度。
有什么诡计吗?比如水平间距(百分比)?
(ID) Tj
一些间距为100个水平像素的代码
(姓名) Tj
一些间距为100个水平像素的代码
(价值) Tj
发布于 2021-09-21 14:55:44
你的9号似乎是^09,即(HT)
这应该是x09 in (基数16 /十六进制)。或\011 (基数为8)或\t在文字字符串中
如果在基本字体中这样定义,那么您应该能够插入它。
(ID\t\tNAME\t\tVALUE) TJ

或
(ID\011\011NAME\011\011VALUE) Tj
但是,正如@mkl所指出的,这些是传统的机械打印机运输停止,可以从左行设置为4或8个字符,或者打印机操作员选择放置缩进或列的任何东西。因此,在字处理器中,数字和位置都是高度可变的。但在PDF中通常被忽略。
在PDF中,将每个字符块设置为一个新的x,y位置更为传统,其中y是每个文本块在该高度上的常数。
因此,对于制表符停止方法,以制表符在1英寸(基于默认的1单位=1/72")试一试
stream
q
BT
/F1 12 Tf
1 0 0 1 144 720 Tm
(ID) Tj
ET
BT
/F1 12 Tf
1 0 0 1 216 720 Tm
(NAME) Tj
ET
BT
/F1 12 Tf
1 0 0 1 288 720 Tm
(VALUE) Tj
ET
Q
endstream请记住,在PDF中,所有空格都是相等的,但有些空格比其他空格更相等。
因此,在这里,find id name value将不存在的选项卡接受为单个空白:-

最后,要回答您的查询,可以设置固定的空间,从文本开始到另一个文本的开始,就像使用Td的制表符停止一样。注:我有意使用TD和Td混合,以表明在这种情况下它并不重要:-)然而,人类可读的惯例是为对象(名词)和小写字母"action“(动词)使用大写的大写,所以Td更适合用眼睛进行调试。

这可以按照@mkl的建议编写(我添加了一个起点)
50 800 Td (ID) Tj 100 0 Td (NAME) Tj 100 0 Td (VALUE) Tj在注释中,您询问了添加行的问题,对于逐行循环编程,最简单的方法是使用类似的方法。(在这个例子中跳过780)和相反,我上面的评论BT和ET通常都是大写。
BT 50 800 Td (ID) Tj 100 0 Td (NAME) Tj 100 0 Td (VALUE) Tj ET
BT 50 760 Td (A1) Tj 100 0 Td (Example) Tj 100 0 Td (2000) Tj ET
BT 50 740 Td (B2) Tj 100 0 Td (Another) Tj 100 0 Td (1000) Tj ET

https://stackoverflow.com/questions/69269515
复制相似问题