[ Home | Discussioni Attive | Discussioni Recenti | Segnalibro | Msg privati | Sondaggi Attivi | Utenti | Download | Cerca | FAQ ]
Nome Utente:
Password:
Salva Password
Password Dimenticata?

 Tutti i Forum
 Autocad
 VBA - Visual Basic per Autocad
 Stampa in PDF

Nota: Devi essere registrato per poter inserire un messaggio.

Larghezza finestra:
Nome Utente:
Password:
Icona Messaggio:              
             
Messaggio:

  * Il codice HTML è ON
* Il Codice Forum è OFF


   Allega file
  Clicca qui per sottoscrivere questa Discussione.
 
    

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.

© Torna all'inizio della Pagina
Tradotto Da: Vincenzo Daniele & Luciano Boccellino- www.targatona.it | Distribuito Da: Massimo Farieri - www.superdeejay.net | Powered By: - Snitz Forums 2000 Version 3.4.03

Antidoto.org | Brutto.it | Estela.org | Equiweb.it