让我们写一个pdf文件(2015)

2021-06-14 22:25:03

PDF格式的基础知识(以您的节奏)PDF =便携式文档格式R2 被忽略)其中任何一个:0x00空0x0c表单FEED 0x09选项卡0x0d回车返回0x0a行馈送0x20空间(是的,您可以混合EOL样式:() 版本号。 1.0< =版本号< = 1.7(这里并不重要) startxref%xref pointer %% eof_ ...一个%% EOF标记。 最后,标记文件的结尾...... STARTXREF%XREF指针%% EOF EARY;)这是PDF文件的总体布局! (0 *)OBJ关键字对象内容endobj关键字* 99%的时间 前:<< / root 1 0 R>> 指对象第1代数0作为/ root

3个数字1 0 3“1 0 R”的序列是对物体第1代的一个引用0 1 0 r>> startxref%xref point %% eof(如所有其他对象)......它将在文件正文中。 拖车<< / root 1 0 R>> startxref%xref pointer %% eof ...(使用标准对象声明)...... 表这里是拖车<< / root 1 0 R>> startxref%xref point %% eof(如大多数对象)...包含字典。 表这里是拖车<< / root 1 0 R>> startxref%xref point %% eof ......及其/类型是... 这里%XREF表拖车<< / root 1 0 R>> startxref%xref pointer %% eof ...定义为/目录... Xref%XREF表在这里拖车<< / root 1 0 R>> startxref%xref pointer %% ef ef / root对象也引用页面树...

Xref%XREF表在这里拖车<< / root 1 0 R>> startxref%xref pointer %% eof ...通过a / pages name ...

R_>> endobj xref%xref表这里拖车<< / root 1 0 R>> startxref%xref point %% eof ......是指另一个对象......

R>> endobj _ xref%xref表在这里拖车<< / root 1 0 R>> startxref%xref point %% eof ...我们将创建。

R>> endobj _ xref%xref表在这里拖车<< / root 1 0 R>> startxref%xref point %% eof让我们创建对象2。

R>> Endobj 2 0 obj _ endobj xref%xref表这里拖车<< / root 1 0 R>> StartXref%XRef Point %% EF通常的声明。

R>> endobj 2 0 obj<< _>> endobj xref%xref表这里拖车<< / root 1 0 R>> startxref%xref pointer %%它也是字典。

R>> endobj 2 0 obj<< /类型/页面_>> endobj xref%xref表这里拖车<< / root 1 0 R>> startxref%xref pointer %% ef ef of object / type必须定义为... / pages☺

R>> endobj 2 0 obj<< /类型/页面/儿童_>> endobj xref%xref表这里拖车<< / root 1 0 R>> startxref%xref pointer %% eof此对象通过/儿童定义其子项......

例如:[11]是4个整数的数组1 2 3 4

R>> endobj 2 0 obj<< /类型/页面/儿童[_]>> endobj xref%xref表这里拖车<< / root 1 0 R>> startxref%xref point %% eof ...哪个是一个数组......

R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 R_]>> endobj xref%xref表这里拖车<< / root 1 0 R>> STARTXREF%XREF指针%%对每个页面对象的引用的EOF ......

R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 R] _>> endobj xref%xref表这里拖车<< / root 1 0 R>> startxref%xref pointer %% ef最后一步...

R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 R] / count 1_>> endobj xref%xref表这里拖车<< / root 1 0 R>> startxref%xref point %% eof ......必须设置的孩子数量/ count ...

R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj xref%xref表这里拖车<< / root 1 0 R>> startxref%xref pointer %% eof ......现在对象2完成!

>> STARTXREF%XREF指针%% EOF%PDF-1.3 1 0 OBJ< /类型/目录/页面2 0 R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj _我们可以添加我们唯一的孩子......

>> STARTXREF%XREF指针%% EOF%PDF-1.3 1 0 OBJ< /类型/目录/页面2 0 R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj _ endobj ...(单页)......

>> STARTXREF%XREF指针%% EOF%PDF-1.3 1 0 OBJ< /类型/目录/页面2 0 R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< _>> endobj ......字典......

>> STARTXREF%XREF指针%% EOF%PDF-1.3 1 0 OBJ< /类型/目录/页面2 0 R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< / type_>> endobj ...定义一个/类型......

