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.
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?
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.
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.
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
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się