将图像渲染为pdf是模糊的

时间:2013-01-10 22:08:11

标签: c# ios pdf pdfsharp

我一定是做错了。我尝试使用PDFSharp将图像渲染为iOS中的pdfContext和PDF。当我这样做时,与我在Photoshop或微软的图片预览中打开它时相比,它很模糊。所以也许我不明白图像本身发生了什么。这就是我所知道的:

图像尺寸为90 x 20(宽x高)。分辨率为264 ppi。

要在PDFSharp中绘制它,我会这样做:

XImage image = XImage.FromGdiPlusImage(Properties.Resources.logo);
gphx.DrawImage(image, leftStartDefault, 50, image.PointWidth, image.PointHeight);

我也尝试过上面代码中的image.PixelWidth,image.PixelHeight。两者都产生相同的模糊结果。

在iOS中,我做

UIImage *logo = [UIImage imageNamed:@"logo.png"];
[logo drawInRect:CGRectMake(self.frame.size.width - 90 - 60, 20, 90, 20)];

两者都会产生模糊的结果。我不知道为什么。我不知道如果选择要绘制的大小,我是否缺少这些东西。如果我需要从我们的图形艺术家那里索取不同的分辨率/尺寸图像,或者这是我进行绘图调用的方式。如果我以一半大小绘制图像,则更清晰。

e.g。

gphx.DrawImage(image, leftStartDefault, 50, 45, 10);

有什么想法?感谢。

2 个答案:

答案 0 :(得分:1)

我意识到这是旧的,也许不再是问题,但我遇到了同样的问题。

我在PDFSharp论坛上找到了this thread,这有点用处。

据我所知,绘画中图像上的x像素不会以相同的方式传递到pdf图像中的y像素(至少在我的情况下)。在绘画中使用100x100px的图像会将相同的图像应用于大约153x153px的pdf。我完全不知道为什么会发生这种情况,但是一旦我弄清楚图像尺寸增加的因素,就可以“调整”图像以便在pdf上打印。

像这样:

gfx.DrawImage(logo, 0, 0, ApplyTransform(logo.PointWidth), ApplyTransform(logo.PointHeight));

private static double ApplyTransform(double previous)
{
    return previous * .6538;
}

编辑:经过进一步研究,我认为这是由于pdf文档首先没有像素概念。

答案 1 :(得分:0)

PDF光栅化库可能使用与Photoshop,Windows Viewer ... 图像插值算法不同的颜色,这些算法错误地适用于生成的视图。他们也使用了不同的ICC配置文件,它也会影响渲染。