c# - System.DllNotFoundException:'gdi32.dll 程序集:类型:成员:(空)'
问题描述
我必须在 itext7 pdf 文件中写一个表格。该表必须包含阿拉伯语单词。我已经尝试解决这个问题好几个小时了。我找到了这段代码,所以我尝试了一下:
string[] sources = new string[] { "english.xml", "arabic.xml", "hindi.xml", "tamil.xml" };
PdfWriter writer = new PdfWriter(DEST);
PdfDocument pdfDocument = new PdfDocument(writer);
Document document = new Document(pdfDocument);
FontSet set = new FontSet();
set.AddFont("NotoNaskhArabic-Regular.ttf");
set.AddFont("NotoSansTamil-Regular.ttf");
set.AddFont("FreeSans.ttf");
document.SetFontProvider(new FontProvider(set));
document.SetProperty(Property.FONT, new String[] { "MyFontFamilyName" });
foreach (string source in sources)
{
XmlDocument doc = new XmlDocument();
var stream = new FileStream(source, FileMode.Open);
doc.Load(stream);
XmlNode element = doc.GetElementsByTagName("text").Item(0);
Paragraph paragraph = new Paragraph();
XmlNode textDirectionElement = element.Attributes.GetNamedItem("direction");
Boolean rtl = textDirectionElement != null && textDirectionElement.InnerText.Equals("rtl");
if (rtl)
{
paragraph.SetTextAlignment(TextAlignment.RIGHT);
}
paragraph.Add(element.InnerText);
document.Add(paragraph);
}
document.Close();
我从https://itextpdf.com/en/blog/technical-notes/displaying-text-different-languages-single-pdf-document得到它。我开始收到我的 FontSet 和 FontSet 提供程序为空的异常,所以我猜我没有代码中提到的字体。我开始寻找一种安装它们的方法,我找到了这个答案Installing and using a specific font in a winform,所以我添加了以下代码:
public class user
{
[DllImport("gdi32.dll", EntryPoint = "AddFontResourceW", SetLastError = true)]
public static extern int AddFontResource([In][MarshalAs(UnmanagedType.LPWStr)]
string lpFileName);
}
这在我的主要活动中:
var result = user.AddFontResource(@"C:\MY_FONT_LOCATION\NotoNaskhArabic-Regular.ttf");
但它没有用,我得到了异常:System.DllNotFoundException:'gdi32.dll 程序集:类型:成员:(null)'。我应该怎么办?我在正确的道路上吗?提前致谢
解决方案
推荐阅读
- php - Laravel 刀片更漂亮的格式,但删除了语法突出显示和片段
- ios - 在 iOS 13.0 SwiftUI 中使用 Butotnactios 更改滚动视图
- c# - C# EWS ExchangeService:我如何知道它是否已通过身份验证?
- javascript - 在移动网站上使用侧导航菜单的滚动中断
- reactjs - 如何让反应路由器启动并运行?
- javascript - Vue3中API的对象解构
- flutter - 颤动我想得到列表
值一一作为整数 - authorization - 无效资源或 Resource[id] 不存在 keycloak
- c - C vs 变量范围中的悬空指针问题
- javascript - parseInt() 发生了一些奇怪的事情