K.R Opublikowano 10 Października 2019 Zgłoś Udostępnij 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 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kruszynski Opublikowano 10 Października 2019 Zgłoś Udostępnij Opublikowano 10 Października 2019 Proszę napisać coś więcej. Co się dzieje ? A co dziać się powinno, ale się nie dzieje? Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
K.R Opublikowano 10 Października 2019 Autor Zgłoś Udostępnij 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 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kruszynski Opublikowano 14 Października 2019 Zgłoś Udostępnij 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 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kruszynski Opublikowano 14 Października 2019 Zgłoś Udostępnij 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 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
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ą.