>> STARTXREF%XREF指针%% EOF%PDF-1.3 1 0 OBJ< /类型/目录/页面2 0 R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< /类型/页面_>> endobj ...作为/页面。

>> STARTXREF%XREF指针%% EOF%PDF-1.3 1 0 OBJ< /类型/目录/页面2 0 R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< /类型/页面/ parent_>> endobj这个感恩的孩子妥善了解自己的父母......

>> STARTXREF%XREF指针%% EOF%PDF-1.3 1 0 OBJ< /类型/目录/页面2 0 R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< /类型/页面/父级2 0 r_>> Endobj ...正如你所期待的那样

>> STARTXREF%XREF指针%% EOF%PDF-1.3 1 0 OBJ< /类型/目录/页面2 0 R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< /类型/页面/父级2 0 r _>> endobj我们的页面需要资源。

>> STARTXREF%XREF指针%% EOF%PDF-1.3 1 0 OBJ< /类型/目录/页面2 0 R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< /类型/页面/父级2 0 R / Resources_>> endobj让我们添加...

>> STARTXREF%XREF指针%% EOF%PDF-1.3 1 0 OBJ< /类型/目录/页面2 0 R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< /类型/页面/父2 0 R /资源<<< _>> >> endobj ...作为字典:

>> STARTXREF%XREF指针%% EOF%PDF-1.3 1 0 OBJ< /类型/目录/页面2 0 R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< /类型/页面/父2 0 R /资源<<< / font_>> >> endobj在这种情况下,字体......

>> STARTXREF%XREF指针%% EOF%PDF-1.3 1 0 OBJ< /类型/目录/页面2 0 R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< /类型/页面/父2 0 R /资源<<< /字体<< _>> >> >> endobj ...作为字典。

>> STARTXREF%XREF指针%% EOF%PDF-1.3 1 0 OBJ< /类型/目录/页面2 0 R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< /类型/页面/父2 0 R /资源<<< /字体<< _>> >> >> endobj我们定义一个字体......

>> STARTXREF%XREF指针%% EOF%PDF-1.3 1 0 OBJ< /类型/目录/页面2 0 R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< /类型/页面/父2 0 R /资源<<< /字体<< / f1_>> >> >> Endobj ...通过给它一个名字......

>> STARTXREF%XREF指针%% EOF%PDF-1.3 1 0 OBJ< /类型/目录/页面2 0 R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< /类型/页面/父2 0 R /资源<<< /字体<< / f1<< _>> >> >> >> endobj ...并设置其参数:

>> STARTXREF%XREF指针%% EOF%PDF-1.3 1 0 OBJ< /类型/目录/页面2 0 R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< /类型/页面/父2 0 R /资源<<< /字体<< / f1<< / type_>> >> >> >> endobj它的类型是......

>> STARTXREF%XREF指针%% EOF%PDF-1.3 1 0 OBJ< /类型/目录/页面2 0 R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< /类型/页面/父2 0 R /资源<<< /字体<< / f1<< /类型/ font_>> >> >> >> endobj ...字体☺

>> STARTXREF%XREF指针%% EOF%PDF-1.3 1 0 OBJ< /类型/目录/页面2 0 R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< /类型/页面/父2 0 R /资源<<< /字体<< / f1<< /类型/字体/亚型_>> >> >> >> endobj它的字体类型是...

>> STARTXREF%XREF指针%% EOF%PDF-1.3 1 0 OBJ< /类型/目录/页面2 0 R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< /类型/页面/父2 0 R /资源<<< /字体<< / f1<< /类型/字体/子类型/类型1_>> >> >> >> endobj ...(Adobe)type1 ...

>> STARTXREF%XREF指针%% EOF%PDF-1.3 1 0 OBJ< /类型/目录/页面2 0 R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< /类型/页面/父2 0 R /资源<<< /字体<< / f1<< / type / font / subtype / type1 / basefont_>> >> >> >> endobj ......它的名字是...

>> STARTXREF%XREF指针%% EOF%PDF-1.3 1 0 OBJ< /类型/目录/页面2 0 R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< /类型/页面/父2 0 R /资源<<< /字体<< / f1<< / type / font / subtype / type1 / basefont / arial_>> >> >> >> endobj ...... / Arial。

