RevitAPI: Document.ExportImage导出文件格式并不都是.png,即便设置了HLRandWFViewsFileType为ImageFileType.PNG

RevitAPI有导出图片的功能,那就是使用Document.ExportImage方法,一个实际的例子如下

FilteredElementCollector FEC_Views = new FilteredElementCollector(OpenDoc).OfClass(typeof(View));
FEC_Views.OfCategory(BuiltInCategory.OST_Views);
StringBuilder sb = new StringBuilder();
foreach (View View in FEC_Views)
{
    if (View.IsTemplate) continue;
    IList<ElementId> ImageExportList = new List<ElementId>();
    ImageExportList.Clear();
    ImageExportList.Add(View.Id);
    var NewViewName = View.Name.ToString().Replace(".", "-");
    var BilledeExportOptions_3D_PNG = new ImageExportOptions
    {
        ZoomType = ZoomFitType.FitToPage,
        PixelSize = 2024,
        FilePath = ParentFolder + @"\" + NewViewName,
        FitDirection = FitDirectionType.Horizontal,
        HLRandWFViewsFileType = ImageFileType.PNG,
        ImageResolution = ImageResolution.DPI_600,
        ExportRange = ExportRange.SetOfViews,
    };

    BilledeExportOptions_3D_PNG.SetViewsAndSheets(ImageExportList);
    try
    {
        OpenDoc.ExportImage(BilledeExportOptions_3D_PNG);
    }
    catch (Exception ex)
    {
        sb.AppendLine(View.Id.ToString());
        sb.AppendLine(ex.ToString());
    }
}
运行该程序会把所有支持导出的视图都导出为.PNG文件。

一般情况下,都能正确按照期望导出。但是,有些文件却导出了一些.JPG文件,不是已经通过HLRandWFViewsFileType = ImageFileType.PNG设置好了导出格式是PNG吗?



原来格式设置包含两方面:1.隐藏线和线框设置,通过HLRandWFViewsFileType 2.阴影设置,通过ShadowViewsFileType。
那么改进的方法就是把ShadowViewsFileType也设置成.PNG:

    var BilledeExportOptions_3D_PNG = new ImageExportOptions
    {
        ZoomType = ZoomFitType.FitToPage,
        PixelSize = 2024,
        FilePath = ParentFolder + @"\" + NewViewName,
        FitDirection = FitDirectionType.Horizontal,
        HLRandWFViewsFileType = ImageFileType.PNG,
        ShadowViewsFileType = ImageFileType.PNG,
        ImageResolution = ImageResolution.DPI_600,
        ExportRange = ExportRange.SetOfViews,
    };



pdf.js是一个用于在网页上显示和操作PDF文件的JavaScript库。它提供了一种在网页上渲染和呈现PDF文档的方式,并且可以进行一些基本的操作,如搜索、缩放、打印等。然而,pdf.js本身并不支持直接导出PDF文件。 如果你想要在网页上将内容导出为PDF文件,可以使用其他库或工具来实现。根据你提供的引用内容,你可以尝试使用jspdf.js和html2canvas.js来实现这个功能。 首先,你需要安装html2canvas和jspdf这两个库。你可以使用npm来安装它们,命令如下: ```shell npm install html2canvas --save npm install jspdf --save ``` 安装完成后,你需要在项目中引入这两个库。在你的html文件中,你可以添加以下代码: ```html <script src="path/to/html2canvas.js"></script> <script src="path/to/jspdf.js"></script> ``` 接下来,你可以创建一个名为htmlToPdf.js的文件,并在其中编写代码来实现导出PDF的功能。你可以参考以下示例代码: ```javascript // 导出PDF function exportToPdf() { // 获取要导出的HTML元素 var element = document.getElementById('your-element-id'); // 使用html2canvas将HTML元素转换为Canvas html2canvas(element).then(function(canvas) { // 创建一个新的jsPDF实例 var pdf = new jsPDF(); // 将Canvas添加到PDF中 pdf.addImage(canvas, 'PNG', 0, 0, canvas.width, canvas.height); // 保存PDF文件 pdf.save('exported.pdf'); }); } ``` 在上面的代码中,你需要将'your-element-id'替换为你要导出的HTML元素的ID。然后,当你调用exportToPdf函数时,它将使用html2canvas将HTML元素转换为Canvas,并使用jsPDF将Canvas添加到PDF中,最后保存为名为'exported.pdf'的文件。 请注意,为了使上述代码正常工作,你需要确保在导出PDF之前,HTML元素已经完全加载和渲染。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值