我正在Revit 2017创建一个加载项。插件将图纸导出为PDF文件。因此,每当我尝试导出工作表时,都会出现一个对话框,选择要保存的位置。我试图通过向Windows注册表添加密钥以编程方式关闭提示(如Adobe documentation page 15-16中所述)。
现在,提示已关闭,现在我正面临一个问题。 问题是Adobe Printer在创建pdf文件时卡住了。请参见下图: PDF创建进度条似乎已冻结,我等待的时间超过10分钟且未创建pdf文件。
任何人都可以提供任何修复吗? 感谢任何建议。
修改 这是我为此目的编写的代码。我希望这有助于找出问题。
public static bool ExportSheetToPDF(Document doc, string path)
{
using (Transaction tx = new Transaction(doc)
{
tx.Start("Exportint to PDF");
PrintManager pm = doc.PrintManager;
pm.SelectNewPrintDriver("Adobe PDF");
pm.Apply();
pm.PrintRange = PrintRange.Current;
pm.Apply();
pm.CombinedFile = true;
pm.Apply();
pm.PrintToFile = true;
pm.Apply();
pm.PrintToFileName = path + @"\PDF\" + "abc.pdf";
pm.Apply();
SuppressAdobeDialogAndSaveFilePath(path + @"\PDF\" + "abc.pdf");
pm.SubmitPrint();
pm.Apply();
tx.Commit();
}
return true;
}
// Add Registry Key to suppress the dialog box
public static void SuppressAdobeDialogAndSaveFilePath(string value)
{
var valueName = @"C:\Program Files\Autodesk\Revit 2017\Revit.exe";
var reg = currentUser.OpenSubKey(key, true);
var tempReg = reg.OpenSubKey(valueName);
if (tempReg == null)
{
reg = reg.CreateSubKey(valueName);
}
reg.SetValue(valueName, value);
reg.Close();
}
答案 0 :(得分:1)
我已经解释了如何通过覆盖Adobe用于生成下一个打印的Revit.exe进程的注册表项来实现此目的。
http://archi-lab.net/printing-pdfs-from-revit-why-is-it-so-hard/
请记住,您仍然需要通过Revit PrintManager进行打印,但是您可以在每次打印之前设置注册表项以控制文件的保存位置。