You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

APS环境下Revit 2021及更早版本平面图PDF打印方案咨询

APS环境下兼容旧版Revit(2019/2020)生成PDF平面图的方案

我开发了一款Revit插件,可将平面图用作PDF背景。通过SubmitPrint方法和PrintManager配置,借助PDF995/Adobe Acrobat虚拟打印机驱动,可将视图打印为PDF并作为Xyicon应用的背景,核心代码如下:

using (var tr = new Transaction(document, "Xyicon printer settings creation"))
{
    tr.Start();
    document.PrintManager.SelectNewPrintDriver(printer);

    var printManager = document.PrintManager;
    printManager.PrintRange = PrintRange.Select;
    ViewSheetSetting viewSheetSetting = printManager.ViewSheetSetting;
    viewSheetSetting.CurrentViewSheetSet.Views = viewSet;
    viewSheetSetting.SaveAs("Xyicon_ViewSet");
    PaperSize paperSize = null;
    foreach (PaperSize ps in printManager.PaperSizes)
    {
        if (ps.Name.Equals("ARCH E"))
        {
            paperSize = ps;
            break;
        }
    }
    printManager.PrintSetup.CurrentPrintSetting.PrintParameters.PaperSize = paperSize;
    printManager.PrintSetup.CurrentPrintSetting.PrintParameters.PaperPlacement = PaperPlacementType.Center;
    printManager.PrintSetup.CurrentPrintSetting.PrintParameters.ZoomType = ZoomType.FitToPage;
    printManager.PrintSetup.CurrentPrintSetting.PrintParameters.PageOrientation = PageOrientationType.Landscape;
    printManager.PrintSetup.CurrentPrintSetting.PrintParameters.HiddenLineViews = HiddenLineViewsType.VectorProcessing;
    printManager.PrintSetup.CurrentPrintSetting.PrintParameters.RasterQuality = RasterQualityType.High;
    printManager.PrintSetup.CurrentPrintSetting.PrintParameters.ColorDepth = ColorDepthType.GrayScale;
    printManager.PrintSetup.CurrentPrintSetting.PrintParameters.HideCropBoundaries = false;
    printManager.PrintSetup.CurrentPrintSetting.PrintParameters.HideReforWorkPlanes = false;
    printManager.PrintSetup.CurrentPrintSetting.PrintParameters.HideUnreferencedViewTags = false;

    printManager.PrintToFileName = viewPdfFilePath;
    printManager.PrintToFile = true;

    printManager.Apply();
    printManager.PrintSetup.SaveAs("Xyicon_PinterSettings");
    tr.Commit();
}

using (var tr = new Transaction(document, "Print selected view"))
{
    tr.Start();

    var printManager = document.PrintManager;
    if (elementIdListToHide.Count != 0)
        view.HideElementsTemporary(elementIdListToHide);

    document.Regenerate();
    printManager.SubmitPrint();

    while (!IsPDFHeaderExists(viewPdfFilePath))
        Thread.Sleep(1000);

    tr.Commit();
}

近期将插件迁移至APS(Autodesk Platform Services)并与Xyicon集成时,遇到关键视图打印问题:APS无法支持Revit 2021及更早版本(用户仍在使用2020、2019等版本)的平面图打印。新版Revit提供的PDFExport功能可生成PDF,但无法兼容旧版本。

我考虑过几种实现方式:

  • 在APS工作项处理期间将旧版本升级至新版本(升级耗时久,尤其关联文件较多时)
  • 在APS服务器上安装虚拟打印机(不确定是否可行)
  • 先导出DWG,再用AutoCAD的“DWG to PDF.pc3”打印机生成PDF(耗时久且需跨存储桶转移文件)
  • 使用ForgeViewer(仅支持3D,无法处理2D平面图)

可行解决方案

1. 自定义APS工作容器部署虚拟打印机

APS支持创建自定义工作项镜像,你可以在镜像中预装轻量级无界面虚拟打印机(如PDFCreator、CutePDF Writer),并提前配置好打印参数(纸张尺寸、灰度、适配方式等)。这样处理旧版Revit文件时,可直接复用原有的PrintManager+SubmitPrint逻辑生成PDF,和本地插件行为一致。需注意:

  • 选择支持无桌面环境运行的虚拟打印机,避免弹窗或交互依赖
  • 在镜像中预配置打印机默认设置,减少代码中的参数调整
  • 测试容器内打印机的输出稳定性,确保PDF生成完整

2. 先导出DWF再转PDF

旧版Revit(2019/2020)支持通过API导出2D视图为DWF格式,在APS工作项中可借助开源转换工具(如libdwf)将DWF转为PDF:

  • 调用Document.Export方法将目标视图导出为DWF
  • 在工作项中执行DWF转PDF的转换命令
  • 转换完成后直接交付PDF给Xyicon应用

3. 按Revit版本分支处理

针对不同版本的Revit文件,在APS工作项中匹配对应版本的引擎:

  • 对于Revit 2021+文件,直接使用PDFExportAPI高效生成PDF
  • 对于2021以下版本,使用预装虚拟打印机的容器执行原打印逻辑
    这种方式兼顾兼容性和效率,避免不必要的文件升级或转换步骤

内容的提问来源于stack exchange,提问作者SergeySSH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 19:47:25