首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PDF格式的文本源代码,包含制表符/制表符或固定宽度技巧

PDF格式的文本源代码,包含制表符/制表符或固定宽度技巧
EN

Stack Overflow用户
提问于 2021-09-21 13:12:02
回答 1查看 134关注 0票数 1

我有这个变量字符串: ID#9NAME#9VALUE

这个字符串在PDF中是什么样的?(ID) Tj (姓名) Tj (价值) Tj

我必须将s变量转换为PDF字符串。如何将#9字符更改为工作的制表字符?我可以将9号字符改为7号#20,但这对我不好,因为我和W是不同的宽度。

有什么诡计吗?比如水平间距(百分比)?

(ID) Tj

一些间距为100个水平像素的代码

(姓名) Tj

一些间距为100个水平像素的代码

(价值) Tj

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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")试一试

代码语言:javascript
复制
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的建议编写(我添加了一个起点)

代码语言:javascript
复制
50 800 Td (ID) Tj 100 0 Td (NAME) Tj 100 0 Td (VALUE) Tj

在注释中,您询问了添加行的问题,对于逐行循环编程,最简单的方法是使用类似的方法。(在这个例子中跳过780)和相反,我上面的评论BT和ET通常都是大写。

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69269515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档