[英]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.