明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: jun353835273

批量插入PDF文件到cad

  [复制链接]
发表于 2024-10-5 11:00:39 | 显示全部楼层
这个导入进去是线段  还是图片呢
发表于 2024-10-10 13:10:47 | 显示全部楼层
感觉大佬分享
发表于 2024-11-20 08:59:47 | 显示全部楼层
可以作为块插入吗
回复 支持 反对

使用道具 举报

发表于 2024-11-25 11:04:30 | 显示全部楼层
本帖最后由 moshouhot 于 2024-11-25 15:06 编辑

[quote]moshouhot 发表于 2024-6-5 13:21
请问在不实际插入PDF的情况下,能否提前获取到PDF的第一页的尺寸。



  1. using iText.Kernel.Pdf;

  2. namespace aaAcad;

  3. public class Mylisphelper {

  4.     /// <summary>
  5.     /// 获取指定PDF文件的总页数
  6.     /// </summary>
  7.     /// <param name="rb">LISP参数缓冲区,需要包含一个TypeCode为5005的字符串类型参数,表示PDF文件路径</param>
  8.     /// <returns>
  9.     /// 返回值说明:
  10.     /// - 如果成功读取PDF,返回PDF的总页数
  11.     /// - 如果发生以下情况则返回0:
  12.     ///   1. 输入参数为null
  13.     ///   2. 参数格式不正确
  14.     ///   3. 指定的文件不存在
  15.     /// </returns>
  16.     /// <remarks>
  17.     /// 此方法通过AutoCAD LISP接口调用,用于获取PDF文件的页数。
  18.     /// 当文件不存在时会显示提示消息框。
  19.     /// </remarks>
  20.     /// <example>
  21.     /// LISP调用示例:
  22.     /// (Countpdfpages "C:\\example.pdf")
  23.     /// </example>
  24.     [LispFunction("Countpdfpages")]
  25.     public int Countpdfpages(ResultBuffer rb) {
  26.         int result = 0;
  27.         if (rb == null) {
  28.             return 0;
  29.         }

  30.         TypedValue[] array = rb.AsArray();
  31.         if (array.Length == 1 && array[0].TypeCode == 5005) {
  32.             string filePath = array[0].Value as string;
  33.             if (File.Exists(filePath)) {
  34.                 using (var pdfReader = new PdfReader(filePath))
  35.                 using (var pdfDoc = new PdfDocument(pdfReader)) {
  36.                     result = pdfDoc.GetNumberOfPages();
  37.                 }
  38.             } else {
  39.                 result = 0;
  40.                 MessageBox.Show("么有文件");
  41.             }
  42.         }
  43.         return result;
  44.     }

  45.     /// <summary>
  46.     /// 获取PDF文件首页的尺寸(宽度和高度,单位:毫米)
  47.     /// </summary>
  48.     /// <param name="rb">LISP参数缓冲区,需要包含一个TypeCode为5005的字符串类型参数,表示PDF文件路径</param>
  49.     /// <returns>
  50.     /// 返回值说明:
  51.     /// - 如果成功读取PDF,返回包含两个浮点数的ResultBuffer,分别表示宽度和高度(毫米)
  52.     /// - 如果发生以下情况则返回null:
  53.     ///   1. 输入参数为null
  54.     ///   2. 参数格式不正确
  55.     ///   3. 指定的文件不存在
  56.     ///   4. PDF文件读取失败
  57.     /// </returns>
  58.     /// <remarks>
  59.     /// 此方法通过AutoCAD LISP接口调用,用于获取PDF文件首页的尺寸。
  60.     /// 当文件不存在时会显示提示消息框。
  61.     /// 返回的尺寸基于PDF的MediaBox,单位转换为毫米。
  62.     /// </remarks>
  63.     /// <example>
  64.     /// LISP调用示例:
  65.     /// (getpdfsize "C:\\example.pdf")
  66.     /// 返回格式: (宽度 高度) ;单位:毫米
  67.     /// </example>
  68.     [LispFunction("getpdfsize")]
  69.     public ResultBuffer GetPdfSize(ResultBuffer rb) {        

  70.         if (rb == null) {
  71.             Env.Print("\n输入参数为null");
  72.             return null;
  73.         }

  74.         TypedValue[] array = rb.AsArray();
  75.         if (array.Length != 1 || array[0].TypeCode != 5005) {
  76.             Env.Print("\n参数格式不正确");
  77.             return null;
  78.         }

  79.         string filePath = array[0].Value as string;
  80.         // Env.Print($"\n文件路径: {filePath}");

  81.         if (!File.Exists(filePath)) {
  82.             Env.Print("\n文件不存在");
  83.             // MessageBox.Show("么有文件");
  84.             return null;
  85.         }

  86.         try {
  87.             using (var pdfReader = new PdfReader(filePath))
  88.             using (var pdfDoc = new PdfDocument(pdfReader)) {
  89.                 var page = pdfDoc.GetPage(1);
  90.                 // Env.Print("\n成功读取PDF第一页");

  91.                 // 优先使用CropBox,如果不存在则使用MediaBox
  92.                 var pageSize = page.GetCropBox() ?? page.GetMediaBox();

  93.                 const double POINTS_TO_MM = 0.352778;
  94.                 double width = pageSize.GetWidth() * POINTS_TO_MM;
  95.                 double height = pageSize.GetHeight() * POINTS_TO_MM;

  96.                 // Env.Print($"\n尺寸: {width}mm x {height}mm");

  97.                                 return new ResultBuffer(
  98.                                         new TypedValue(5001, width),    // 包装在TypedValue中
  99.                                         new TypedValue(5001, height)
  100.                                 );
  101.             }
  102.         } catch (Exception ex) {
  103.             Env.Print($"\n读取PDF文件失败: {ex.Message}");
  104.             // MessageBox.Show($"读取PDF文件失败: {ex.Message}");
  105.             return null;
  106.         }
  107.     }
  108. }


时隔半年,穿越过来回答我自己的问题。
回复 支持 反对

使用道具 举报

发表于 2024-11-26 23:53:59 | 显示全部楼层
pdf插入后 绘图会卡卡的有办法解决码?
回复 支持 反对

使用道具 举报

发表于 2024-11-29 19:53:52 | 显示全部楼层
2025浩辰CAD不能用呢
回复 支持 反对

使用道具 举报

发表于 2024-11-29 19:59:43 | 显示全部楼层
命令: T23 ; 错误: no function definition: COUNTPDFPAGES
回复 支持 反对

使用道具 举报

发表于 2024-12-27 17:45:39 | 显示全部楼层
2014加载图纸只显示外框,2025正常
回复 支持 反对

使用道具 举报

发表于 2025-1-5 09:19:44 | 显示全部楼层
利害,我到处找终于找到了,谢谢
回复 支持 反对

使用道具 举报

发表于 2025-1-5 12:25:39 | 显示全部楼层

感谢作者的无私分享....
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-2-23 06:23 , Processed in 0.180361 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表