ghostscript.net不识别文件名中的特殊字符


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表格。

相关内容

  • 没有找到相关文章

最新更新