C# 将Pdf转换为png在图像周围创建黑色边框
我正在尝试使用ghostscript.net(1.2.1.0)将pdf转换为图像,gs版本为9.22 x86 我的代码:C# 将Pdf转换为png在图像周围创建黑色边框,c#,png,ghostscript.net,C#,Png,Ghostscript.net,我正在尝试使用ghostscript.net(1.2.1.0)将pdf转换为图像,gs版本为9.22 x86 我的代码: using (_rasterizer = new GhostscriptRasterizer()) { _rasterizer.Open(inputPdfPath, _lastInstalledVersion, false); //_rasterizer.CustomSwitches.Add("-sDEVICE=pngalpha"); //_rast
using (_rasterizer = new GhostscriptRasterizer())
{
_rasterizer.Open(inputPdfPath, _lastInstalledVersion, false);
//_rasterizer.CustomSwitches.Add("-sDEVICE=pngalpha");
//_rasterizer.CustomSwitches.Add("-dTextAlphaBits=4");
//_rasterizer.CustomSwitches.Add("-dGraphicsAlphaBits=4");
for (int pageNumber = 1; pageNumber <= _rasterizer.PageCount; pageNumber++)
{
var desiredDPI = 102;
using (System.Drawing.Image img = _rasterizer.GetPage(desiredDPI, desiredDPI, pageNumber))
{
img.Save(pageNumber + ".png", ImageFormat.Png);
}
}
}
当您说您测试了“gs命令”时,您的意思是您从命令行运行了Ghostscript,并得到了预期的结果吗?是的。comand was
gs-sDEVICE=pngalpha-ob.png-r105 b.pdf
好吧,如果Ghostscript从命令行运行,那么它一定是框架中的某个东西(尽管我看不出是什么)。一种可能性;您在这两种情况下使用的是同一版本的Ghostscript吗?是的。它们是相同的版本。我测试了GhostscriptProcessor,它也能工作。似乎在GhostscriptRasterizer中发生了一些事情。谢谢你@Kens。我想使用GhostscriptProcessor
直接访问ghostscript。谢谢你用这段代码救了我一命。我使用的是GhostScriptRasterizer对象,而导入的任何PDF都是以黑色背景上的黑色文本导出的,这使得我的尝试毫无用处,并且成为客户应用程序中的一个主要障碍。这个(稍加改动)非常适合我使用。再次感谢。
public Image getImg(string inputFile, int pageNO, int resolution)
{
GhostscriptPngDevice dev = new GhostscriptPngDevice(GhostscriptPngDeviceType.PngAlpha);
dev.GraphicsAlphaBits = GhostscriptImageDeviceAlphaBits.V_4;
dev.TextAlphaBits = GhostscriptImageDeviceAlphaBits.V_4;
dev.ResolutionXY = new GhostscriptImageDeviceResolution(resolution, resolution);
dev.InputFiles.Add(inputFile);
dev.Pdf.FirstPage = pageNO;
dev.Pdf.LastPage = pageNO;
dev.CustomSwitches.Add("-dDOINTERPOLATE");
dev.OutputPath = pageNO + ".png";
dev.Process();
return Image.FromFile(pageNO + ".png");
}
GhostscriptPngDevice dev = new GhostscriptPngDevice(GhostscriptPngDeviceType.Png16m);
dev.GraphicsAlphaBits = GhostscriptImageDeviceAlphaBits.V_4;
dev.TextAlphaBits = GhostscriptImageDeviceAlphaBits.V_4;
dev.BackgroundColor = Color.White;
dev.ResolutionXY = new GhostscriptImageDeviceResolution(desired_x_dpi, desired_y_dpi);
dev.InputFiles.Add(inputPathAndFile);
dev.Pdf.FirstPage = 1;
dev.Pdf.LastPage = 1;
dev.CustomSwitches.Add("-dDOINTERPOLATE");
dev.OutputPath = outputPathAndFile;
dev.Process();