我正在尝试转换一个pdf文件到图像使用幽灵脚本。所需的dpi设置为72 of,这应该足够高,以便文本显示清楚,但大多数文本是难以辨认的。
我可以提高dpi,但这将导致非常大的图像文件,我希望没有。
我知道有一些关于幽灵脚本添加反混叠等的争论(例如-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);
}发布于 2014-08-22 08:53:33
在GhostscriptRasterizer 1.1.9中,默认情况下设置了-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发行版的开放方法中的自定义参数。
发布于 2018-10-05 12:27:58
也有同样的问题。通过向CustomSwitches添加分辨率的GhostscriptRasterizer来修正
using (var rasterizer = new GhostscriptRasterizer())
{
rasterizer.CustomSwitches.Add("-r500x500");
...other code here
}https://stackoverflow.com/questions/25442607
复制相似问题