>> STARTXREF%XREF指针%% EOF%PDF-1.3 1 0 OBJ< /类型/目录/页面2 0 R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< /类型/页面/父2 0 R /资源<<< /字体<< / f1<< /类型/字体/亚型/ Type1 / Basefont / Arial>> >> >> _>> endobj在我们的页面中缺少一件事......

>> STARTXREF%XREF指针%% EOF%PDF-1.3 1 0 OBJ< /类型/目录/页面2 0 R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< /类型/页面/父2 0 R /资源<<< /字体<< / f1<< /类型/字体/亚型/ Type1 / Basefont / Arial>> >> >> /目录_>> endobj实际页面内容......

>> STARTXREF%XREF指针%% EOF%PDF-1.3 1 0 OBJ< /类型/目录/页面2 0 R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< /类型/页面/父2 0 R /资源<<< /字体<< / f1<< /类型/字体/亚型/ Type1 / Basefont / Arial>> >> >> /目录4 0 R_>> Endobj ...作为对另一个对象的引用。

>> STARTXREF%XREF指针%% EOF%PDF-1.3 1 0 OBJ< /类型/目录/页面2 0 R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< /类型/页面/父2 0 R /资源<<< /字体<< / f1<< /类型/字体/亚型/ Type1 / Basefont / Arial>> >> >> /目录4 0 R>> Endobj这一切都是我们的页面对象。

0 r>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< /类型/页面/父2 0 R /资源<<< /字体<< / f1<< /类型/字体/亚型/ Type1 / Basefont / Arial>> >> >> /目录4 0 R>> endobj xref%xref表这里拖车<< / root 1 0 R>> startxref%xref pointer %% EOF

/类型/目录/页面2 0 R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< /类型/页面/父2 0 R /资源<<< /字体<< / f1<< /类型/字体/亚型/ Type1 / Basefont / Arial>> >> >> /目录4 0 R>> endobj我们在此处创建一个/ content对象... xref%xref表拖车< / root 1 0 R>> startxref%xref pointer %% EOF

obj<< /类型/目录/页面2 0 R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< /类型/页面/父2 0 R /资源<<< /字体<< / f1<< /类型/字体/亚型/ Type1 / Basefont / Arial>> >> >> /目录4 0 R>> endobj ...这是一个流对象... Xref%XREF表这里拖车< / root 1 0 R>> startxref%xref pointer %% EOF

obj<< /类型/目录/页面2 0 R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< /类型/页面/父2 0 R /资源<<< /字体<< / f1<< /类型/字体/亚型/ Type1 / Basefont / Arial>> >> >> /目录4 0 R>> Endobj文本对象由BT和et ... Xref%XRef表分隔拖车< / root 1 0 R>> startxref%xref pointer %% EOF

1 0 obj<< /类型/目录/页面2 0 R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< /类型/页面/父2 0 R /资源<<< /字体<< / f1<< /类型/字体/亚型/ Type1 / Basefont / Arial>> >> >> /目录4 0 R>> Endobj ...(Begintext& endtext)。 Xref%XREF表在这里拖车<< / root 1 0 R>> startxref%xref pointer %% EOF

1 0 obj<< /类型/目录/页面2 0 R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< /类型/页面/父2 0 R /资源<<< /字体<< / f1<< /类型/字体/亚型/ Type1 / Basefont / Arial>> >> >> /目录4 0 R>> endobj我们需要使用tf设置字体。 Xref%XREF表在这里拖车<< / root 1 0 R>> startxref%xref pointer %% EOF

%pdf-1.3 1 0 obj<< /类型/目录/页面2 0 R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< /类型/页面/父2 0 R /资源<<< /字体<< / f1<< /类型/字体/亚型/ Type1 / Basefont / Arial>> >> >> /目录4 0 R>> Endobj需要2个参数:字体名称... XRef%XREF表这里拖车< / root 1 0 R>> startxref%xref pointer %% EOF

%pdf-1.3 1 0 obj<< /类型/目录/页面2 0 R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< /类型/页面/父2 0 R /资源<<< /字体<< / f1<< /类型/字体/亚型/ Type1 / Basefont / Arial>> >> >> /目录4 0 R>> endobj ...(来自页面的资源)... XRef%XREF表在这里拖车< / root 1 0 R>> startxref%xref pointer %% EOF

