private static string[] GetArgs(string inputFile, string outputFile)
{
return new[] {
$"gs",
$"-o",
$"{outputFile}",
$"-dNoOutputFonts",
$"-sDEVICE=pdfwrite",
$"{inputFile}",
};
GhostscriptProcessor ghostscript = new GhostscriptProcessor();
string inputFile = "D:\\%1.pdf";
string outputFile = "D:\\%output.pdf";
ghostscript.Process(GetArgs(inputFile, outputFile));
there will be an error "An error occured when call to
'gsapi_init_with_args'被制成:-100“
但是如果将文件路径更改为同伴
string inputFile =“ D:\%1.pdf”; (包含%) 字符串outputFile =“ D:\ output.pdf”; (不包含%)
有效,没问题
,如果将文件路径更改为同伴
string inputFile =“ D:\你.pdf”; 字符串outputFile =“ D:\ output.pdf”;
inputFile =“ D:\你.pdf”“你”是汉字
这也不行
如果文件路径包含汉字,则我还要进行更多测试 有效。
有人可以提供一些建议吗?非常感谢。
我做了一些更改以将文件名转换为UTF8
UTF8Encoding utf8 =新的UTF8Encoding();
string inputFile =“ D:\你.pdf”; 字符串outputFile =“ D:\%91.pdf”;
Byte [] inputFileEncodedBytes = utf8.GetBytes(inputFile);
Byte [] outPutFileEncodedBytes = utf8.GetBytes(outputFile);
string strInput = System.Text.Encoding.UTF8.GetString(inputFileEncodedBytes);
字符串strOutPut = System.Text.Encoding.UTF8.GetString(outPutFileEncodedBytes);
ghostscript.Process(GetArgs(strInput,strOutPut));
结果相同
答案 0 :(得分:0)
在文件名未表示为UTF-8的平台上,Ghostscript可执行文件(与Ghostscript.NET使用的DLL相反)将文件名转换为UTF-8。例如,在Windows上,非拉丁文件名采用宽字符格式,并且Ghostscript前端可执行文件会将它们传递给DLL之前将其转换为UTF-8。
DLL不会自行执行此操作。由调用者(在本例中为Ghostscript.NET或您的代码)决定是否传递给DLL的任何文件名都采用UTF-8格式。