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"
但是如果将文件路径更改为研究员
字符串inputfile =" d:%1.pdf";(包含%( 字符串outputFile =" d: output.pdf";(不包含%(
它有效,没问题
,如果将文件路径更改为研究员
字符串inputfile =" d:你.pdf"; 字符串outputfile =" d: output.pdf";
inputfile =" d:你.pdf"你"是中文字符
这也不起作用
我还有更多测试,如果文件路径包含汉字,而不是 作品。
任何人都可以提供一些建议吗?非常感谢。
我做了一些更改,将文件名转换为utf8作为研究员
utf8encoding utf8 = new utf8encoding((;
字符串inputfile =" d:你.pdf"; 字符串outputfile =" d:%91.pdf";
byte [] inputfileencodedBytes = utf8.getBytes(inputfile(;
byte [] outputfileencodedBytes = utf8.getBytes(outputfile(;
字符串strinput = system.text.encoding.utf8.getString(inputfileencodedbytes(;
字符串stroutput = system.text.encoding.utf8.getString(outputFileCodedBytes(;
ghostscript.process(getargs(strinput,stroutput((;
结果是相同的
ghostscript可执行文件(与ghostscript.net使用的DLL相对(将在未表达为UTF-8的文件名上的平台上,将文件名转换为UTF-8。例如,在Windows非LATIN文件名上,以广泛的字符格式,并且Ghostscript前端可执行文件将它们在将其传递给DLL之前将其转换为UTF-8。
DLL不会自行执行此操作。它取决于呼叫者(在这种情况下在ghostscript.net或您的代码(以确保传递给dll的任何文件名均以UTF-8表格。