R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< /类型/页面/父2 0 R /资源<<< /字体<< / f1<< /类型/字体/亚型/ Type1 / Basefont / Arial>> >> >> /目录4 0 R>> Endobj 4 0 Obj Stream BT / F1 100_TF et endstream endobj ...和字体大小。 Xref%XREF表在这里拖车<< / root 1 0 R>> startxref%xref pointer %% EOF

R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< /类型/页面/父2 0 R /资源<<< /字体<< / f1<< /类型/字体/亚型/ Type1 / Basefont / Arial>> >> >> /目录4 0 R>> Endobj 4 0 Obj Stream BT / F1 100 TF _ et endstream endobj我们在此移动游标... Xref%XRef表拖车< / root 1 0 R>> startxref%xref pointer %% EOF

R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< /类型/页面/父2 0 R /资源<<< /字体<< / f1<< /类型/字体/亚型/ Type1 / Basefont / Arial>> >> >> /目录4 0 R>> Endobj 4 0 Obj Stream BT / F1 100 TF TD_ET endStream endobj ...使用TD运算符... XRef%XREF表此处拖车< / root 1 0 R>> startxref%xref pointer %% EOF

R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< /类型/页面/父2 0 R /资源<<< /字体<< / f1<< /类型/字体/亚型/ Type1 / Basefont / Arial>> >> >> /目录4 0 R>> Endobj 4 0 Obj Stream BT / F1 100 TF _ TD et endstream endobj ...这需要2个参数... XRef%XRef表这里拖车<< / root 1 0 R>> startxref%xref pointer %% EOF

R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< /类型/页面/父2 0 R /资源<<< /字体<< / f1<< /类型/字体/亚型/ Type1 / Basefont / Arial>> >> >> /目录4 0 R>> Endobj 4 0 OBJ流BT / F1 100 TF 10 400_TD et endStream Endobj ... x和Y坐标。 (默认页面大小:612x792)XREF%XREF表此处拖车< / root 1 0 R>> startxref%xref pointer %% EOF

td _ et endstream endobj显示文本字符串... xref%xref表这里拖车< / root 1 0 R>> STARTXREF%XREF指针%% EOF%PDF-1.3 1 0 OBJ< /类型/目录/页面2 0 R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< /类型/页面/父2 0 R /资源<<< /字体<< / f1<< /类型/字体/亚型/ Type1 / Basefont / Arial>> >> >> /目录4 0 R>> endobj.

td tj_ et endstream endobj ...使用tj运算符... xref%xref表拖车拖车< / root 1 0 R>> STARTXREF%XREF指针%% EOF%PDF-1.3 1 0 OBJ< /类型/目录/页面2 0 R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< /类型/页面/父2 0 R /资源<<< /字体<< / f1<< /类型/字体/亚型/ Type1 / Basefont / Arial>> >> >> /目录4 0 R>> endobj.

td _ tj et endstream endobj ...这需要一个参数... xref%xref表这里拖车< / root 1 0 R>> STARTXREF%XREF指针%% EOF%PDF-1.3 1 0 OBJ< /类型/目录/页面2 0 R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< /类型/页面/父2 0 R /资源<<< /字体<< / f1<< /类型/字体/亚型/ Type1 / Basefont / Arial>> >> >> /目录4 0 R>> endobj.

td(_)tj et endstream endobj ...一个文字字符串。 Xref%XREF表在这里拖车<< / root 1 0 R>> STARTXREF%XREF指针%% EOF%PDF-1.3 1 0 OBJ< /类型/目录/页面2 0 R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< /类型/页面/父2 0 R /资源<<< /字体<< / f1<< /类型/字体/亚型/ Type1 / Basefont / Arial>> >> >> /目录4 0 R>> endobj.

td(hello world_)tj et endstream endobj xref%xref表这里拖车< / root 1 0 R>> STARTXREF%XREF指针%% EOF%PDF-1.3 1 0 OBJ< /类型/目录/页面2 0 R>> endobj 2 0 obj<< /类型/页面/儿童[3 0 r] / count 1>> endobj 3 0 obj<< /类型/页面/父2 0 R /资源<<< /字体<< / f1<< / T. ......