我正在手写PDF文件......
我在文本文件中添加了一些代码。当我将文件扩展名更改为“.pdf”时,我们可以看到PDF文件。
问题在于文本中的反斜杠......
我的文件内容包括:
\\127.0.0.1\
但是当我打开生成的.pdf文件时,我看到的文字没有反斜杠:
\127.0.0.1\
我的代码:
%PDF-1.2
%ÓÓÓÓ
1 0 obj
<<
/Creator (Dinesh Asanka PSOPDF)
/Producer (VB to PDF dineshasanka@hotmail.com)
/Title (VBTOPDF)
>>
endobj
4 0 obj
<<
/Type /Font
/Subtype /Type1
/Name /F1
/Encoding 5 0 R
/BaseFont /Courier
>>
endobj
5 0 obj
<<
/Type /Encoding
/BaseEncoding /WinAnsiEncoding
>>
endobj
6 0 obj
<<
/Font << /F1 4 0 R >> /ProcSet [ /PDF /Text ]
>>
endobj
7 0 obj
<<
/Type /Page
/Parent 3 0 R
/Resources 6 0 R
/Contents 8 0 R
>>
endobj
8 0 obj
<<
/Length 9 0 R
>>
stream
BT
/F1 10 Tf
1 0 0 1 1 780 Tm
12 TL
T* ( Impressoras de NF) Tj
T* ( Loja Logada: 1) Tj
T* ( Data: 03/03/2015) Tj
T* ( Versao: 4.0.2u) Tj
T* (------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------) Tj
T* ( IP Nome Localização Store Serie ) Tj
T* ( Impressora ) Tj
T* (------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------) Tj
0.392 0.392 0.392 rg
T* ( 192.168.17.22 192.168.17.22\pdf PDF 1 1 ) Tj
0.000 0.000 0.000 rg
T* ( 192.168.17.6 \\Directory\EPSONNF CPD 1 0 ) Tj
0.392 0.392 0.392 rg
T* ( ) Tj
ET
endstream
endobj
9 0 obj
315
endobj
2 0 obj
<<
/Type /Catalog
/Pages 3 0 R
/PageLayout /OneColumn
>>
endobj
3 0 obj
<<
/Type /Pages
/Count 1
/MediaBox [ 0 0 612 792 ]
/Kids [ 7 0 R ]
>>
endobj
xref
010
0000000000 65535 f
0000000017 00000 n
0000000880 00000 n
0000000959 00000 n
0000000144 00000 n
0000000247 00000 n
0000000321 00000 n
0000000396 00000 n
0000000484 00000 n
0000000858 00000 n
trailer
<<
/Size 10
/Root 2 0 R
/Info 1 0 R
>>
startxref
1052
%%EOF
如何用两个反斜杠打印我的地址?
答案 0 :(得分:3)
除了@ Kurt的回答:
反向实体\
不仅用作任何八进制编码字符的起始标记。相反,它可以用于不同的目的:
Sequence Meaning \n LINE FEED (0Ah) (LF) \r CARRIAGE RETURN (0Dh) (CR) \t HORIZONTAL TAB (09h) (HT) \b BACKSPACE (08h) (BS) \f FORM FEED (FF) \( LEFT PARENTHESIS (28h) \) RIGHT PARENTHESIS (29h) \\ REVERSE SOLIDUS (5Ch) (Backslash) \ddd Character code ddd (octal)
(表3 - 文字字符串中的转义序列,PDF spec)
因此,您也可以获得所需的输出:
0.392 0.392 0.392 rg
T* ( 192.168.17.22 192.168.17.22\\pdf PDF 1 1 ) Tj
0.000 0.000 0.000 rg
T* ( 192.168.17.6 \\\\Directory\\EPSONNF CPD 1 0 ) Tj
0.392 0.392 0.392 rg
T* ( ) Tj
PS:尽管该表中提到了CR,LF等,它们不能用于打破文本绘制 中的行以及这种文本绘制操作。< / p>
答案 1 :(得分:2)
“问题在于文本中的反斜杠......”
这不是您文件的唯一问题。另请参阅我的答案的最底层。例如,请参阅PDF源代码中的这个词的呈现方式:
Localização
只要您的文字需要非ASCII字符,就不能再使用简单的
了(some string) Tj
再接近。您必须切换(至少对于使用非ASCII的文本部分)文本/字符串编码。
您有两种选择。
<aa bb cc...>
(十六进制)方法 some string
的示例:
<73 6f 6d 65 20 73 74 72 69 6e 67>Tj
请注意,您可以在<....>
十六进制部分内自由使用空格,如下所示:
<73 6f6d65 2073 74 72 69 6e67>Tj
并且它对渲染文本没有任何影响。
但是,这不会涵盖 所有 您使用的/WinAnsiEncoding
中可用的字符。
(\NNN\MMM\...)
(八进制)方法相同的例子,some string
:
(\163\157\155\145\040\163\164\162\151\156\147) Tj
您可以在同一(...)
字符串中混合使用八进制字符编码:
(s\157\155\145 \163\164\162ing) Tj
现在你也可以猜测为什么文字\
在字符串中不起作用:因为它作为任何八进制编码字符的起始标记。
\
字符作为十六进制值,\
字符由5c
显示。
作为八进制值(/WinAnsiEncoding
),它是\134
。
因此,您可以将\\Directory\EPSONNF
字符串写为
(\134\134Directory\134EPSONNF) Tj
或
<5c5c>Tj (Directory\134EPSONNF) Tj
(您无法在<..> Tj
方法中混合使用(...) Tj
方法...)
Localização
字符串试试这个:
(Localiza\347\343o) Tj
最后,您的PDF还有一些问题:
startxref
的值不正确。xref
条目中的行长度必须正好为20个字符(包括EOL字符)。如果使用单字节EOL,则必须添加尾随空格字符(在f
和n
字符之后)。xref
之后的行必须是0 10
,而不是010
。xref
行的值本身是错误的。 (甚至没有一个是正确的。)