Использовать PDF Form XObjects с поверхностью Cairo PDF?

Я хотел бы использовать Cairo для создания многостраничного PDF-документа, в котором каждая страница имеет общий шаблон. Можно ли использовать PDF Form XObjects из Каира, чтобы каждая страница использовала один и тот же шаблон, добавляя только настройки на страницу?

Я пытался использовать Context.set_source_surface, но кажется, что поверхность растрируется перед покраской:

пример использования set_source_surface

import cairo

template_sfc = cairo.PDFSurface("/tmp/template.pdf", 600, 600)
template_ctx = cairo.Context(template_sfc)
template_ctx.move_to(20, 20)
template_ctx.set_source_rgb(0, 0, 0)
template_ctx.show_text("HELLO")
template_ctx.fill()

sfc = cairo.PDFSurface("/tmp/actual.pdf", 612, 792)
ctx = cairo.Context(sfc)
ctx.set_source_surface(template_sfc)
ctx.paint()
sfc.finish()

person David Wolever    schedule 18.01.2014    source источник
comment
После долгих поисков я не нашел решения. На данный момент кажется, что лучшим вариантом для моего варианта использования является использование Cairo для рендеринга PDF-файлов, а затем PyPDF2 для их объединения.   -  person David Wolever    schedule 20.01.2014


Ответы (1)


Используйте поверхность записи вместо поверхности PDF для своего шаблона. Кроме того, строка template_ctx.fill() не требуется.

person Adrian    schedule 22.01.2014