Comment puis-je convertir un fichier RTF en fichier pdf?
Comment puis-je convertir un fichier RTF en PDF? J'ai de l'imprimante adobe PDF, dois-je l'utiliser? Si oui, comment puis-je accéder par programmation?
J'ai mis à jour ma réponse ci-dessous comme suggéré par Henk de fournir une meilleure réponse.
Vous pouvez utiliser une imprimante PDF, mais alors vous avez encore quelques problèmes à résoudre.
Afin de manipuler du texte qui s'étend sur plusieurs pages, vous devez cet article pour créer un descendant de RichTextbox qui gère le Message EM_FORMATRANGE.
Il y a beaucoup de PDF (libre) de l'imprimante, mais j'ai trouvé que seulement BioPdf vous permettra de contrôler le nom du fichier de sortie. Ils ont aussi des tarifs raisonnables pour les versions sous licence.
J'ai utilisé pour créer des rapports complexes (combinaisons de plusieurs RTF segments et des graphiques personnalisés) en tant que pièces jointes d'e-mails.
Vous pouvez utiliser le Pilote d'impression virtuelle doPdf http://www.dopdf.com/ si cela est autorisé sur la machine de production. Cela vous permettra de transformer plus ou moins tout type de fichier au format pdf non seulement rtf. Il apparaît comme une autre imprimante dans le Gestionnaire d'Impression, une fois installé.
La seule partie du code que j'ai besoin d'ajouter de a été qui a marqué ci-dessus par exemple, pd.PrinterSettings.PrinterName = "doPDF v6";
Il peut y avoir une imprimante méthode d'énumération qui serait plus élégant et robuste et contre cela on a pu tester pour voir si le pilote d'impression existait peut-être à l'encontre d'un fichier de configuration paramètre.
Mise à jour:
La manipulation de plusieurs pages est pris en charge dans cette méthode : cette.pd_PrintPage que par la msdn de l'échantillon.
PrintDocument prend en charge à partir et à l'impression de la page.
DoPdf s'ouvre un fileSaveAsDialog boîte automatiquement afin que les fichiers peuvent être enregistrés dans un document pdf.
Qu'en rtf si?
Un Microsoft le format n'est pas pris en charge très bien, donc il n'y paraît. Cet article http://msdn.microsoft.com/en-us/library/ms996492.aspx avec le code de démonstration utilise le RichTextBox comme un point de départ et à l'aide de P/Invoke tire parti de la puissance de Win32 imprimer RTF WYSIWG. Le contrôle définit sa propre page de la longueur de la méthode de remplacement de celui utilisé ci-dessus dans l'extrait de code et utilise encore PrintDocument il devrait donc être facile à utiliser. Vous pouvez assigner n'importe quel format rtf à l'aide de la Rtb.rtf méthode.
À proximité, mais une réponse complète comprennent la façon d'imprimer RTF (avec Pagination, etc). Aussi, vous voudrez probablement une imprimante PDF qui vous permet de définir le nom de fichier de sortie. J'ai editted l'article (ajout d'une pièce à la fin) qui s'adresse à tous les points que vous soulevez. Ne fonctionne pas parce qu'il imprime le texte du fichier RTF, I. E. pas lisible par l'homme de la partie. Il imprime ce serait d'imprimer si j'ai ouvert le fichier RTF dans le bloc-notes. a vous d'adapter le code ci-dessus à l'aide de l'article que j'ai référencé dans la section mise à jour de ma réponse. J'ai été voir le lisible par l'homme de sortie est affichée par le Système et non pas le comportement que vous décrivez qui va à l'encontre de l'ensemble de l'objet de l'exercice.
Soin d'expliquer un peu plus? soi-disant, il ne peut pas être fait: stackoverflow.com/questions/1095846/... Avertissement - Comme j'ai fait des recherches un peu plus, il semble que la fonctionnalité n'est PAS encore complet. Au moins, c'est ce que j'ai trouvé une réponse sur une question de Janv. 2009.
Un document RTF doit être lue et interprétée par certains application qui permet de comprendre que le format. Vous auriez besoin de programmation pour lancer l'application, chargez votre fichier RTF, et de l'envoyer à l'imprimante PDF. Mot serait bon que, depuis qu'il a une belle .Interface NET. Un aperçu des étapes seraient:
ApplicationClass word =newApplicationClass();Document doc = word.Documents.Open(ref filename,...);
doc.PrintOut(...);
Vous aurez besoin d'utiliser la Microsoft.Office.Interop.Word espace de noms et d'ajouter une référence à la Microsoft.Office.Interop.Word.dll assemblée.
Oui je peux, mais comment pourrais-je le faire? L'édition de répondre à ajouter de l'information. Cela fonctionne bien, mais pas dans un environnement de serveur. Microsoft recommande de ne pas ou de soutien à l'aide de l'API Office dans un environnement de serveur. Voir, par exemple, la question 159744. Juste assez, mais rien dans la question des points à un environnement de serveur. 🙂
En fait, aucune de ces sont terriblement fiable ou faire ce que je veux. La solution est simple, l'installation d'Adobe Acrobat et avoir juste ouvrir le fichier RTF à l'aide de la classe de Processus.
J'ai aussi trouvé une approche plus raisonnable. J'ai enregistrer le fichier comme un fichier au format RTF, les ouvrir dans word et l'enregistrer en tant que PDF (Word, Imprimer en PDF plugin doit être installé)
Vous pouvez utiliser une imprimante PDF, mais alors vous avez encore quelques problèmes à résoudre.
Afin de manipuler du texte qui s'étend sur plusieurs pages, vous devez cet article pour créer un descendant de RichTextbox qui gère le Message EM_FORMATRANGE.
Il y a beaucoup de PDF (libre) de l'imprimante, mais j'ai trouvé que seulement BioPdf vous permettra de contrôler le nom du fichier de sortie. Ils ont aussi des tarifs raisonnables pour les versions sous licence.
J'ai utilisé pour créer des rapports complexes (combinaisons de plusieurs RTF segments et des graphiques personnalisés) en tant que pièces jointes d'e-mails.
OriginalL'auteur Henk Holterman
Vous pouvez utiliser le Pilote d'impression virtuelle doPdf http://www.dopdf.com/ si cela est autorisé sur la machine de production. Cela vous permettra de transformer plus ou moins tout type de fichier au format pdf non seulement rtf. Il apparaît comme une autre imprimante dans le Gestionnaire d'Impression, une fois installé.
De l'utiliser en dire winforms code que j'ai adapté le code trouvé sur le msdn exemple d'impression http://msdn.microsoft.com/en-us/library/system.drawing.printing.printdocument.aspx
La seule partie du code que j'ai besoin d'ajouter de a été qui a marqué ci-dessus par exemple, pd.PrinterSettings.PrinterName = "doPDF v6";
Il peut y avoir une imprimante méthode d'énumération qui serait plus élégant et robuste et contre cela on a pu tester pour voir si le pilote d'impression existait peut-être à l'encontre d'un fichier de configuration paramètre.
Mise à jour:
La manipulation de plusieurs pages est pris en charge dans cette méthode : cette.pd_PrintPage que par la msdn de l'échantillon.
PrintDocument prend en charge à partir et à l'impression de la page.
DoPdf s'ouvre un fileSaveAsDialog boîte automatiquement afin que les fichiers peuvent être enregistrés dans un document pdf.
Qu'en rtf si?
Un Microsoft le format n'est pas pris en charge très bien, donc il n'y paraît. Cet article http://msdn.microsoft.com/en-us/library/ms996492.aspx avec le code de démonstration utilise le RichTextBox comme un point de départ et à l'aide de P/Invoke tire parti de la puissance de Win32 imprimer RTF WYSIWG. Le contrôle définit sa propre page de la longueur de la méthode de remplacement de celui utilisé ci-dessus dans l'extrait de code et utilise encore PrintDocument il devrait donc être facile à utiliser. Vous pouvez assigner n'importe quel format rtf à l'aide de la Rtb.rtf méthode.
J'ai editted l'article (ajout d'une pièce à la fin) qui s'adresse à tous les points que vous soulevez.
Ne fonctionne pas parce qu'il imprime le texte du fichier RTF, I. E. pas lisible par l'homme de la partie. Il imprime ce serait d'imprimer si j'ai ouvert le fichier RTF dans le bloc-notes.
a vous d'adapter le code ci-dessus à l'aide de l'article que j'ai référencé dans la section mise à jour de ma réponse. J'ai été voir le lisible par l'homme de sortie est affichée par le Système et non pas le comportement que vous décrivez qui va à l'encontre de l'ensemble de l'objet de l'exercice.
OriginalL'auteur Andrew
Voir cet article. Il semble que vous pouvez l'utiliser sans beaucoup de modifications. Il utilise Open Office.
OriginalL'auteur Roman Boiko
ITextSharp devrait faire l'affaire pour vous.
soi-disant, il ne peut pas être fait: stackoverflow.com/questions/1095846/...
Avertissement - Comme j'ai fait des recherches un peu plus, il semble que la fonctionnalité n'est PAS encore complet. Au moins, c'est ce que j'ai trouvé une réponse sur une question de Janv. 2009.
OriginalL'auteur klabranche
Un document RTF doit être lue et interprétée par certains application qui permet de comprendre que le format. Vous auriez besoin de programmation pour lancer l'application, chargez votre fichier RTF, et de l'envoyer à l'imprimante PDF. Mot serait bon que, depuis qu'il a une belle .Interface NET. Un aperçu des étapes seraient:
Vous aurez besoin d'utiliser la
Microsoft.Office.Interop.Word
espace de noms et d'ajouter une référence à laMicrosoft.Office.Interop.Word.dll
assemblée.L'édition de répondre à ajouter de l'information.
Cela fonctionne bien, mais pas dans un environnement de serveur. Microsoft recommande de ne pas ou de soutien à l'aide de l'API Office dans un environnement de serveur. Voir, par exemple, la question 159744.
Juste assez, mais rien dans la question des points à un environnement de serveur. 🙂
OriginalL'auteur CesarGon
En fait, aucune de ces sont terriblement fiable ou faire ce que je veux. La solution est simple, l'installation d'Adobe Acrobat et avoir juste ouvrir le fichier RTF à l'aide de la classe de Processus.
J'ai aussi trouvé une approche plus raisonnable. J'ai enregistrer le fichier comme un fichier au format RTF, les ouvrir dans word et l'enregistrer en tant que PDF (Word, Imprimer en PDF plugin doit être installé)
OriginalL'auteur Malfist