Это было бы очень полезно реализовать. Здорово, что занимаетесь этим.
А ведь вьюшка ведь тоже как поверхность выходит, а принтерная поверхность по сути генерирует ps (наверное так).
Что если сделать Cairo расширением Views? Вообще это возможно? Тогда фрейм как бы станет лэйаутом и ports будет абстрактным классом для векторной графики?

Тогда чтобы создать каринку в Cairo нужно только будет указать:
TYPE
Axes* = POINTER TO ABSTRACT RECORD (Cairo.View) END;
axes: Axes;

PROCEDURE (axes: Axes) Restore (f: Views.Frame; fl, ft, fr, fb: INTEGER);
BEGIN
f.DrawLine(...);
END Restore.

Или по типу как принтер реализован. Типо такого должно получится
Cairo.Png(view, '300dpi');

Сейчас векторную графику в PDF экспортирую отправляя из blackBox на печать вьюшку на виртуальный принтер, он ее в PS переделывает именно в векторном формате.