tamaño small protegido online limite hacer gratis español documento descargar convertir convertidor como c# vb.net pdf ms-word

c# - small - ¿Cómo convierto archivos de Word a PDF programáticamente?



convertir word a pdf protegido online (15)

He encontrado varios programas de código abierto / freeware que te permiten convertir archivos .doc a archivos .pdf, pero todos son de la variedad de aplicaciones / controladores de impresora, sin SDK adjunto.

He encontrado varios programas que tienen un SDK que te permite convertir archivos .doc a archivos .pdf, pero todos son del tipo propietario, $ 2,000 por licencia o aproximadamente.

¿Alguien sabe de alguna solución programática limpia y económica (preferiblemente gratuita) para mi problema, utilizando C # o VB.NET?

¡Gracias!


Cuando me topé con algunos problemas con la automatización de la oficina del servidor, examinamos la técnica descrita aquí en el proyecto de código . Utiliza la versión portátil (que se puede implementar a través de xcopy) de OpenOffice en combinación con una macro. Aunque aún no hemos hecho el cambio nosotros mismos, parece muy prometedor.


El complemento de Microsoft PDF para Word parece ser la mejor solución por ahora, pero debe tener en cuenta que no convierte todos los documentos de Word correctamente a pdf y, en algunos casos, verá una gran diferencia entre la palabra y el PDF de salida. Desafortunadamente, no pude encontrar ninguna API que convirtiera todos los documentos de Word correctamente. La única solución que encontré para garantizar que la conversión fuera correcta al 100% era convertir los documentos a través de un controlador de impresora. La desventaja es que los documentos se ponen en cola y se convierten uno a uno, pero puede estar seguro de que el pdf resultante es exactamente igual al diseño de documento de Word. Personalmente preferí usar UDC (Universal document converter) e instalé Foxit Reader (versión gratuita) también en el servidor, luego imprimí los documentos iniciando un "Proceso" y configurando su propiedad Verb para "imprimir". También puede usar FileSystemWatcher para establecer una señal cuando se haya completado la conversión.




He usado iTextSharp para generar archivos PDF antes. Es un puerto de código abierto de iText del mundo Java y es bastante poderoso.

No he hecho explícitamente una conversión de Word a PDF, pero he creado y manipulado mediante programación los PDF.

Aquí hay otro link al proyecto.


Me ha impresionado Gembox ( http://www.gemboxsoftware.com/ ) que proporciona una edición gratuita limitada de la gestión de documentos (incluye conversión a pdf). También hacen bibliotecas para hojas de cálculo. La licencia de desarrollador 1 si excede sus límites (lo cual me imagino que lo hará) es de alrededor de $ 580 ( http://www.gemboxsoftware.com/document/pricelist ). Está bien, no es gratis (o en mi opinión es relativamente barato) pero es mucho más barato que $ 2000. Como lo entiendo por su lista de precios, tampoco hay regalías para las implementaciones de servidores. Podría valer la pena acercarse a ellos y ver si van a hacer un trato si no quieres hacerlos tuyos.


Para los programadores que se encuentran en una situación en la que no pueden instalar Office en su servidor u operar en algún entorno de nube, una alternativa económica a las otras respuestas es Api2Pdf, que admite la conversión de archivos de Word a PDF, así como cualquier otro archivo de MS Office. Es una API web y utiliza LibreOffice bajo el capó.


Para resumirlo para los usuarios de vb.net, la opción gratuita (debe tener la oficina instalada):

Descarga de ensamblajes de oficina de Microsoft:

Ejemplo de VB.NET:

Dim word As Application = New Application() Dim doc As Document = word.Documents.Open("c:/document.docx") doc.Activate() doc.SaveAs2("c:/document.pdf", WdSaveFormat.wdFormatPDF) doc.Close()


Parece ser alguna información relevante aquí:

Convertir documentos de MS Word a PDF en ASP.NET

Además, como Office 2007 tiene funcionalidad de publicación en PDF, supongo que podría usar la automatización de la oficina para abrir el archivo * .DOC en Word 2007 y Guardar como PDF. No estoy demasiado interesado en la automatización de la oficina, ya que es lento y propenso a colgarse, pero simplemente lo arrojo por ahí ...


Pasé por el dolor de Word to PDF cuando alguien me envió archivos de 10000 palabras para convertirlos a PDF. Ahora lo hice en C # y utilicé la interoperabilidad de Word, pero fue lento y se bloqueó si intentaba usar una PC ... muy frustrante.

Esto me llevó a descubrir que podía descargar los interops y su lentitud ... para Excel que uso (EPPLUS) y luego descubrí que puede obtener una herramienta gratuita llamada Spire que permite convertir a PDF ... ¡con limitaciones!

http://www.e-iceblue.com/Introduce/free-doc-component.html#.VtAg4PmLRhE


Siempre que tenga instalado Word 2010 o una DocTo posterior, puede usar DocTo que proporciona una aplicación de línea de comandos para hacer esto.


Solo quería agregar que utilicé bibliotecas de Microsoft.Interop, específicamente la función ExportAsFixedFormat que no vi usar en este hilo.

using Microsoft.Office.Interop.Word; using System.Runtime.InteropServices; using System.IO; using Microsoft.Office.Core;Application app; public string CreatePDF(string path, string exportDir) { Application app = new Application(); app.DisplayAlerts = WdAlertLevel.wdAlertsNone; app.Visible = true; var objPresSet = app.Documents; var objPres = objPresSet.Open(path, MsoTriState.msoTrue, MsoTriState.msoTrue, MsoTriState.msoFalse); var baseFileName = Path.GetFileNameWithoutExtension(path); var pdfFileName = baseFileName + ".pdf"; var pdfPath = Path.Combine(exportDir, pdfFileName); try { objPres.ExportAsFixedFormat( pdfPath, WdExportFormat.wdExportFormatPDF, false, WdExportOptimizeFor.wdExportOptimizeForPrint, WdExportRange.wdExportAllDocument ); } catch { pdfPath = null; } finally { objPres.Close(); } return pdfPath; }


Usé ABCpdf, que es una opción programática y no era demasiado caro, $ 300 por licencia. Funciona con OpenOffice o vuelve a Word si OpenOffice no está disponible. La configuración fue un poco complicada con los permisos COM de OpenOffice, pero definitivamente valió la pena subcontratar esa parte de la aplicación.


Use un bucle foreach en lugar de un bucle for: resolvió mi problema.

int j = 0; foreach (Microsoft.Office.Interop.Word.Page p in pane.Pages) { var bits = p.EnhMetaFileBits; var target = path1 +j.ToString()+ "_image.doc"; try { using (var ms = new MemoryStream((byte[])(bits))) { var image = System.Drawing.Image.FromStream(ms); var pngTarget = Path.ChangeExtension(target, "png"); image.Save(pngTarget, System.Drawing.Imaging.ImageFormat.Png); } } catch (System.Exception ex) { MessageBox.Show(ex.Message); } j++; }

Aquí hay una modificación de un programa que funcionó para mí. Utiliza Word 2007 con el complemento Guardar como PDF instalado. Busca en un directorio los archivos .doc, los abre en Word y luego los guarda como PDF. Tenga en cuenta que deberá agregar una referencia a Microsoft.Office.Interop.Word a la solución.

using Microsoft.Office.Interop.Word; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; ... // Create a new Microsoft Word application object Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application(); // C# doesn''t have optional arguments so we''ll need a dummy value object oMissing = System.Reflection.Missing.Value; // Get list of Word files in specified directory DirectoryInfo dirInfo = new DirectoryInfo(@"//server/folder"); FileInfo[] wordFiles = dirInfo.GetFiles("*.doc"); word.Visible = false; word.ScreenUpdating = false; foreach (FileInfo wordFile in wordFiles) { // Cast as Object for word Open method Object filename = (Object)wordFile.FullName; // Use the dummy value as a placeholder for optional arguments Document doc = word.Documents.Open(ref filename, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing); doc.Activate(); object outputFileName = wordFile.FullName.Replace(".doc", ".pdf"); object fileFormat = WdSaveFormat.wdFormatPDF; // Save document into PDF Format doc.SaveAs(ref outputFileName, ref fileFormat, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing); // Close the Word document, but leave the Word application open. // doc has to be cast to type _Document so that it will find the // correct Close method. object saveChanges = WdSaveOptions.wdDoNotSaveChanges; ((_Document)doc).Close(ref saveChanges, ref oMissing, ref oMissing); doc = null; } // word has to be cast to type _Application so that it will find // the correct Quit method. ((_Application)word).Quit(ref oMissing, ref oMissing, ref oMissing); word = null;


PDFCreator tiene un componente COM, que se puede llamar desde .NET o VBScript (muestras incluidas en la descarga).

Pero, me parece que una impresora es justo lo que necesita, simplemente mezcle eso con la automatización de Word , y debería estar listo.