V I S U A L I Z Z A D I S C U S S I O N E |
Lucakit |
Inserito il - 14/10/2010 : 17:10:31 Ciao! Rieccomi...nuova questione (l'altra è sempre in sospeso...), stesso programma dei giorni scorsi.
Devo stampare un disegno in PDF. Ho scaricato la tua routine e l'ho fatta girare, ma ho un problema quasi all'inizio: salta alla gestione degli errori quando deve compilare la riga "Layouts("Model").CanonicalMediaName = "A4"" e,non trovando l'errore tra i due elencati, esce immediatamente. Qualche prova per conto mio l'avevo già fatta ed ero sulla tua strada, ma sulla mia riga corrispondente (Layout.CanonicalMediaName = "A4"), giustamente, non si ferma. Non son quindi riuscito a vedere fino in fondo il tuo codice e non ho capito perchè...
Detto ciò, credo di essermi imbattuto nello stesso tuo problema finale: io uso la stampante di acrobat 8, Adobe PDF, ma non ho trovato il modo di evitare l'apertura della finestra per l'assegnazione del nome al file...vorrei, tanto per cambiare, che il nome venisse assegnato automaticamente e non preoccuparmi di dover digitare il nome. Credo di aver capito che era il tuo stesso problema...hai per caso trovato il modo di superarlo, dopo aver pubblicato la macro?
Grazie! Luca |
6 U L T I M E R I S P O S T E (in alto le più recenti) |
Lucakit |
Inserito il - 18/10/2010 : 23:39:19 Ciao, sì, un file per volta. Finora la prassi mi ha richiesto questo e credo lo farà ancora per un bel pò. Io mi trovo bene con acrobat pro (versione 8)...diciamo che non volevo uscire dal seminato e mi ero intestardito su questa strada, forse sbagliando... L'importante è comunque che ora giri! Se avrò tempo, in futuro, cercherò nuove evoluzioni. |
admin |
Inserito il - 17/10/2010 : 11:24:08 Ciao, con Acrobat distiller?? Ah si?? Ma stampi un file alla volta comunque, giusto? Poi se devi unirli devi usare qualcos'altro immagino.
Comunque io col PDFCreator non avevo sti problemi di file errato e se non ricordo male neanche con Acrobat, mah... forse dipende dalla versione di Acrobat, infatti io ho potuto provarla solo con versione 4.0. Poi per unirla avevamo bisogno di Acrobat Professional. Successivamente abbiamo trovato questo PDFCreator e abbiamo, anzi ho abbondonato Acrobat. |
Lucakit |
Inserito il - 17/10/2010 : 10:09:50 Yessssssssssssssssssssssssssssssss! Obiettivo finalmente centrato!!!
Visto il tempo che ti ho rubato, mi sembra il minimo condividere la soluzione adottata. Non mi sono più appoggiato alla stampante "Adobe PDF", bensì al distiller direttamente.
Ecco il codice:
Dim PSFileName As String Dim PDFFileName As String Dim PtConfigs As AcadPlotConfigurations Dim PlotConfig As AcadPlotConfiguration Dim BackPlot As Variant Dim PtObj As AcadPlot Dim myPDF As PdfDistiller PSFileName = path & ".ps" PDFFileName = path & ".pdf" Set PtObj = ThisDrawing.Plot Set PtConfigs = ThisDrawing.PlotConfigurations PtConfigs.Add "PDF", False Set PlotConfig = PtConfigs.Item("PDF") PlotConfig.StandardScale = ac1_1 PlotConfig.RefreshPlotDeviceInfo PlotConfig.ConfigName = "Adobe PDF" BackPlot = ThisDrawing.GetVariable("BACKGROUNDPLOT") ThisDrawing.SetVariable "BACKGROUNDPLOT", 0 PlotConfig.RefreshPlotDeviceInfo If PtObj.PlotToFile(PSFileName, PlotConfig.ConfigName) Then End If Set myPDF = New PdfDistiller myPDF.FileToPDF PSFileName, PDFFileName, "" Kill (PSFileName) Kill (Replace(PSFileName, "ps", "log"))
In realtà, il corpo centrale non è ancora ben settato (intendo il PlotConfig), ma uso sempre lo stesso file di autocad per lavorare e quindi faccio i settaggi su quello e mi restano già di default. Per il resto, caricando la Reference "Acrobat Distiller" diventa un gioco da ragazzi! Oltre al "myPDF" voluto, restano due file di servizio che elimino con le ultime due righe. ...e il gioco è fatto!
Non mi resta che trovare la soluzione per mettere in pausa autocad e poi....sbronza!
Grazie ancora della disponibilità! Luca |
Lucakit |
Inserito il - 16/10/2010 : 13:55:58 Riciao!
Son cocciuto, lo so! Ultimo tentativo; al fondo del codice di seguito i due comandi funzionano in questo modo...
Dim strfile As String strfile = "C:\" & "prova" & ".pdf" Set Layout = ThisDrawing.ActiveLayout Layout.RefreshPlotDeviceInfo Layout.ConfigName = "Adobe PDF" ' create a port for Adobe Layout.PlotType = acDisplay Layout.CanonicalMediaName = "A4" Layout.PaperUnits = acMillimeters Layout.StandardScale = ac1_1 Layout.CenterPlot = True ThisDrawing.Regen acAllViewports Layout.RefreshPlotDeviceInfo
ThisDrawing.Plot.PlotToDevice ThisDrawing.Plot.PlotToFile (strfile)
1 - con plottodevice, ottengo un pdf perfetto, con l'apertura del form di Adobe in cui suggerisce il nome uguale al file dwg in uso e la cartella di destinazione uguale a quella di origine del file dwg. 2 - con plottofile, ottengo un pdf dove voglio io e con il nome che voglio io...insomma, FUNZIONA!!!!!!!!!!!!!!! Peccato che però il pdf è illeggibile e il reader mi dà l'errore seguente:"Adobe Reader non è in grado di aprire 'prova.pdf' perchè è un tipo di file non supportato oppure perchè il file è stato danneggiato".
Deduco che il file sia un qualcosa di insensato a cui io ho semplicemente appiccicato il nome pdf...ma, mi domando, una diavolo di via di mezzo tra queste due soluzioni esiste????????????????
Ti viene in mente qualcosa?
Sempre grazie! Luca |
Lucakit |
Inserito il - 14/10/2010 : 21:58:46 Mah...in realtà ho ancora un pò di nebbia su ciò che serve bene a questa routine. Non c'è molto materiale sull'argomento, è spesso si ripete. La stampa su carta mi viene bene, poi devo fare un doppione in pdf. Qui il primo dubbio: PLOTTOFILE o PLOTTODEVICE? Perchè per la carta uso il secondo e per il pdf, in teoria, dovrei usare il primo. In realtà, per il primo non so bene come strutturare la routine, mentre il secondo sembra essere quello perfetto...come se Adobe richiedesse una stampa su carta che poi pensa lui a convertire in file. Non l'avrei detto, comunque mi sta benissimo lo stesso! Il problema è che non so a quale variabile/proprietà assegnare il nome, in modo da evitare che mi compaia il form di Adobe. Che debba agire sul registro? Inserire una Reference?... Buh! Cmq, ho risposto per completare la mia questione. Se hai spunti, son ovviamente ben accetti e spero un giorno di poter ricambiare in qualche modo , altrimenti mi rassegnerò alla cara vecchia manualità...
Luca |
admin |
Inserito il - 14/10/2010 : 21:14:56 Ciao, allora... forse dovrei toglierlo...da tempo sto usando PDFCreator (software free). Non so se ti ricordi che io l'ho fatto per stampare schemi elettrici e quindi ho tanti fogli che poi devo, normalmente, unirli. Ma questa cosa di unire era valida anche con Adobe. Cmq di quel problema non ricorco assolutamente, dovrei scaricarlo, eseguirlo e vedere il problema. Ora forse x te il problema è che non so quando riesco a pubblicare l'applicazione legata a PDFCreator. |
|
|