ODA Drawings.NETClassic导出PDF时的注意事项

文章讲述了在导出PDF文件时,如何在Service类的using块内正确设置参数和逻辑,包括mPDFExportParams的使用、多线程对dwg文件嵌入OLE图片的影响以及解决方法。还提及了PDF文件的版本和颜色策略。
摘要由CSDN通过智能技术生成

1、导出PDF文件时,代码逻辑需要包含在 services svc=new services() using体内部,只有using结束之后,本地的pdf文件才会生成完毕,在using内部,pdf文件的大小为0K。所以,如果在pdf生成之后需要进一步操作的,则需要把 后续操作写在 using外部。

2、生成PDF时,需要把 参数设置部分,设置在两层 using内部,如下所示:

        using(Services svc=new Services()){
            using (mPDFExportParams param = new mPDFExportParams())
            {
                using (FileStreamBuf fileStrem = new FileStreamBuf(tempPdfFilePath, false, FileShareMode.DenyNo, FileCreationDisposition.CreateAlways))
                {
                    param.OutputStream = fileStrem;

                    PageParamsCollection pParCol = new PageParamsCollection();
                    PageParams pp = new PageParams();
                    pp.setParams(pageWidth, pageHeight, margen左, margen右, margen上, margen下);
                    //以黑白样式输出
                    pParCol.Add(pp);
                    StringCollection strColl = new StringCollection();
                    strColl.Add(spaceName);

                    //mPDFExportParams param = new mPDFExportParams();
                    param.Database = currDb;
                    FileStreamBuf fbuf = new FileStreamBuf(tempPdfFilePath, false, FileShareMode.DenyNo, FileCreationDisposition.CreateAlways);
                    param.OutputStream = fbuf;
                    param.Title = "";
                    param.Author = "";
                    param.Subject = "";
                    param.Keywords = "";
                    param.Creator = "";
                    param.Producer = "";
                    param.UseHLR = true;
                    param.FlateCompression = true;
                    param.ASCIIHEXEncodeStream = true;
                    param.hatchDPI = uint.Parse(dpi);
                    param.Versions = PDFExportVersions.PDFv1_6;
                    if (黑白输出)
                    {
                        param.Color_Policy = ColorPolicy.Mono;
                    }
                    else
                    {
                        param.Color_Policy = ColorPolicy.NoPolicy;
                    }


                    param.Layouts = strColl;

                    param.PageParams = pParCol;
                    Export_Import.ExportPDF(param);
                }

            }
        }
//Do Other Things,比如从pdf中提取图片,或者在窗体中显示pdf等等

3、如果dwg文件中包含了 类型为 "已嵌入"的OLE图片对象,如果此dwg生成pdf时采用了task等多线程操作方式,则生成的pdf中此图片会丢失。解决办法如下:

1)改用单线程模式

2)dwg中的OLE图片,通过CONVERTOLE方法转换为静态picture对象。转换之后,仍旧可以在oda中采用多线程生成pdf

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

追风小子09

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值