110,543
社区成员
发帖
与我相关
我的任务
分享
引用文件是看官网实例里面的 C:\Program Files (x86)\Tki\7\Common\Lppx2.tlb, 调用代码:
using LabelManager2;
...
LabelManager2.Application csApp = null;
Document doc = null;
try
{
csApp = new LabelManager2.ApplicationClass();
if (doc != null)
{
doc.Close(false);
Marshal.ReleaseComObject(doc);
doc = null;
}
if (csApp != null)
{
Documents documents = csApp.Documents;
//this.CsApp.Visible = true;
documents.Open(localFullPath, false);
doc = csApp.ActiveDocument;
Marshal.ReleaseComObject(documents);
}
doc.Variables.FreeVariables.Item("DataCode").Value = "2024-3-9";//给lab文件中设置的变量传值
doc.CopyImageToFile(8, "BMP", 0, 100, localDownPath + "/imgs");
}
catch (Exception ex)
{
if (doc != null)
{
Marshal.ReleaseComObject(doc);
doc = null;
}
System.Diagnostics.Debug.Assert(false, ex.Message);
}
finally
{
CsApp.Documents.CloseAll();
CsApp.Quit();
GC.Collect(0);
}
但是调试的时候,发现Application.ActiveDocument一直为null,调试截图:
有大佬知道怎么解决吗?
红包真大啊
解决了,原因是:路径里面的"/" 不识别,导致找不到文件,
Path.GetFullPath("路径")//转换后调试界面查看值是”..\..\...“
麻了,我是笨比。
这个问题可能是由于在打开文档时出现了错误或者延时导致的。我建议您尝试以下几种方法来解决这个问题:
等待文档完全加载
在获取 ActiveDocument 之前,加入一个短暂的等待,让文档有足够时间完全加载。可以使用 System.Threading.Thread.Sleep() 方法来实现这一点。
documents.Open(localFullPath, false);
// 等待文档加载
System.Threading.Thread.Sleep(500); // 等待500毫秒
doc = csApp.ActiveDocument;
使用事件监听文档打开完成
另一种方法是使用 DocumentEvents 接口来监听文档打开完成事件,然后再获取 ActiveDocument。
var documentEvents = csApp.Events.DocumentEvents;
bool isDocumentOpened = false;
// 设置文档打开完成事件处理程序
documentEvents.DocumentOpened += (Document Doc) =>
{
isDocumentOpened = true;
doc = Doc;
};
documents.Open(localFullPath, false);
// 等待文档加载完成
while (!isDocumentOpened)
{
System.Threading.Thread.Sleep(100);
Application.DoEvents();
}
3.检查错误信息
如果以上方法都不奏效,您可以尝试捕获在打开文档时可能抛出的异常,并检查错误信息以了解具体原因。
try
{
documents.Open(localFullPath, false);
doc = csApp.ActiveDocument;
}
catch (Exception ex)
{
// 处理异常
Console.WriteLine(ex.Message);
}