如何在cairographics中设置DPI?

时间:2012-02-27 04:46:08

标签: pdf-generation vector-graphics cairo

为PDF创建矢量图形时,我使用其中一个“创建”功能进行PDF渲染,例如cairo_pdf_surface_create_for_stream。该功能的签名是:

cairo_surface_t *   cairo_pdf_surface_create_for_stream (cairo_write_func_t write_func,
                                                         void *closure,
                                                         double width_in_points,
                                                         double height_in_points);

现在,我可以用点设置曲面的大小,但是一个点的大小看似硬编码。在描述中它说:

  

width_in_points:表面宽度,以磅为单位(1点== 1 / 72.0英寸)
  height_in_points:曲面的高度,以磅为单位(1点== 1 / 72.0英寸)

如您所见,1pt = 1/72“(72 dpi)。但我该如何更改该设置?

当使用不同的分辨率并以这种方式进行补偿时,我可以考虑尺寸,但在我看来,这似乎是最差的做法。

2 个答案:

答案 0 :(得分:3)

A point is a standard typograpical unit of measure。无论你是否在谈论开罗,一点就是1/72“。这不是你改变的一些设置,就像你不改变一英尺的英寸数一样。

使用物理测量(点)而非依赖于屏幕的(像素)的全部原因是分辨率无关。这是一件好事。

你希望通过改变DPI来实现什么目标?

答案 1 :(得分:1)

如果通过“更改dpi”你想以不同于1/72“的比例绘制你可以使用cairo_scale()。如果你指的是后备图像的dpi(光栅化的区域,因为它们不能由pdf本地绘制)使用cairo_surface_set_fallback_resolution()。