Ghostscript.NET 图片文字质量问题
Posted
技术标签:
【中文标题】Ghostscript.NET 图片文字质量问题【英文标题】:Ghostscript.NET image text quality issue 【发布时间】:2014-08-22 08:22:27 【问题描述】:我正在尝试使用 ghostscript 将 pdf 文档转换为图像。所需的 dpi 设置为 72 像素,该值应该足够高以使文本清晰显示,但大多数文本难以辨认。
我可以提高 dpi,但这会导致我不想拥有的非常大的图像文件。
我知道 ghostscript 有一些参数可以添加抗锯齿等(例如 -dDOINTERPOLATE)。如何将它们添加到以下代码中,或者有更好的方法吗?
int desired_x_dpi = 72;
int desired_y_dpi = 72;
GhostscriptRasterizer _rasterizer = new GhostscriptRasterizer();
_rasterizer.Open(inputPdfPath, localDllInfo, false);
for (int pageNumber = 1; pageNumber <= _rasterizer.PageCount; pageNumber++)
string pageFilePath = Path.Combine(outputPath, "Page-" + pageNumber.ToString() + ".png");
Image img = _rasterizer.GetPage(desired_x_dpi, desired_y_dpi, pageNumber);
img.Save(pageFilePath, ImageFormat.Png);
【问题讨论】:
你使用什么 Ghostscript.NET 版本? 版本 1.1.9 作为 nuget 包下载。 【参考方案1】:在 1.1.9 中,GhostscriptRasterizer 默认设置了 -dDOINTERPOLATE
。您可以通过 GhostscriptRasterizer 类控制的唯一参数是 TextAlphaBits
和 GraphicsAlphaBits
。
如果您想更好地控制参数,我建议您尝试使用 Ghostscript.NET 中的其他类。
看看这个样本:Image devices usage samples
您可以通过这种方式添加自定义参数(开关):
GhostscriptPngDevice dev = new GhostscriptPngDevice(GhostscriptPngDeviceType.Png16m);
dev.GraphicsAlphaBits = GhostscriptImageDeviceAlphaBits.V_4;
dev.TextAlphaBits = GhostscriptImageDeviceAlphaBits.V_4;
dev.ResolutionXY = new GhostscriptImageDeviceResolution(96, 96);
dev.InputFiles.Add(@"E:\gss_test\indispensable.pdf");
dev.Pdf.FirstPage = 2;
dev.Pdf.LastPage = 4;
dev.CustomSwitches.Add("-dDOINTERPOLATE"); // custom parameter
dev.OutputPath = @"E:\gss_test\output\indispensable_color_page_%03d.png";
dev.Process();
当我有时间时,我将扩展 GhostscriptRasterizer 以接受 Ghostscript.NET v.1.2.0 版本的 Open 方法中的自定义参数。
【讨论】:
太棒了。我去做。感谢您的快速回复。 还有一点,如果你有一个本地 dll,你可以将你的“localDllInfo”传递给 dev.Process(localDllInfo,....) 方法。【参考方案2】:遇到同样的问题。通过将CustomSwitches
与分辨率添加到GhostscriptRasterizer
来修复:
using (var rasterizer = new GhostscriptRasterizer())
rasterizer.CustomSwitches.Add("-r500x500");
...other code here
【讨论】:
以上是关于Ghostscript.NET 图片文字质量问题的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Ghostscript 和 Ghostscript .NET 通过嵌入 IIC 配置文件生成正确的 PDF/A