C# 将图像渲染为pdf是模糊的

C# 将图像渲染为pdf是模糊的,c#,ios,pdf,pdfsharp,C#,Ios,Pdf,Pdfsharp,我一定是做错了什么。我已经尝试过将图像渲染为PDF,并使用iOS中的pdfContext和PDFSharp将图像渲染为PDF。当我这样做的时候,它比我在Photoshop或微软的图片预览中打开的时候更模糊。所以也许我不明白图像本身是怎么回事。以下是我所知道的: 图像大小为90 x 20(宽x高)。分辨率为264 ppi 要在PDFSharp中绘制它,我需要: XImage image = XImage.FromGdiPlusImage(Properties.Resources.logo); gp

我一定是做错了什么。我已经尝试过将图像渲染为PDF,并使用iOS中的pdfContext和PDFSharp将图像渲染为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


有什么想法吗?谢谢。

可能,PDF光栅化库使用不同于Photoshop、Windows Viewer的图像插值算法,该算法不正确地应用于生成的视图。他们还使用了不同的配置文件,这也会影响渲染。

我意识到这是一个老问题,可能不再是一个问题,但我也有同样的问题

我在PDFSharp论坛上找到了一些有用的东西

据我所知,绘画中的图像上的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文档首先没有像素的概念。

Crystal查看此链接,它可能会添加一些有用的提示是的,pdf文档使用绝对单位,如点、英寸和毫米。根据图像的像素数和指定的PPI,图像的PointWidth将返回以点为单位的预期打印大小,这是图像格式中嵌入的一个属性。我发现将XImage.Interpolate设置为false在条形码图像打印出模糊时对我有效。将图像添加到PdfPage时,可以将XImage.Interpolate属性设置为false,然后它们在PDF中不再显示模糊。
gfx.DrawImage(logo, 0, 0, ApplyTransform(logo.PointWidth), ApplyTransform(logo.PointHeight));

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