EPLAN API调用导出PDF时白色对象不显示问题求助
EPLAN Electric P8 2.9 API导出PDF时白色对象不显示问题
问题背景
我们维护一个批量处理工具,可从EPLAN Electric P8归档文件列表生成包含PDF导出在内的多种交付物。将EPLAN版本从2.7升级至2.9后,通过API调用导出PDF出现异常:白色对象无法显示,但在EPLAN客户端内通过「页面->导出->PDF...」操作时显示完全正常。
注:必须采用PDF导出方式,不能用打印替代。
已尝试的三种API调用方式
1. 通过Export对象直接调用
string projectPath = @"<PATH TO VALID .ell/.elk FILE>"; Eplan.EplApi.DataModel.Project testProject = TESTER_OpenProject(projectPath); Eplan.EplApi.HEServices.Export export = new Eplan.EplApi.HEServices.Export(true); export.PdfProject(testProject, string.Empty, $"$(DOC)\\{testProject.ProjectName}.pdf", Eplan.EplApi.HEServices.Export.DegreeOfColor.BlackAndWhite, false, "en_US", true);
2. 通过命令行解释器调用
Eplan.EplApi.ApplicationFramework.ActionCallingContext pdfContext = new Eplan.EplApi.ApplicationFramework.ActionCallingContext(); pdfContext.AddParameter("type", "PDFPROJECTSCHEME"); pdfContext.AddParameter("projectname", <projectName>); pdfContext.AddParameter("exportfile", <pdfFileName>); pdfContext.AddParameter("blackwhite", "1"); pdfContext.AddParameter("exportscheme", ""); pdfContext.AddParameter("useprintmargins", "1"); Eplan.EplApi.ApplicationFramework.CommandLineInterpreter cmdLineItp = new Eplan.EplApi.ApplicationFramework.CommandLineInterpreter(); cmdLineItp.Execute("export", pdfContext);
3. 通过Action Manager调用
Eplan.EplApi.ApplicationFramework.ActionCallingContext PDFContext = new Eplan.EplApi.ApplicationFramework.ActionCallingContext(); PDFContext.AddParameter("type", "PDFPROJECTSCHEME"); PDFContext.AddParameter("projectname", <projectName>); PDFContext.AddParameter("exportfile", <pdfFileName>); PDFContext.AddParameter("blackwhite", "1"); PDFContext.AddParameter("exportscheme", ""); PDFContext.AddParameter("useprintmargins", "1"); PDFContext.AddParameter("Language", "en_US"); Eplan.EplApi.ApplicationFramework.ActionManager actionManager = new Eplan.EplApi.ApplicationFramework.ActionManager(); Eplan.EplApi.ApplicationFramework.Action PDFExportAction = actionManager.FindAction("export"); PDFExportAction.Execute(PDFContext);
三种方式均得到相同结果:PDF中仅能显示非白色对象,白色对象完全缺失。
测试验证
我们创建了简化测试项目(单页面包含绿色方块和白色方块):
- EPLAN客户端手动导出的PDF可正常显示两个方块
- 上述API代码生成的PDF仅显示绿色方块
可能的解决方案
1. 调整黑白导出模式参数
EPLAN 2.9可能修改了黑白模式下的颜色映射逻辑,白色被默认当作背景过滤。尝试切换为彩色导出模式测试:
- Export对象调用修改:将
DegreeOfColor.BlackAndWhite替换为DegreeOfColor.Color - Action调用修改:将
blackwhite参数值从1改为0
修改后的Export对象调用示例:
string projectPath = @"<PATH TO VALID .ell/.elk FILE>"; Eplan.EplApi.DataModel.Project testProject = TESTER_OpenProject(projectPath); Eplan.EplApi.HEServices.Export export = new Eplan.EplApi.HEServices.Export(true); export.PdfProject(testProject, string.Empty, $"$(DOC)\\{testProject.ProjectName}.pdf", Eplan.EplApi.HEServices.Export.DegreeOfColor.Color, false, "en_US", true);
2. 指定自定义导出方案
客户端手动导出时默认使用的导出方案可能包含白色对象的导出规则,而API调用中exportscheme参数留空会触发不同的默认行为。你可以:
- 在EPLAN客户端中完成一次正常的PDF导出,保存自定义导出方案(例如命名为
WhiteObjectEnabled) - 在API调用中指定该方案名称:
// 以命令行解释器调用为例,修改exportscheme参数 pdfContext.AddParameter("exportscheme", "WhiteObjectEnabled");
3. 检查EPLAN 2.9 API变更日志
查阅EPLAN官方API文档或版本变更说明,确认2.7到2.9之间PDF导出相关API的行为变更,特别是黑白模式下的颜色处理逻辑,是否有新增参数用于控制白色对象的导出。
4. 验证对象导出属性
虽然客户端能正常导出,但仍需确认白色对象的属性中是否开启了「允许导出/打印」选项,避免API调用时触发严格的过滤规则。
内容的提问来源于stack exchange,提问作者Nick Henderson
相关产品推荐
相关产品推荐

