PDF语法BT ET文本操作
查看PDF语法流BT ET,我有一些问题,我无法从PDF32000操作手册中理解: 一个好的在线资源链接也将是伟大的PDF语法BT ET文本操作,pdf,pdf-generation,Pdf,Pdf Generation,查看PDF语法流BT ET,我有一些问题,我无法从PDF32000操作手册中理解: 一个好的在线资源链接也将是伟大的 BT/F1 24 Tf。。。(我的字符串在这里)Tj ET 看看这段代码 如何插入换行符?使用\n\r没有帮助 如何更改字体大小 大胆地在字符串的中间 我试过英语以外的语言,但没能学好,我怎么能学好其他语言,希伯来语、阿拉伯语、汉语等等。。。更改字体没有帮助,编码到UTF16也没有帮助,我应该编码到不同的地方并设置编码吗 如何将文本限制在一定的宽度 如何设置线条高度属性 在同一
BT/F1 24 Tf。。。(我的字符串在这里)Tj ET
看看这段代码
- 如何插入换行符?使用
没有帮助\n\r
- 如何更改字体大小 大胆地在字符串的中间
- 我试过英语以外的语言,但没能学好,我怎么能学好其他语言,希伯来语、阿拉伯语、汉语等等。。。更改字体没有帮助,编码到UTF16也没有帮助,我应该编码到不同的地方并设置编码吗
- 如何将文本限制在一定的宽度
- 如何设置线条高度属性
- 在同一行中混合多种字体
我知道我可以使用PDFKit和PDFJS等。。。但是我真的很想知道PDF语法是如何工作的,在线PDF32000手册真的很长很复杂…首先,米切尔说的当然是对的
不幸的是,如果您想了解PDF语法是如何工作的,您需要阅读规范。当然,您只能阅读适用于文本的部分,第9章,可能还有9.2。但本章当然假设您了解PDF在结构上的工作方式以及对象的类型。我建议你读一读 不过,为了给你一些印象,这里有一些问题的答案 换行符 如何插入换行符?使用\n\r没有帮助 通过将文本拆分为单独的字符串(每行一个字符串)并分别绘制,然后通过重新定位当前文本位置前进到中间的下一行,可以在不同的行上绘制文本。有不同的方法来重新定位。例如
(Line 1 text) Tj
0 -20 Td
(Line 2 Text) Tj
字重
<如何在字符串中间更改字体权重为粗体?
通过选择粗体字体,例如
/MyNormalFont 12 Tf
(Normal text - ) Tj
/MyBoldFont 12 Tf
(bold text) Tj
/MyNormalFont 12 Tf
( - normal text again) Tj
您可以输出“普通文本-粗体文本--再次输出普通文本”
(还有穷人的粗体效果,比如用小胶印机双面打印字母…)
其他语言
我试过英语以外的语言,但没能学好,我怎么能学好其他语言,希伯来语、阿拉伯语、汉语等等。。。更改字体没有帮助,编码到UTF16也没有帮助,我应该编码到不同的地方并设置编码吗
您必须声明字体才能在内容流中使用它们。在此声明中,您特别定义了使用相关字体绘制的文本所使用的编码。对于上面的示例,编码必须是ASCII'ish,例如winansioncoding,但您通常会发现其他编码,特别是对于非英语文本
为此,您必须考虑类型<强>字体>的<强>资源>强。有关详细信息,请参阅规范第9章
另请参见下面“非拉丁字符”下的示例 限制文本宽度 如何将文本限制在一定的宽度 通过绘制足够少的字符 如上所述,在将字符串绘制指令放入内容流之前,必须将其拆分为多行。只需根据需要选择尽可能短的行 线高 如何设置线条高度属性 你是说从一条线的底部到下一条线的底部的距离吗?还是说字体的高度 前一个距离的选择方式取决于您到下一行的方式,请参见上文“换行符”下的内容。如果您像这里的示例中那样做,那么使用0 -20 Td
您可以在字体选择说明中设置后一种高度,即字体高度,例如在上面的“字体重量”中
选择大小为12个单位的MyNormalFont
关于这些单位:一个单位通常以1/72英寸开始,但通过改变转换矩阵(参见本规范第8节),您可以改变它
多种字体
在同一行中混合多种字体
请参阅上面的“字体权重”,不同的字体权重是使用不同的字体实现的
非拉丁字符
在评论中:
你能举一个插入英语以外的外语字符的例子吗
一个选项是创建一个PDF字体,将给定字体程序中需要的字符按名称映射到单字节编码的0..255范围。这对于希伯来语或阿拉伯语写作来说是可以的,但对于CJK写作来说就不那么好了
因为你只要求一个字符,所以我在示例中只放了一个字符。。。此外,我使用Arial,希望有问题的PDF查看器可以在手头的系统中找到,也就是说,我不嵌入它
因此,对于put at code 32(ASCII派生编码中的空格)中名为Alefmaksuraaraabic的阿拉伯文字符alef maksura的字体,可以使用:
1 0 obj
<<
/Type /Font
/Subtype /TrueType
/BaseFont /Arial
/Encoding
<<
/BaseEncoding /WinAnsiEncoding
/Differences [ 32 /alefmaksuraarabic ]
>>
/FirstChar 32
/LastChar 32
/FontDescriptor 2 0 R
/Widths [ 600 ]
>>
endobj
2 0 obj
<<
/Type /FontDescriptor
/FontName /Arial
/StemV 44
/Leading 33
/Ascent 905
/Flags 32
/XHeight 250
/FontWeight 400
/AvgWidth 441
/Descent -210
/CapHeight 728
/MaxWidth 2665
/FontBBox [-665 -210 2000 728]
/ItalicAngle 0
>>
endobj
进入您的内容流并获取
不幸的是,如果您想了解PDF语法的工作原理,您需要阅读规范。当然,您只能阅读适用于文本的部分,第9章,可能还有9.2。但本章当然假设您了解PDF在结构上的工作方式以及对象的类型。我建议你读一下。说明书中没有提到你的清单,因为坦率地说,这不是PDF使用的文本处理级别。一次只需要一种字体、一种样式、一种大小。语言与文本的呈现方式完全无关。也许,出于您的目的,您最好生成一个Microsoft Word.docx文档。@MichaëlDemey-这个想法是让阅读它的人给出一个简单的答案。无论如何谢谢你!谢谢你的回答,你能举一个插入英语以外的外语字符的例子吗无法让它工作…@levi,如果你真的要求包括非西方特克斯
1 0 obj
<<
/Type /Font
/Subtype /TrueType
/BaseFont /Arial
/Encoding
<<
/BaseEncoding /WinAnsiEncoding
/Differences [ 32 /alefmaksuraarabic ]
>>
/FirstChar 32
/LastChar 32
/FontDescriptor 2 0 R
/Widths [ 600 ]
>>
endobj
2 0 obj
<<
/Type /FontDescriptor
/FontName /Arial
/StemV 44
/Leading 33
/Ascent 905
/Flags 32
/XHeight 250
/FontWeight 400
/AvgWidth 441
/Descent -210
/CapHeight 728
/MaxWidth 2665
/FontBBox [-665 -210 2000 728]
/ItalicAngle 0
>>
endobj
BT
/F 12 Tf
15 815 Td
(Test: ) Tj
/G 12 Tf
( ) Tj
ET