2012-11-20 6 views
1

Je voudrais implémenter une fonctionnalité de fusion de documents Microsoft Word dans le navigateur qui convertira le document fusionné en PDF et l'offrira à l'utilisateur pour le téléchargement. Je voudrais que ce processus soit pris en charge dans Google Chrome et Firefox. Voici comment je voudrais que cela fonctionne:Conversion de document MS Word dans le navigateur en PDF

  1. JavaScript côté client obtient le document de modèle Word au format docx, que ce soit à partir d'un serveur, ou en demandant à l'utilisateur un téléchargement de fichier (ce qui peut alors lire à l'aide l'API FileReader)
  2. Le JavaScript utilise ses structures de données locales (par exemple, les listes de données qu'il a obtenues via Ajax) pour développer le modèle dans un document. Il peut le faire soit directement, en décompressant le fichier docx et en traitant son contenu, soit en utilisant DOCx.js. L'extension de modèle consiste simplement à substituer des variables de modèle par des valeurs obtenues à partir des structures de données locales.
  3. Le JavaScript convertit ensuite le modèle développé en PDF.
  4. Le JavaScript propose le fichier PDF à l'utilisateur pour le téléchargement, par exemple en utilisant Downloadify.

La difficulté que j'ai est à l'étape 3. Si je comprends bien (basé sur toutes les recherches sur Google, je l'ai fait jusqu'à présent) est que j'ai les options suivantes:

  1. exigent que la machine locale est une machine Windows, et invoque Word, pour convertir en PDF. Cela peut être fait en utilisant un peu de script en utilisant WScript.shell, et il semble faisable avec Internet Explorer. Mais d'après ce que j'ai lu, il ne semble pas que je puisse appeler WScript.shell depuis Chrome ou Firefox, à cause de leurs contraintes de sécurité.
  2. Je suis ouvert à essayer Silverlight pour faire la conversion, mais je n'ai pas trouvé assez de documentation sur la façon de procéder. Idéalement, si j'utilise Silverlight, je voudrais écrire le code Silverlight en JavaScript, car (a) je ne connais pas beaucoup CSharp, et (b) je pense que ce serait beaucoup plus facile en JavaScript.
  3. Créez un service Web qui convertira un fichier docx donné en fichier pdf et appelez ce service via Ajax. Je préférerais ne pas le faire, si possible, pour quelques raisons: (a) J'ai essayé d'utiliser docx4java (je suis un programmeur Java raisonnablement qualifié) mais le processus de conversion est beaucoup trop lent, et il ne conserve pas très bien le contenu du document; et (b) je voudrais éviter un appel sur le réseau, pour éviter les problèmes de sécurité. Il semble possible d'écrire un petit service sur un serveur Windows pour faire la conversion, et s'il n'y a pas d'autre bonne option, je pourrais aller dans cette direction.

Si je n'ai pas été clair sur quoi que ce soit, s'il vous plaît faites le moi savoir. J'apprécierais vos idées et vos commentaires.

+4

Pourquoi doit-il être côté client?Cela serait probablement beaucoup plus facile en utilisant un service côté serveur (comme une instance OpenOffice sans tête qui fait la conversion) –

+2

Du côté client, vous devez construire un plugin pour chaque navigateur (et pour chaque plate-forme éventuellement), il vous faudra beaucoup de temps. –

+0

Hé mec, ce n'est pas une bonne idée. Si vous avez besoin de le faire, il suffit d'écrire un ActiveX qui fonctionne simplement sur IE, et vous avez besoin d'expérience C++ sur Windows MFC classes.so douloureux. – pylover

Répondre

1

J'adore les outils de ligne de commande.

Chargez le doc sur votre serveur et utiliser LibreOffice pour le convertir au format PDF via la ligne de commande

soffice.exe --headless --convert-to pdf --outdir E:\Docs\Out E:\Docs\In\a.doc 

Vous pouvez afficher une barre de progression à l'utilisateur et lorsque vous avez terminé leur donner la possibilité de télécharger la doc.

Plus d'informations sur les paramètres de ligne de commande de LibreOffice aller here

Terminé.

+0

Pekka, Bruno - merci pour les commentaires. Donc, le consensus semble être d'utiliser LibreOffice? Des commentaires sur la proximité du PDF converti avec le document original? Je vais regarder dans un peu plus. Cela semble être une bonne option, car je pourrais même être capable de l'exécuter sur un hôte Linux. Merci encore! –

+0

@un upvote serait bien :) – Bruno

+0

Bruno - J'adorerais. Mais on dirait que je n'ai pas assez de réputation pour faire un vote! –

Questions connexes