iText和iTextSharp之間存在細微的差異。
在iText的,registerDirectories()
看起來是這樣的:
public int registerDirectories() {
int count = 0;
String windir = System.getenv("windir");
String fileseparator = System.getProperty("file.separator");
if (windir != null && fileseparator != null) {
count += registerDirectory(windir + fileseparator + "fonts");
}
count += registerDirectory("/usr/share/X11/fonts", true);
count += registerDirectory("/usr/X/lib/X11/fonts", true);
count += registerDirectory("/usr/openwin/lib/X11/fonts", true);
count += registerDirectory("/usr/share/fonts", true);
count += registerDirectory("/usr/X11R6/lib/X11/fonts", true);
count += registerDirectory("/Library/Fonts");
count += registerDirectory("/System/Library/Fonts");
return count;
}
在iTextSharp的然而,該方法是這樣的:
public virtual int RegisterDirectories() {
string dir = Path.Combine(
Path.GetDirectoryName(
Environment.GetFolderPath(Environment.SpecialFolder.System)), "Fonts");
return RegisterDirectory(dir);
}
Java是平臺無關的,所以我們要尋找的「平常犯罪嫌疑人。 C#是Windows特有的,所以我們可以依賴環境來告訴我們在哪裏可以找到字體。你的問題告訴我們,單聲道不支持這個,所以你必須使用FontFactory.RegisterDirectory("/usr/share/fonts");