Question

Dans mon projet web, j'utilise le type de fichier DocX pour contenir modèle de rapport. Je dois convertir le type de fichier DOCX en PDF. Avez-vous une .Net code managé pour le faire?

Je connais plusieurs façons de résoudre cette question. Mais il n'est pas le code managé et libre comme les éléments suivants.

  • Mot 12.0 Object Library Pour enregistrer un programme de mots 2007 document soit un document PDF ou un document XPS. Mais il faut installer Office 2007 sur le serveur.

  • Imprimer en utilisant une imprimante PDF gratuit comme PDFCreator . Mais je besoin d'un programme pour DocX ouvert sur le serveur comme Office 2007. Il est très mauvaise idée.

  • Convertir par le programme libre de convertisseur. Mais le résultat est pas parfait.

  • Cadre d'utilisation comme XF Rendering Server . Il est très bonne idée, mais il est libre.

  • Créer tout le contenu du document en PDF comme iTextSharp . Mais je dois essayer dur pour créer beau document.

  • Ou créer un document de modèle avec un autre format de fichier qui peut l'exporter vers DocX et le format de fichier PDF. En outre, les utilisateurs finaux devraient facilement modifier ce fichier. Si vous le savez, s'il vous plaît me dire.

Merci,

Était-ce utile?

La solution

Je n'ai pas de code pour convertir docx en PDF, mais il semble que votre exigence de DocX n'est pas ferme. Votre balle dit:

  

Ou créer un document de modèle avec d'autres   format de fichier qui peut l'exporter vers DocX   et le format de fichier PDF. De plus,   les utilisateurs finaux devraient facilement modifier ce   fichier. Si vous le savez, s'il vous plaît me dire.

Je lis cela signifie que vous voulez être en mesure de créer un modèle de document, le remplir avec des données et secrètes au format PDF, tout en permettant le modèle à maintenir, non?

Solution: XSL-FO

XSL-FO est une norme W3C comme HTML et peut être transformé par un certain nombre de produits open source et commerciaux en PDF, WordML, XPS, PS, PCL, SVG, TIFF, etc. Je l'ai utilisé cela pour livrer des centaines de des milliers de documents par mois, à la fois en ligne et hors ligne que des documents PDF (des choses comme l'impression des chèques en vrac).

Pour vous aider à démarrer, voici la la page W3C XML-FO. Il y a beaucoup de bonnes informations là-bas, y compris une liste des logiciels (à la fois source et commecial ouvert) sur le côté gauche. J'ai personnellement utilisé deux produits commerciaux appelés IBEX PDF Creator et XEP par RenderX . Les deux sont d'excellents produits, et il y a une mise en œuvre géré C # 100% pour obtenir au format PDF appelé rel="noreferrer"> FO.NET up sur CodePlex. Je ne l'ai pas essayé, mais il devrait satisfaire votre critère « libre ».

Il y a un certain nombre de façons dont vous pouvez modifier le modèle pour les documents à créer dans XSL-FO. Généralement, ce modèle est XSLT que vous appliquez à vos données XML, mais ce n'est pas une exigence. J'ai construit ce à la main, mais il est un peu d'une courbe d'apprentissage. Vous pouvez commencer par un document XSL-FO et remplir les sections de celui-ci avec le code, tout comme vous pouvez HTML. Les bonnes nouvelles sont que il href="http://www.oxygenxml.com/fo_editor.html" rel="noreferrer"> un certain nombre de < a href = "http://www.renderx.com/tools/datastyler.html" rel = "noreferrer"> éditeurs XSL-FO là-bas. Les mauvaises nouvelles sont que je ne connais sont libres, mais plusieurs d'entre eux ne coûtent pas cher et vous pouvez trouver quelque chose qui répond au critère libre avec un peu de recherche sur Google. Cependant, une option est que vous pouvez convertir Word en utilisant une feuille de style ( commercial et libre ).

Autres conseils

Installation Office 2007 et utiliser le mot 12 Object Library est certainement l'option que j'irais pour (et l'ont fait certains de mes propres projets).

Si vous ne souhaitez pas installer Word sur un serveur Web de production, pourquoi ne pas l'avoir sur un serveur secondaire. Vous pouvez obtenir ce second serveur pour communiquer avec le premier (en utilisant un service Web ou quelque chose comme ça). - il pourrait demander au prochain document Word qui doit exporter, faire la conversion, puis renvoyer les données PDF

Faites-moi savoir si vous voulez un exemple C # de l'automatisation de Word qui fait cette conversion (il est très trivial).

Adrian


Voici mon code, publié pour Jason. Cela fonctionne avec Word 2007. Vous devez télécharger et installer l'exportateur PDF à partir du site Web de l'Office:

using Microsoft.Office.Interop.Word;

...

object _read_only = false;
object _visible = true;
object _false = false;
object _true = true;
object _dynamic = 2;
object  _missing = System.Reflection.Missing.Value;

object _htmlFormat = 8;        
object _pdfFormat = 17;
object _xpsFormat = 18;

object fileName = "C:\\Test.docx";

ApplicationClass ac = new ApplicationClass();
//ac.Visible = true; // Uncomment to see Word as it opens and converts the document
//ac.Activate();

Document d = ac.Documents.Open(ref fileName, ref _missing, ref _true, ref _read_only, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, ref _visible, ref _missing, ref _missing, ref _missing, ref _missing);

object newFileName = ((string)fileName).Substring(0, ((string)fileName).LastIndexOf(".")) + ".pdf";

d.SaveAs(ref newFileName, ref _pdfFormat, 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);

d.Close(ref _false, ref _missing, ref _missing);
ac.Quit(ref _false, ref _missing, ref _missing);

ac = null;

Alors, Soul_Master, ce que vous dites que vous ne voulez pas utiliser Interop (bien que vous ne dites pas pourquoi, que je serais intéressé de savoir), vous ne voulez pas payer pour une publicité exportateur, et vous voulez des résultats parfaits?

Je ne peux pas vous aider, j'ai peur. Interop vous donnera des résultats parfaits, à chaque fois, et vous avez déjà le logiciel. Si vous ne l'utiliserez, vous allez devoir faire un sacrifice -. Coût ou qualité

Est-ce que Open Office ont une API? ce serait au moins une option gratuite?

Créer le fichier PDF à l'aide d'un outil de reporting comme ActiveReports / Crystal Reports (beaucoup plus facile que d'utiliser iTextSharp)

Je l'ai résolu mes problèmes avec docx à la conversion PDF avec un composant gratuit appelé Spire.Doc gratuit . Vous pouvez en savoir plus sur sur ce site . Il est assez facile de votre utilisation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top