Trang PDF không lưu trữ pixel và nó không lưu trữ cây các đối tượng hình dạng giống như SVG. Nó lưu trữ một chương trình. Mọi đường kẻ, đường cong, hình tô màu và hình ảnh được đặt trên trang đều là kết quả của việc thực thi một chuỗi các toán tử trong luồng nội dung, từ trên xuống dưới, theo trạng thái đồ họa đang chạy. Hiểu được thực tế đó và hầu hết hành vi của định dạng này không còn đáng ngạc nhiên nữa: tại sao việc tô màu cần một toán tử vẽ riêng sau khi đường dẫn được xây dựng, tại sao màu sắc và độ dày đường kẻ lại rò rỉ từ hình dạng này sang hình dạng tiếp theo trừ khi bạn đóng khung chúng, tại sao cùng một mã vẽ có thể hạ cánh ở những nơi hoàn toàn khác nhau sau một phép biến đổi tọa độ duy nhất. Đây là chuyến tham quan mô hình thực thi đó được định nghĩa trong ISO 32000: các toán tử bạn gặp khi mở một luồng nội dung và các quy tắc quyết định những gì hiển thị trên trang
Luồng nội dung là mã bytecode postfix
Luồng nội dung là một chuỗi byte phẳng của các toán hạng theo sau là toán tử. Toán hạng xuất hiện trước, toán tử tiêu thụ chúng xuất hiện sau, điều này đảo ngược so với lời gọi hàm và giống hệt như một máy ngăn xếp (stack machine): đẩy các số, sau đó phát ra động từ. Không có lồng ghép, không có cú pháp biểu thức, không có biến. Đường viền của hình tam giác là năm dòng như thế này:
100 100 m % moveto: start a new subpath at (100, 100)
200 200 l % lineto: add a segment to (200, 200)
300 100 l % lineto: add a segment to (300, 100)
h % closepath: connect back to the start
S % stroke: paint the path outline
Các toán tử cố tình ngắn gọn. Một trang thực có hàng ngàn toán tử, thường được nén bằng FlateDecode. Cái giá của sự nhỏ gọn đó là luồng này không mang cấu trúc nào mà bạn có thể truy vấn: một trình xem không thể hỏi "tiêu đề trên trang này ở đâu," nó chỉ có thể chạy chương trình và xem mực sẽ hạ xuống chỗ nào. Đó là lý do cốt lõi khiến việc trích xuất văn bản từ các tệp PDF tùy ý là một việc khó
Điểm gốc ở góc dưới cùng bên trái và trục Y phát triển hướng lên trên
Trước khi bất kỳ tọa độ nào có ý nghĩa, bạn phải biết (0, 0) ở đâu. PDF đặt gốc tọa độ ở góc dưới cùng bên trái của trang, với trục X tăng về phía bên phải và trục Y tăng lên trên, được đo bằng điểm ở mức 72 điểm/inch (ISO 32000-2 §8.3.2). Trên một trang US Letter cạnh trên cùng nằm ở tọa độ y = 792, chứ không phải tại y = 0. Bất kỳ ai đến từ thế giới đồ họa màn hình, nơi gốc tọa độ thường ở trên cùng bên trái và Y phát triển đi xuống, sẽ bị đảo ngược trong lần thử đầu tiên và sẽ vẽ dòng đầu tiên rơi ra ngoài cạnh dưới của trang. Đơn vị này cũng độc lập với phương tiện vật lý: 72 đơn vị là một inch bất kể khi trang đó hiển thị sang màn hình điện thoại hay trên máy ghi hình tạo khuôn in (imagesetter)
Hầu hết thư viện đồ hoạ trang thừa kế thông số này trực tiếp. Ví dụ như trong HotPDF, TextOut và lệnh gọi vẽ đường vector (path calls) toàn bộ đo lường bắt đầu từ góc dưới rẽ ngược hướng lên trên cùng theo đơn vị point, nên một hằng số được điền giá trị gần với chiều cao bức hoạ sẽ để đồ thị tại cạnh trên cùng:
// HotPDF, Delphi: y measured from the bottom edge upward, in points
Pdf.CurrentPage.SetLineWidth(2.0);
Pdf.CurrentPage.MoveTo(100, 700); // near the top of the page
Pdf.CurrentPage.LineTo(300, 700);
Pdf.CurrentPage.Stroke; // emits the moveto/lineto/stroke operators
Chuỗi lệnh gọi đó được biên dịch thẳng ra đúng bằng ba toán tử m, l và S ở phần trên. Thư viện làm công việc của nhân viên văn thư cho nội dung đường phân luồng byte, không gì hơn, và biết được dòng xuất nó tiết ra là gì, giúp cho bạn lí giải nguyên do vì sao sau này thành phẩm xuất ảnh hạ cánh lệch một bên mà lại không mong chờ
Dựng cấu hình phân tuyến trước, sau đó hoạ sơn nó
PDF chia tách cấu hình thiết lập ra đường nét và vẽ mảng tranh (path painting) ra khỏi nhau, không phải là chỉ cho vui. Bạn lúc nào cũng miêu tả khối mô hình với bộ tuỳ biến tạo tác ban đầu không hiện lộ gì cả, và sau đó truyền tiếp một hoạt lệnh ra quyết định định dạng cuối cho phần đồ tạo hoạ được tích lũy từ bước khởi đầu. Cùng một khối tam giác đó có thể trở thành đường viền, thành vùng tô kín rỗng hay trở thành cả hai, chỉ lệ thuộc vào động từ duy nhất ở sau chót mà bạn quyết định
Toán tử để xây hình thực ra rất ít. m khởi đầu tạo một điểm subpath. l kẻ thêm một đường gạch thẳng ngang. c thêm góc uốn cung Bezier hình học lập phương cấu tạo từ sáu tham số lập điểm gốc bao gồm hai toạ độ điều chỉnh với một tọa độ đích tới. re tạo một hình chữ nhật hoàn chỉnh bao hàm bốn giá trị x, y, chiều ngang, bề rộng. h tự khép nối cung phân đoạn cuối này ghim thẳng với điểm đích nguồn lúc trước. Chúng không dùng lấy một giọt màu tạo nên điểm vẽ ở mặt ngoài; chỉ tích luỹ lượng cấu hình hình học tính sẵn
200 250 m % start the subpath
300 350 400 450 500 250 c % cubic Bezier: two control points, then endpoint
150 200 re % a 150 x 200 rectangle, added as its own subpath
h % close
Ví dụ gốc khởi nguyên khai phá ban sơ đã dùng kiểu lập mệnh đề toán học y mà hiện tại nay chìm dần vào phế liệu; c ở ngay dưới kèm bộ 3 toạ độ hiện hành rõ rệt là thứ mà bạn nhìn thấy lúc thao tác và là biến thể thực mà ta có thể tìm gọi. Ngay lúc một đường nét path lộ hình rồi, duy nhất toán tử thao diễn việc phủ họa cuối nốt điểm xuyết cuối hành động. Từ điển thao diễn này khá ngắn nhưng cũng rất xứng để bạn nhập ghi vào tâm thức vì tất tật từ trang hình đều kết lại bằng việc chọn lựa ngay ở những câu này:
Stạo viền ngoài khối path hình dựa theo vạch kích thước và màu viền đương nhiệmftô kín lõi ruột trong dựa trên màu của nội hàm đương hiện hành và quy tắc cuộn dây không phải số không (nonzero winding rule)f*đổ kín dựa bằng quy tắc chẵn-lẻ (even-odd rule), việc này là để phân xét dành với dạng vật lý đa cắt quy đè chồng nhau và những đồ hình đục phễu trổ lố rỗng (holes)Bvừa đổ vào màu tô mà đi bao lấy cùng một hành hình;bđóng chặt hình nết vào lại trước rồi phủnhoàn toàn trống không sơn dính lại tí cặn tích nào cả, thông qua đường nẻo nọ định tuyến sẽ phân luồng một khu trổ cắt xẻn xén (clip region) hình thay vì vẽ mảng hiển lộ màu
Luật về vòng lặp xoắn ốc (winding rule) thường làm mọi người hiểu sai lệch đi. Định luật vòng xoắn ốc Không phải số Không / Nonzero (f, B) đếm những đường xuyên tâm tính hướng chiếu đi từ điểm xem thí nghiệm để lắp sơn kín những toạ lộ có con số cuối trót lọt không có mốc vạch bằng không, vì điều đấy hình thù chỗ hở rỗng đục rỗng trống bỗng thì cũng mang đặc tính trỗ phễu đảo lộn với định khung viền bên bao lấy mảng viền ranh giới bao phủ ngoài. Quy tắc Even-Odd phân đếm cắt lẻ (f*, B*) đổi biến trên mọi mặt giao điểm xoay ngang chẳng màng chéo đường đi. Giả trường hợp chiếc "bánh Donut" trổ đặc ruột, đồng nghĩa việc dải uốn quanh mâm tròn lõi giữa đã mắc xâu chuỗi giống y hệt khung xoắn phía mé rìa mép ngoài, thế là bạn buộc sẽ đảo nghịch chúng, hoặc phải chuyển hẳn bằng lối tô vẽ ngay đằng mốc even-odd này
Màu sắc là một chế độ, không phải thông số đi kèm
Màu sắc trong luồng nội dung mang tính dính. Bạn thiết lập một màu và nó ở nguyên đó cho đến khi bạn chỉnh cấu trúc mảng sắc độ thay phiên đổi khác hoặc bạn tái gọi phục kích trạng thái trước, điều này trả lời cặn kẽ thắc mắc không điền khung một biến màu tự nó bám vạch tô sẫm mọi cấu thành mà đã hoạ sau mốc điểm màu đó. PDF giữ biệt lập giữa màu để phủ trong (fill color) và màu vạch kẻ viền (stroke color) thành hai mức thông tin tham chiếu hoạt tính biệt tách riêng biệt, thông dụng nhận thấy bằng mẫu chữ hệ điều phối với hệ chữ thường là fill và hệ chữ in Hoa dành cho chức năng kẻ màu vạch khung stroke. Các không gian màu không gian cho thiết bị tạo mẫu (device color spaces) được rút ngỏ một cách ngắn để làm thông tin truy suất:
0.5 g % DeviceGray fill, mid gray (0 = black, 1 = white)
0.2 0.6 0.8 rg % DeviceRGB fill
0.8 0.2 0.1 RG % DeviceRGB stroke (uppercase = stroke)
0.2 0.8 0.0 0.1 k % DeviceCMYK fill
DeviceRGB phục vụ phù hợp dành cho mặt hiển thị màn hình, DeviceCMYK thì máy chủ sản xuất đồ chuyên ngành phát chế in đòi hỏi mong cầu như thế, và mẫu DeviceGray là giải pháp hệ gọn gọn ít dữ tính hơn lúc có nội hàm bảng ảnh phân lập sắc mảng đen trắng. Bảng hệ thống cho trang thiết bị này cực dễ tiện lại dễ mất định tâm đo đạc chuẩn mốc: cùng một dãy cấu thông số trị nguyên bản (RGB triple) hoàn toàn sinh xuất render ra kết quả khác nhau nằm ở các mặt hàng thiết bị theo dõi xuất đồ hình (monitors), giải pháp trả lời sự bù trừ chênh lệch đó nên bảng thông số ICC-based (chuyên cấu màu nền tảng) và tiêu chuẩn ngách xuất PDF/A Output Intents được cho xây đắp tạo để xử lí ổn thoả nan giải trên. Phục vụ công trình in sắc độ cao tối khẩn bạn sẽ kén bảng hiệu suất màu (calibrated space) qua cs và CS rồi ghim thuộc tính gốc cùng với sc và scn, nhưng ở những tệp văn kiện hằng ngày các kiểu giản ngỏ hệ thiết bị này sẽ bọc ôm khối lượng to tát nhất. Một dạng phân luồng sẽ che kín nó ngự trị gói kín sau những dòng điều độ cấu kiểu truy nạp gọi. HotPDF ví dụ như vậy, gọi nạp mỗi lệnh gốc độc chiêu tên gọi TColor và tuôn ra lệnh tạo điều khiển phù hợp ngay tức khắc:
Pdf.CurrentPage.SetRGBFillColor(clRed);
Pdf.CurrentPage.Rectangle(100, 100, 200, 150); // x, y, width, height
Pdf.CurrentPage.Fill;
Pdf.CurrentPage.SetRGBFillColor(RGB(0, 255, 0));
Pdf.CurrentPage.Circle(150, 400, 50); // x, y, radius
Pdf.CurrentPage.Fill;
Ngăn xếp trạng thái đồ họa và q/Q
Mọi thứ không phải bản thân đường dẫn (path) đều nằm trong trạng thái đồ họa (graphics state): ma trận biến đổi hiện tại (CTM), màu tô và nét đứt, độ dày đường kẻ, mẫu dấu gạch ngang, vùng xén (clip), alpha. Trạng thái là toàn cầu và có thể thay đổi, vì vậy cách duy nhất an toàn để tạo ra sự thay đổi cục bộ là lưu trữ toàn bộ thứ đó lại, thay đổi nó, vẽ, và cuộn ngược trở lại. Đó là những gì q và Q thực hiện. q đẩy một bản sao của trạng thái hiện hành lên một ngăn xếp; Q bật nó ra, vứt bỏ đi mọi thay đổi kể từ lệnh q được ăn khớp tương ứng
q % save the entire graphics state
2 0 0 2 100 100 cm % concatenate a transform: scale 2x, translate to (100,100)
0.8 g % gray fill, scoped to this block
% ... draw scaled, gray content ...
Q % restore: transform and color revert
Sự không cân bằng giữa q và Q là cách phổ biến để một luồng nội dung được xây dựng thủ công hoặc được khâu vá lại gặp lỗi sai lạc đi. Một q đi lạc không có phần Q khớp tương ứng để lại một ngăn xếp có độ sâu lớn khi trang tài liệu kết thúc; và một Q còn thừa lại để khiến chúng lỗi tràn hụt xả xuống đi (underflows it). Bất kỳ phương pháp điều phối thao tác không chặt chẽ, trình diễn đọc đồ có khi kìm ứ tàng trữ mã biến chuyển xén định vị quá cổ xưa khiến hiệu hành lực sai đường làm phân luồng đối tượng tàng hình khuất đi, hay lao ra chỗ bến nơi bãi chẳng liên quan. Khi mảng trang diện đồ biến mất mà chẳng do lý nguyên nhân cung mảng hình khối nào phân giải, đầu việc trước hết hãy thẩm thấu cấu trúc mã lưu kho vùng trạng thái (state stack) đầu tiên
CTM biến đổi mọi hệ tọa độ
Ma trận biến đổi hiện hành (CTM - Current Transformation Matrix) hiện diện nằm chèn giữa các con số trong hệ toán tử của bạn và trang hình ảnh hiện trạng thực. Mọi vị trí toạ độ nhân với CTM trước khi một thực hành vẽ, từ đó thao diễn việc sửa đổi ma trận sẽ làm cải trang vị trí cũng như hình mẫu tất cả mọi hình vẽ sau đó xuất lộ mà chả phải động rờ vào chỉ riêng biệt từng điểm cung tọa của mảng tuyến lộ hình (path coordinate). Phân hiệu thao tác cm xâu ghép ma trận tân mới gộp nhét sát bên hiện thời đương dùng, chứa trong sáu cấu kiện của ma trận biến tố affine (affine matrix) [a b c d e f]:
1 0 0 1 100 50 cm % translate by (100, 50): e and f carry the offset
2 0 0 1.5 0 0 cm % scale x by 2, y by 1.5: a and d are the scale factors
0.707 0.707 -0.707 0.707 0 0 cm % rotate 45 degrees (cos/sin in a, b, c, d)
Hai việc đẩy chân gạt người khiến ai vấp ngã uổng phí thời không. Khởi ý bước một, lệnh cm hoà kết cấu chứ chưa màng chi sự hoán chuyển, vậy thế lệnh cải trang biến thể gom đọng, cũng nhẽ thứ tự phân xếp có điểm quyết thắng: chia cấu scale xong kéo chuyển sang di cư hệ gốc (translate) không đồng quy trình như đưa hệ dời chuyển ra rồi lại cắt giãn tỉ lệ cấu scale. Điều kiện vướng chân số 2 xoay tròn trịch chuyển hướng phân khu vị quay quanh điểm phân rễ toạ đo nguồn hiện thời (current origin), chả phải từ tâm giữa trọng điểm của mẫu vật cấu khuôn định dạng mà tạo (center of your shape), để hoay một vòng xoay một chỗ bạn phải bốc vị gốc đến điểm căn trung xuất khởi (origin), làm thao xoay cho vừa đủ, rồi bứng mầm toạ quy hoán trở lui như trạng cũ lúc nãy, bọc ôm lấp khép chúng theo vỏ hộp lệnh q/Q. Đúng theo bản chất mô hình toán ma trận kia đặt nền nhúng định phận hình khối mảng ảnh (images), một chi tiết chót còn lại xem trọng được nhắc đến
Ảnh mảng và đồ hình tái hiệu năng chính là XObjects
Các hình ảnh rải dải lưới điểm tạo sắc pixel (Raster images) không sống ở ngay mặt trên các dòng mảng thuộc luồng nội dung chứa đựng thông thường. Chúng được bảo quản tích lưu mang mác XObject dạng mảng ảnh, làm các phân loại vật phẩm ngoài (external objects) kèm theo hệ thông tin cấu quy về kích ngang dài dọc, bộ biến chi tiết vệt ảnh sắc nét bit nhạy (bit depth), khối cầu dải sắc màu (color space), thông phần tinh giản dữ lọc (compression filter), đồng nghĩa rằng đường diễn luồng nội hàm chỉ thực gọi màng bọc trỏ danh quy đổi tên danh đó. Một bức không lưu trữ hình theo bộ tệp cấu JPEG-giữ nền công khai chính dạng gốc của mình bộc diễn ở dáng phân hiệu:
/Photo <<
/Type /XObject
/Subtype /Image
/Width 640
/Height 480
/BitsPerComponent 8
/ColorSpace /DeviceRGB
/Filter /DCTDecode % the image data is a JPEG stream
>>
Một đồ hình mã dạng ảnh XObject tiến hành công vụ xuất phủ diện toạ lên hệ toạ quy chiếu khối kích phân đơn hình dạng hình lập quy định chuẩn tỉ kích theo cạnh độ phân vuông góc đều chuẩn cạnh 1 đơn vị - vùng giới độ Unit Square (unit square): chúng đều sở hành chiếm lĩnh bao quát bề dải lãnh phận gốc (0,0) cho tới toạ cự biên độ đỉnh chạm nấc (1,1) nằm bọc ở vùng khung của khoảng chứa dành thông lưu điểm dùng toạ độ thao quy user. Bạn chẳng làm công vụ mớ chèo chuyển vào hệ chỉ khu hay đẩy đút số cấu phân diện diện. Thậm xưng chiêu quy thức biến hoán thì chính bằng phương thức dựng giá khởi tạo điểm ấn CTM nhắm làm ánh tạo bản chiếu khối ô kích diện quy định phân vuông trỏ góc tới hộp không lập của khung chữ nhật mà ta có nhu cầu mong ngóng đến, rồi bạn giáng phán gọi khởi tiến bốc lên mảng hiệu lệnh danh gọi là Do. Việc ấn hoạ cắm mảng đồ hoạ ở trên là nguyên ý định dẫn đến làm thế bởi phân đồ cắm chiếu là toàn quyền việc biến hoành CTM đẩy kèm phán lời truy gọi ở đuôi chót, sau bọc cuốn gói ôm chặt theo khung lệnh trạng nạp/trả để mảng kích co dãn scale chẳng loang đọng nhỏ rò lem nhem ở những khâu chuỗi thao tác kế tới đằng sau đó:
q
640 0 0 480 50 300 cm % map the unit square to a 640x480 box at (50, 300)
/Photo Do % paint the image XObject
Q
Chính thể loại cơ hiệu tạo bộ hành Do đã kéo lái léo chèo dòng mảng lập khuôn biểu form XObjects, thứ kìm chèn và phân loại rành rành đồ tạo cấu hình tái thu năng hoạ lại, cho tỉ dụ hình hiệu đồ chữ thương hiệu, mẫu con dấu ấn in, coi đó quy vào loại mạch phân dòng mảng nội tạo của riêng chủ chúng bao chung khung khối lồng định dạng bounding box. Định nghĩa xác lập chúng duy qua đúng 1 phép nhấp lệnh, hô gọi kéo lên liên tục đa đếm bao lần không vướng với cơ chế CTM luân đổi hệ hoành thay phiên theo biến mới, cùng mớ dòng bytes định nguyên kia trình chiếu nổi bóng ra tờ thư hoạ duy tại số bước 1 điểm lần duy nhất thôi. Lượng thông lượng lớn các công ti lập trình hệ mã ẩn dấu quy pháp cắm gài sâu vào bên trong sau tấm bọc phủ lệnh uốn dòng quy cắm nhấp chỗ: HotPDF khai danh tên bảng cắm đồ khối hoạ (bitmap) bằng cấu hàm AddImage rồi phơi xuất bày tranh ở nơi mảng bằng chức pháp hiệu ShowImage, hấp thu ôm quy cắm định hướng mảng tham chi thông kích của cạnh ngang x, dài đứng y, bề kéo width, chiều dựng height ra mặt chữ rành rõ rệt ngỏ đanh chẳng ngưng chèn cầu khiến bạn đẽo đục bảng ma trận nhét mã cấu tay chân:
var
Bmp: TBitmap;
ImgIndex: Integer;
begin
Bmp := TBitmap.Create;
try
Bmp.LoadFromFile('logo.bmp');
ImgIndex := Pdf.AddImage(Bmp, icFlate);
// x, y (bottom-left), width, height, rotation angle
Pdf.CurrentPage.ShowImage(ImgIndex, 50, 300, 200, 150, 0);
finally
Bmp.Free;
end;
end;
Chỉ ở ngay một dòng điều kiện nọ thư viện hệ phân trình đó cho chắp bút tạo hàm từ vựng gốc định thư của đồ hiệu Image XObject ra, khởi phân cơ toạ hoán biến CTM nhằm cân quy chia mức khung điểm và ngả bóng vuông cạnh 1 lên đồ địa điểm chuẩn mực, rồi xuất phát hiệu lệnh Do. Khuôn quy cách cơ chế ngầm này đó chính đúng mấu chốt trọng điểm ráng nắm vững học hỏi hiểu thấm, do tại cơ sở nó cắt nghĩa tỏ tường hết mọi sự ngã ngũ thành quả lạ hoắc nọ kia dị kị: môt mảng hoạ dãn ra lệch tâm dĩ nhiên tại nguyên cơ do CTM sai trật khớp cùng tổ mảng sai biến yếu tố căn tỷ (scale factors) lệch phân ly, một cái đồ hiệu ảnh chìm như nhau không sai tẹo trên bốn chục giấy mực in hệt lại thật tại do một bảng tạo phom hình ấn XObject kêu cất lời đi cất lời đến tận bốn chục vòng phát sinh khởi động lên, cùng với một tấm hoạ lộ bóng trồng cây chuối sấp lộn đáy mặt dứt khoát không chi bởi đâu khác biệt từ một mảnh dấu ấn cắm hoán lật tráo ngã nằm ngữa bên lõi của ma trận mà thôi, hoàn toàn không phải tệp hư gẫy lỗi corrupt chi cả
Hướng đi này đưa đến đâu
Mô hình kiến trúc quy hệ mảng ảnh sẽ ngót nhỏ gọn bỗng chốc nếu mà bạn ngắm thấu toàn đồ quy thế dạng của chúng. Một định dòng thông luồng của hệ thông nội bộ thực chất là quy trình bộ lệnh ghim nốt chuỗi lệnh (postfix bytecode) đôn đốc hoạt hiện chiếu hướng chạy đua trực giao cùng quy hệ trạng trình luôn có khả dĩ quy biến được biến đổi được; điểm mốc khởi thuỷ của lưới định toạ hệ cắm sâu neo cọc đằng mép cạnh nằm mé mép góc lề trái dạt ngang đuôi trang kéo trút lên chuyển theo lưới chiếu biến hình cấu hàm đồ tạo CTM; đường vòng bao toạ nẻo luồng (paths) được vun dựng ngầm tạo rắp hình lặng câm chẳng la và rồi đổ quét sơn nhuộm cho hình bằng phép thao phán ra thao hoạ duy theo quy hoạch cố định định hữu; mảng hiệu tông hệ chỉnh đường hoạ và lớp hệ phân tông hệ màu (color and line settings) được cố định trụ giữ dứt điểm qua chừng ngắt đoạn bị ôm chèn theo lệnh móc ngoặc q/Q; ấn phẩm hiển thị (images) cùng khuôn phác tái gọi hình (reusable graphics) hoá là gốc đối lập chuẩn gốc XObjects đẩy nới quy tạo do phân hoán khối không hình ô cạnh lập theo gốc số học vuông (unit square). Gần y như đại hội hạch sách bao thói nhiễu rối của bộ kết lập cấu kết render đồ quy tóm gọn rút cục theo ngọn gàng cho được đúng 5 lối lề phép nguyên lý nọ. Ví dĩ nếu mà điều nguyện tìm chi để nắm bắt cách làm sao phần đồ phân thao hoạt tác phân diễn hoạ ảnh đồ (graphics operators) thả thân an cư nằm trú ngụ gọn đằng tại vị của đại không bộ kiểu khung hệ đồ phân mảng thông định (object model), quy đồ gốc thông hiệu từ điển tra soát ở diện dạng bảng chỉ chiếu ngang chéo (cross-reference table) mà đang quy trỏ gọi vẩy tay hờ gọi tụi nó, quyển thông trình kĩ mô lược tổng cấu tạo file gốc PDF (technical overview of PDF file structure) lợp bọc chèo chải đi kín nốt rào mặt ngoài vỏ đó, rồi hướng mục lập trình tự tay vun chắp trang hình cấu xuất lập văn PDF thuần vắt ngay lúc mốc từ khởi lập số Không đầu tay theo bước vác đôn chỉ đẽo thông dòng bytes băng từ khởi điểm tới vạch cập bờ. Trình tạo hiệu hoạ chữ văn bản (text drawing) ẩn ngụ tại tổ riêng của nhóm chi đồ hiệu cấu thành tác vụ phả thuộc nhánh liên giới nọ cũng đồng hành gồng ôm gánh mấy lỗi trượt gãy lở hiểm hóc riêng thân nó vậy, có gom bao ghi kể tại bài đồng biên mục bên lề cho tiêu chí nắm cách làm PDF hiển xuất phông hiệu định dạng mẫu (PDF text and font handling)
Bộ API mã truy hoán đồ thị (Delphi drawing calls) xuất hiển diện cho ví dụ ra đây, MoveTo, LineTo, Stroke, Rectangle, Fill, SetRGBFillColor, AddImage, cùng ShowImage, hoàn toàn thuộc lớp nhánh ở bộ linh thư HotPDF Component lập tạo dành phần Delphi đi rẽ nhánh với cả C++Builder, cấu hình phụ tá để phát tuyến đồ quy thao hệ tác vẽ (content-stream operators) đỡ cho bạn luôn thể