簡體   English   中英

GhostScript.net無法識別fileName中的特殊字符

[英]GhostScript.net not Recognize special character in fileName

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 =新的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(outPutFileEncodedBytes);

ghostscript.Process(GetArgs(strInput,strOutPut));

結果是一樣的

在文件名未表示為UTF-8的平台上,Ghostscript可執行文件(與Ghostscript.NET使用的DLL相反)將文件名轉換為UTF-8。 例如,在Windows上,非拉丁文件名采用寬字符格式,並且Ghostscript前端可執行文件會將它們傳遞給UTF-8,然后再將其傳遞給DLL。

DLL不會自己執行此操作。 取決於調用方(在這種情況下為Ghostscript.NET或您的代碼),以確保傳遞給DLL的任何文件名都采用UTF-8格式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM