allergique Posté(e) le 24 août 2009 Posté(e) le 24 août 2009 Bonjour, J'imprime en automatique un fichier dwg en pdf avec l'imprimante PDFCreator et "printtofile", le fichier est bien créé sur le disque dur mais lorsque j'essaye de l'ouvrir j'ai un message d'erreur me disant que le fichier est endommagé. Lle pdf fait 560Ko donc n'est pas vide. Si j'imprime avec la commande "plottodevice", j'ai la boîte de dialogue d'enregistrement, le fichier est créé et bien lisible. Le problème est que je ne veux pas afficher de boîte de dialogue. Savez-vous pourquoi avec "printtofile" le fichier est illisible?Le même code utilisé avec "office document image writer" fonctionne parfaitement. Voici le code que j'utilise: 'Impression en premier plan fichdwg.SetVariable "BACKGROUNDPLOT", 0 'Imprime dans un fichier fichdwg.Plot.PlotToFile (lienexport) J'ai vu un topic posté ce jour qui parle de fichier pdf, mais c'est fait avec un code que je ne comprends pas fait à partir d'autolisp...Qu'est-ce que c'est autolisp, et comment convertir le code en vba? Merci pour votre aideBonne soirée
x_all Posté(e) le 25 août 2009 Posté(e) le 25 août 2009 essaye d'utiliser l'imprimante DwgToPDF intégrée à autocad a partir de 2007... elle marche peut etre mieux avec cette option... quelques trucs sur autocad
allergique Posté(e) le 26 août 2009 Auteur Posté(e) le 26 août 2009 Bonjour, dwg to pdf fonctionne mais la qualité est moindre avec cette imprimante et chaque fichier fait 1Mo. Je souhaite donc configurer Pdfcreator. J'ai remarqué que quand je fais l'enregistrement avec "printtofile", dans les propriétés du pdf tout est vide, alors que le pdf enregistré avec "Plottodevice" a un numéro de version pdf, la date de création, l'outil de conversion et une application définie Comment paramétrer les propriétés des fichiers pdf avec l'imprimante pdfcreator?
x_all Posté(e) le 27 août 2009 Posté(e) le 27 août 2009 créé toi un fichier .pc3 spécifique avec dwgtopdf car il n'y a pas de raison pour que la qualité soit mauvaise... et chez moi, il sont sensiblement plus léger que les pdfcreator à qualité équivalante... regarde dans les propriété personnalisé ce qui cloche? et sauve le pc3 pour pouvoir rappeler ce réglage dans ton script quelques trucs sur autocad
allergique Posté(e) le 27 août 2009 Auteur Posté(e) le 27 août 2009 Les pc sur lesquels le programme pourra être utilisé n'auront pas forcément le fichier de configs de l'imprimante.Comment peut-on configurer la résolution cette imprimante en VB?
rom1_am Posté(e) le 28 août 2009 Posté(e) le 28 août 2009 Bonjour, J'avais également essayé d'utiliser PDF Creator et PlotToFile ne marchait pas non plus avec ce logiciel. La méthode PlotToDevice marche bien. Si tu ne veux pas qu'il y ait de boite de dialogue qui apparaisse, il est possible de programmer PDF Creator. Il faut ajouter dans les références de ton projet dvb une référence à pdfcreator.exe.Il y a des exemples de code dans le répertoire d'installation "C:\Program Files\PDFCreator\COM". J'avais commencé à faire une fonction en vba pour imprimer plusieurs onglets de présentation dans un pdf mais j'avais abandonné parce que ça plantait assez souvent. Voici le code si ça peut t'aider (désolé, le code n'est pas très propre et je ne suis pas sûr qu'il marche car j'avais fait pas mal d'essais et de modifs. Si tu arrive à en faire quelque chose, ça m'intéresse... Merci) Function Example_SetLayoutsToPlot2() As Integer ' This example plots the layouts of a drawing. Dim oPlot As AcadPlot Dim AddedLayouts() As String Dim LayoutList As Variant Dim oLayout As AcadLayout Dim ArraySize As Integer, BatchCount As Integer Dim plotFileName As String plotFileName = "MyPlot" For Each oLayout In ThisDrawing.Layouts If Left(oLayout.Name, 4) = "Plan" Then ArraySize = ArraySize + 1 ReDim Preserve AddedLayouts(1 To ArraySize) AddedLayouts(ArraySize) = oLayout.Name End If Next LayoutList = AddedLayouts Set oPlot = ThisDrawing.Plot oPlot.SetLayoutsToPlot LayoutList oPlot.PlotToDevice "PDFCreator" ' oPlot.PlotToFile plotFileName, "DWG To PDF.pc3" Example_SetLayoutsToPlot2 = CInt(ArraySize) End Function Sub scriptpdf() Const maxTime = 30 ' in seconds Const sleepTime = 250 ' in milliseconds Dim PDFCreator, DefaultPrinter, ReadyState, fso, c, opath, AppTitle, ScriptBasename, WshShell ScriptBasename = ThisDrawing.FullName 'fso.GetBaseName(Wscript.ScriptFullname) AppTitle = "PDFCreator - " & ScriptBasename opath = ThisDrawing.Path ' CompletePath(fso.GetParentFolderName(Wscript.ScriptFullname)) Set PDFCreator = CreateObject("PDFCreator.clsPDFCreator") PDFCreator.cStart "/NoProcessingAtStartup" PDFCreator.cVisible = True PDFCreator.cWindowState = 1 With PDFCreator .cPrinterStop = True 'APPEL DE LA PROCEDURE D'IMPRESSION DES ONGLETS c = Example_SetLayoutsToPlot2 Do While (.cCountOfPrintjobs < c) c = c + 1 DoEvents Loop 'FUSION DES DOCUMENTS .cCombineAll c = 0 Do While (.cCountOfPrintjobs <> 1) And (c < (maxTime * 1000 / sleepTime)) c = c + 1 DoEvents Loop 'IMPRESSION: .cOption("UseAutosave") = 1 .cOption("UseAutosaveDirectory") = 1 .cOption("AutosaveFormat") = 0 .cDefaultprinter = "PDFCreator" .cOption("AutosaveDirectory") = opath .cOption("AutosaveFilename") = opath .cPrinterStop = False .cPrintfile (.cPrintjobInfo(CStr(.cPrintjobFilename(1)), "SPOOLFILENAME")) c = 0 ReadyState = 0 ' Do While (.cCountOfPrintjobs <> 0) 'andc < (maxTime * 1000 / sleepTime)) ' c = c + 1 ' DoEvents ' 'Wscript.Sleep sleepTime ' Loop ' .cClose End With End Sub _______________________________R.A.Développeur AutoCAD C#.netwww.danialu.fr
allergique Posté(e) le 28 août 2009 Auteur Posté(e) le 28 août 2009 Bonjour, Merci pour le début de code, je vais essayer de voir si j'arrive à le faire fonctionner a+
rom1_am Posté(e) le 31 août 2009 Posté(e) le 31 août 2009 Bonjour, J'ai essayé et le code ci-dessus fonctionne bien. Le problème est que le but était d'imprimer plusieurs onglets de plan et ensuite de les fusionner en un seul fichier pdf. C'est ce que fait le code ci-dessus, par contre, pour que la fonction soit fiable, il faut être sûr que PdfCreator n'ait pas d'autres impressions en file d'attente. Il me semble qu'il est possible de vérifier cela par programmation mais ça devenait un peu compliqué à programmer par rapport au besoin que l'on avait. a+ _______________________________R.A.Développeur AutoCAD C#.netwww.danialu.fr
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant