Conversion .doc -> .pdf

Signaler
Messages postés
28
Date d'inscription
vendredi 17 mars 2006
Statut
Membre
Dernière intervention
14 août 2008
-
Messages postés
32
Date d'inscription
mardi 20 juin 2006
Statut
Membre
Dernière intervention
11 février 2009
-
Bonjour à tous,


J'essaye de convertir un .doc vers un .pdf dans mon application, seulement je n'y arrive pas. Ma solution consistait a changer l'imprimante par défaut de word et de mettre l'imprimante "virtuelle" de cute pdf à la place et d'invoquer ensuite l'impression du document. Cela me génere bien un .pdf à l'endroit voulu, mais celui ci est illisible !


public void ImprimerFichierWord(object fileName, Boolean visible, int NbCopies)
    {
        try
        {
            Microsoft.Office.Interop.Word._Application aWord;
            Microsoft.Office.Interop.Word._Document aDoc;
            aWord = new Microsoft.Office.Interop.Word.Application();
            aWord.Visible = visible;
            object Missing = System.Reflection.Missing.Value;
            aDoc = aWord.Documents.Open(ref fileName, ref Missing, ref Missing, ref Missing, ref  Missing, ref Missing, ref Missing, ref Missing, ref Missing, ref Missing, ref Missing, ref Missing, ref Missing, ref Missing, ref Missing, ref Missing);//, ref Missing);
            object myTrue = true;
            object myFalse = false;
            
            object missingValue = Type.Missing;
            object range = Microsoft.Office.Interop.Word.WdPrintOutRange.wdPrintAllDocument;
            object items = Microsoft.Office.Interop.Word.WdPrintOutItem.wdPrintDocumentContent;
            object copies = NbCopies;
            object pages = "1";


            string imprimante = aWord.ActivePrinter;
            aWord.ActivePrinter = "CutePDF Writer";
            //aWord.ActivePrinter = "PDFCreator";


            object filePath = fileName.ToString() + ".pdf";
            object pageType = Microsoft.Office.Interop.Word.WdPrintOutPages.wdPrintAllPages;


            


        


 




        aDoc.PrintOut(ref missingValue,ref missingValue,ref missingValue,ref filePath,ref missingValue,ref missingValue,ref missingValue,
            ref missingValue,ref missingValue,ref missingValue,ref missingValue,ref missingValue,
            ref missingValue,ref missingValue,ref missingValue,ref missingValue,ref missingValue, ref missingValue);


            /*aDoc.PrintOut(ref myFalse, ref myFalse, ref range,
                ref filePath, ref missingValue, ref missingValue,
                ref items, ref copies, ref pages, ref pageType, ref myFalse,
                ref myTrue, ref missingValue, ref myFalse, ref missingValue,
                ref missingValue, ref missingValue, ref missingValue);*/
            aDoc.Close(ref missingValue, ref missingValue, ref missingValue);
            aWord.Quit(ref myFalse, ref missingValue, ref missingValue);
            
            aWord = null;
            aDoc = null;


        }
        catch { ...}
    }   



Si qqun connait une solution (gratuite si possible) me permettant de faire cette conversion, qu'il me fasse signe :)


Merci a tous

3 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
attention... entre le moment où tu lances l'impression et le moment ou tu fermes word... il faut attendre un peu que Word ait fini d'envoyer les informations à l'imprimante... attend au moins 5 secondes...

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Messages postés
28
Date d'inscription
vendredi 17 mars 2006
Statut
Membre
Dernière intervention
14 août 2008

J'ai rajouter l'attente de 5 secondes, mais cela ne fonctionne pas quand même
Messages postés
32
Date d'inscription
mardi 20 juin 2006
Statut
Membre
Dernière intervention
11 février 2009

Bonjour moi je cherche a convertire un fichier excel en pdf soi directement avec la librerie de acrobat (payant)(je suis obliger d'utiliser acrobat) soi en imprimant sur une imprimante virtuelle qui sapelle dans mon cas "Adobe PDF".

j'ai ces 2 bou de code:

try
            {
                string FORM_NAME = @"C:\Inetpub\wwwroot\convertion_pdf_dll_acrobat\bin"+TextBox6.Text+".pdf";
                Acrobat.AcroAppClass appPDF = new AcroAppClass();
                appPDF.Show();

                Acrobat.AcroPDDoc pdDOC = new AcroPDDocClass();
                
                pdDOC.Create();
                pdDOC.Save(1,FORM_NAME);
                
                TextBox6.Text="fichier créé";
                pdDOC.Close();
                appPDF.Exit();
            }
            catch  (Exception ex)


ce qui me créé un pdf vide et impossible de rajouter une page et encore moin di inclure un worde ou un excel.
et celui la :

try
            {
                //créer un objet excel.
                oXL = new Microsoft.Office.Interop.Excel.Application();
                oXL.Visible = true;

                //créer un objet classeur.
                oWB = (Microsoft.Office.Interop.Excel._Workbook)(oXL.Workbooks.Add(System.Reflection.Missing.Value));
                oSheet = (Microsoft.Office.Interop.Excel._Worksheet)oWB.ActiveSheet;

                //ajouter des valeur au cellule
                oSheet.Cells[1, 1] = "si ce document sinprime par erreur sur une imprimante veuillez s'il vous plait contacter Galosau mathieu";
                oSheet.Cells[1, 2] = "isis";
                oSheet.Cells[1, 3] = "osiris";
                oSheet.Cells[1, 4] = "1";
                oSheet.Cells[2, 1] = "2";
                oSheet.Cells[2, 2] = "3";
                oSheet.Cells[2, 3] = "4";
                oSheet.Cells[2, 4] = "5";
                
                oXL.ExecuteExcel4Macro("\n Application.ActivePrinter = "Adobe PDF sur Ne02:" \n");    
                oSheet._PrintOut(1,1,1,0,"Adobe PDF sur Ne02:",1,0);
                oXL.ExecuteExcel4Macro("\n Application.Sheets.PrintOut Copies:=1, ActivePrinter:="Adobe PDF sur Ne02: PrToFileName:=TRUE", Collate:=True \n");
            }
            catch (Exception ex)


ici mon idéé serai au lieu d'utiliser acrobat pour convertire excel j'utilise excel pour imprimer sur une imprimente PDF.
seulmen voila:
oXL.ExecuteExcel4Macro("\n Application.ActivePrinter = "Adobe PDF sur Ne02:" \n");   
sa marche mais sa:
oXL.ExecuteExcel4Macro("\n Application.Sheets.PrintOut Copies:=1,
ActivePrinter:="Adobe PDF sur Ne02: PrToFileName:=TRUE",
Collate:=True \n");
sa marche pas.je peu choisire une imprimente mais pas imprimer dessu
quelqu'un peut me dirre pourqoi??

j'ai essaier de fair comme toi mais je ne trouve pas l'équivalant de

object range = Microsoft.Office.Interop.Word.WdPrintOutRange.wdPrintAllDocument;
object items = Microsoft.Office.Interop.Word.WdPrintOutItem.wdPrintDocumentContent;

pour excel
      

ou si vous aver d'autre ider,un algo,une solution pouquoi pas( je raive un peu la).
merci d'avence.