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

标签 c# ios pdf pdfsharp

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

图像尺寸为 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)];

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

例如

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

有什么想法吗?谢谢。

最佳答案

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

我找到了 this thread在有一定用处的 PDFSharp 论坛上。

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

关于c# - 将图像渲染为 pdf 是模糊的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14268154/

相关文章:

ios - Swift 如何等待一个 Action 完成?

c# - 是否可以验证发布的文件是否为 pdf?

php - pdf 下载 html2pdf

android - 如何在android中开发一个pdf阅读器

c# - 使用 LINQ 在两个表之间选择不同的值

c# - 单元测试与任务一起永远运行

c# - 如何以编程方式通过 Win32-API 显示工具提示

c# - 编译器找不到方法名

ios - 无法在 UISearchResultsTableView 中滚动到底部

ios - swift 中单个对象的 NSNotification