web-dev-qa-db-fra.com

iTextSharp - Convertissez Word doc/docx en pdf

Je comprends que iTextSharp peut être utilisé pour convertir un document en PDF.

Mais nous devons d’abord créer un document à partir de rien en utilisant iTextSharp.text.Document, puis ajouter des éléments à ce document.

Et si j’ai un fichier doc existant, est-il possible de convertir ce document en pdf en utilisant iTextSharp.

De plus, je souhaite utiliser iTextSharp ou tout autre outil similaire capable d'effectuer les opérations suivantes sur un fichier doc:

  1. manipulation des fichiers doc/docx/text (comme le remplacement de certains espaces réservés par des valeurs de base de données) ainsi que
  2. les convertit en .pdf

Toute personne ayant une idée à ce sujet, s'il vous plaît partager.

Je vous remercie!

15
iniki

Le composant Aspose.Words peut le faire de manière fiable (je ne suis pas affilié ou quoi que ce soit).

iTextSharp ne dispose pas de la fonctionnalité requise pour charger et traiter les formats de fichier MS Word.

14
Lucero

Vous pouvez utiliser la méthode existante de Microsoft.Office

 private Microsoft.Office.Interop.Word.ApplicationClass MSdoc;

    //Use for the parameter whose type are not known or say Missing
    object Unknown = Type.Missing;

  private void Word2PDF(object Source, object Target)
    {   //Creating the instance of Word Application
      if (MSdoc == null)MSdoc = new Microsoft.Office.Interop.Word.ApplicationClass();

        try
        {
            MSdoc.Visible = false;
            MSdoc.Documents.Open(ref Source, ref Unknown,
                 ref Unknown, ref Unknown, ref Unknown,
                 ref Unknown, ref Unknown, ref Unknown,
                 ref Unknown, ref Unknown, ref Unknown,
                 ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown);
             MSdoc.Application.Visible = false;
              MSdoc.WindowState =   Microsoft.Office.Interop.Word.WdWindowState.wdWindowStateMinimize;

            object format = Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatPDF;

            MSdoc.ActiveDocument.SaveAs(ref Target, ref format,
                    ref Unknown, ref Unknown, ref Unknown,
                    ref Unknown, ref Unknown, ref Unknown,
                    ref Unknown, ref Unknown, ref Unknown,
                    ref Unknown, ref Unknown, ref Unknown,
                   ref Unknown, ref Unknown);
          }
           catch (Exception e)
          {
            MessageBox.Show(e.Message);
           }
         finally
          {
            if (MSdoc != null)
            {
                MSdoc.Documents.Close(ref Unknown, ref Unknown, ref Unknown);
                //WordDoc.Application.Quit(ref Unknown, ref Unknown, ref Unknown);
            }
            // for closing the application
            WordDoc.Quit(ref Unknown, ref Unknown, ref Unknown);
        }
    } 
3

Aspose.Words est certes une bonne solution, mais elle n’offre pas une fidélité parfaite. Au moment de la rédaction de ce document, il rencontre des problèmes avec les langues non romaines, une mise en forme complexe telle que des éléments flottants et un certain nombre d'autres problèmes.

Vous souhaiterez peut-être consulter ce service Web de conversion PDF qui peut être utilisé à partir de tout environnement prenant en charge les services Web, y compris Java et .NET.

Notez que j'ai travaillé sur ce projet et que les clauses de non-responsabilité habituelles s'appliquent.

3
Jeroen Ritmeijer

J'ai le même problème.
Après plusieurs jours de recherche d'une solution, il semble que Docx4J , un outil basé sur Java ou des imprimantes PDF comme PDFCreator , pourraient figurer parmi les solutions gratuites.
Bien sûr, seul un outil commercial peut efficacement accomplir la tâche demandée.
Du côté de Microsoft, vous pouvez utiliser la fonctionnalité { Sharepoint Word Automation Services } activée du côté serveur (à vérifier le 7 juin 2016) ou l’interopérabilité sur votre ordinateur local.
La conversion suggérée partie (DOC ou DOC en une langue intermédiaire puis en PDF) semble correspondre à ce que les utilisateurs ont dit sur stackoverflow ou sur d'autres forums, impossible, car le résultat n’est pas celui attendu.

1
JosefMadrid

Si vous ne vous souciez pas de savoir si le formatage sera fidèle à ce que Word afficherait, il existe un impressionnant docx2tex qui convertit les fichiers docx de Word 2007 en documents Latex. Une fois dans Latex, vous avez beaucoup de pouvoir pour reformater par programmation le document et en générer PDF.

J'en dis plus sur l'utilitaire dans une réponse à tex.stackexchange .

1
Charles Stewart

Pour la manipulation de docx, vous devez utiliser la méthode native Open XML. Téléchargez Open XML SDK 2 à partir de Microsoft.

Et vous pourrez ensuite convertir des fichiers docx en pdf avec cette bibliothèque payante: http://www.subsystems.com/dpw.htm . C'est vraiment super. 

0
mucit