K.R Opublikowano 10 Października 2019 Zgłoś Opublikowano 10 Października 2019 vernum = "2019.01.28(41803)_x64" Witam, czy ktoś korzystał z klasy publisher do wydruku do PDF? nie mogę w żaden sposób zmusić Zwcada do wydruku do PDF. Cytuj
kruszynski Opublikowano 10 Października 2019 Zgłoś Opublikowano 10 Października 2019 Proszę napisać coś więcej. Co się dzieje ? A co dziać się powinno, ale się nie dzieje? Cytuj
K.R Opublikowano 10 Października 2019 Autor Zgłoś Opublikowano 10 Października 2019 Poniższy kod (działający w ACAD) powinien jako wyjście dać wielostronicowy plik PDF umieszczony w katalogu rysunku: using (Transaction tr = db.TransactionManager.StartTransaction()) { DsdEntryCollection collection = new DsdEntryCollection(); foreach (ObjectId layoutId in layoutList) { Layout layout = tr.GetObject(layoutId, OpenMode.ForRead) as Layout; if (!layout.LayoutName.Contains("Model") && layout.LayoutName.Contains(layoutName)) { DsdEntry entry = new DsdEntry { DwgName = doc.Name, Layout = layout.LayoutName, Title = layout.LayoutName, Nps = layout.PlotSettingsName, NpsSourceDwg = doc.Name }; collection.Add(entry); } } string pdfFile = (path == "" ? dwgPath : path) + name + ".pdf"; DsdData dsdData = new DsdData { SheetType = SheetType.MultiPdf, ProjectPath = path == "" ? dwgPath : path, DestinationName = (path == "" ? dwgPath : path) + name + ".DWG", IncludeLayerInfo = true, PromptForDwfName = false }; string dsdFile = dwgPath + name + ".dsd"; if (System.IO.File.Exists(dsdFile)) System.IO.File.Delete(dsdFile); dsdData.SetDsdEntryCollection(collection); string str, newStr; string tmpFile = Path.Combine(dwgPath, "temp.dsd"); dsdData.WriteDsd(tmpFile); using (StreamReader reader = new StreamReader(tmpFile)) using (StreamWriter writer = new StreamWriter(dsdFile)) { while (!reader.EndOfStream) { str = reader.ReadLine(); if (str.Contains("Has3DDWF")) { newStr = "Has3DDWF=0"; } else if (str.Contains("OriginalSheetPath")) { newStr = "OriginalSheetPath=" + dsdData.DestinationName; } else if (str.Contains("OUT")) { newStr = "OUT=" + dwgPath; } else if (str.Contains("IncludeLayer")) { newStr = "IncludeLayer=TRUE"; } else if (str.Contains("PromptForDwfName")) { newStr = "PromptForDwfName=FALSE"; } else if (str.Contains("LogFilePath")) { newStr = "LogFilePath=" + Path.Combine(dwgPath, "print.log"); } else { newStr = str; } writer.WriteLine(newStr); } } File.Delete(tmpFile); dsdData.ReadDsd(dsdFile); if (System.IO.File.Exists(pdfFile)) System.IO.File.Delete(pdfFile); using (PlotConfig pc = PlotConfigManager.SetCurrentConfig("DWG to PDF.pc5")) { publisher.PublishExecute(dsdData, pc); } tr.Commit(); } Przygotowany plik .dsd jest poprawny. Wykonanie metody publisher.PublishExecute(dsdData, pc); nie powoduje nic, ani błędu, ani poprawnego działania, czyli wyświetlenia okna z postępem drukowania. Cytuj
kruszynski Opublikowano 14 Października 2019 Zgłoś Opublikowano 14 Października 2019 Nie pracowałem wcześniej z DSD, więc nie umiem powiedzieć nic pewnego, ale chciałem dopytać w ZWSOFT o szczegóły. Przesłany kod, to tylko fragment większej całości. Zakładam, że mógłbym obudować ten fragment całością, którą dałoby się skompilować, i przetestować, ale mogłoby się okazać, że coś zrobiliśmy inaczej, co da różne wyniki. W związku z tym proszę o przesłanie szerszego fragmentu, pozwoli na wierne odtworzenie sytuacji. Cytuj
kruszynski Opublikowano 14 Października 2019 Zgłoś Opublikowano 14 Października 2019 Mam przykład, który tworzy PDFa z aktualnego rysunku. Może się przydać. Nie wykorzystuje Dsd, ale tworzy PDFa. TestPlot.rar Cytuj
Rekomendowane odpowiedzi
Dołącz do dyskusji
Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.