Aller au contenu

Fichier illisible pdf


Messages recommandés

Posté(e)

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 aide

Bonne soirée

 

Posté(e)

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?

Posté(e)

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

Posté(e)

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?

Posté(e)

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#.net

www.danialu.fr

Posté(e)

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#.net

www.danialu.fr

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité