Thursday, August 03, 2006

PASAR DE WORD A PDF CON .NET (I PARTE)


Bueno, despues de tanto buscar, encontré por casualidad una parte de un codigo que me ayudaria a desarrollar lo que estaba buscando hace tiempo, poder pasar un documento MS Word a formato PDF a traves de codigo, sin un peso de pormedio, ¿como ocurrio...?, estaba buscando como poder leer solo una pagina en especifico de un pdf para poder recuperar sus valores, cuando aparecio este enlace, http://rajaamir.blogspot.com/2005/07/creating-word-to-pdf.html , aunque incompleto, estaba gran parte de lo que necesitaba, le faltaba la declaración del documento word, a continuacion pondré un procedimiento que desarrollé en base a lo anterior, la cual recibe el nombre del archivo seleccionado y lo transforma a pdf:
public void WordaDoc(string path)
{
Word.ApplicationClass WordApp = new Word.ApplicationClass();
object nombreDOC = path;
object readOnly = false;
object Visible = true;
object missing = System.Reflection.Missing.Value;
Word.Document doc = WordApp.Documents.Open(ref nombreDOC,
ref missing,ref readOnly, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref Visible);
com.lowagie.text.Document document = new ds.Document(ds.PageSize.A4, 36, 72, 108, 180);
PdfWriter.getInstance(document, new FileStream(doc.Name.Replace(".doc",".pdf"), FileMode.Create));
document.open();
foreach(Word.Paragraph para in doc.Paragraphs)
{
com.lowagie.text.Paragraph paragraph = new ds.Paragraph();
switch(para.Alignment)
{
case WdParagraphAlignment.wdAlignParagraphCenter:
paragraph.setAlignment(ds.ElementConst.ALIGN_CENTER);
break;
case WdParagraphAlignment.wdAlignParagraphJustify:
paragraph.setAlignment(ds.ElementConst.ALIGN_JUSTIFIED);
break;
case WdParagraphAlignment.wdAlignParagraphLeft:
paragraph.setAlignment(ds.ElementConst.ALIGN_LEFT);
break;
case WdParagraphAlignment.wdAlignParagraphRight:
paragraph.setAlignment(ds.ElementConst.ALIGN_RIGHT);
break;
}
paragraph.add(para.Range.Text);
document.add(paragraph);
}
document.close();
}


recuerden que deben usar la DLL iTextdotNet, y los siguientes namespaces:

using System;
using Word;
using System.Drawing.Imaging;
using ds=com.lowagie.text;
using com.lowagie.text.pdf;
using System.IO;


Ademas de agregar (en referencias), vjslib, esta es la primera parte porque falta capturar los formatos originales del archivo word (espacios de lineas, viñetas, etc), trabajaré para ello, SI ES QUE ALGUIEN NO ME AYUDA ANTES EN ESTO.
Saludos y suerte con el codigo.

2 Comentarios :

At 8:28 AM, Blogger Raja Sekhar Amirapu said...

Hi,
Thanks for quoting by blog. Hope you found it useful. I just did a search and found out that you have quoted by blog entry.

 
At 9:46 AM, Blogger Victor said...

No lo he podido utilizar el PDFWriter.getInstance (), me marca que necesita recibir una instancia de java.io.OutStream, estoy manejando C#

 

Post a Comment

<< Home