Thursday, July 20, 2006

MARCA DE AGUA EN UN PDF

Trabajando o tratando de hacerlo en realidad, me encontre con una version evolusionada de la dll que habia comentado anteriormente esta vez se trata de iTextdotNET, esta herramienta nos permite programar sobre archivos Pdf con mayor libertad, lo puedes encontrar en la siguiente direccion:
http://www.ujihara.jp/iTextdotNET/en/
La imagen nos muestra las referencias que necesitamos para poder realizar nuestro codigo, Gnu.Classpath.Core y ItextdotNET pertenecen a una serie de Dlls que nos proporciona esta herramienta, mientras que vjslib lo encuentras en los componentes de .NET.
Ahora mostraremos el codigo para poder realizar una marca de agua, es decir una imagen detras del texto de un Pdf, puede servir para marcar tus creaciones en Pdf, dejarlos marcado como "Prohibido su reproduccion", etc. para lo que mas estimes conveniente.
primero los nameSpace considerados:

using System;
using System.Windows.Forms;
using com.lowagie.text; //Pertenecen a los Dll
using com.lowagie.text.pdf; //Pertenecen a los Dll
using System.IO;


Debes tener ademas una imagen creada, en este caso se llama watermark.jpg, la cual es utilizada para realizar la marca, esta clase hace referencia a una entrada que es el nombre del Pdf al cual se le aplicará la marca, creando uno nuevo para que quede el original y la copia con la marca.

public class Class1
{
public void MarcaPDF(string path)
{
PdfReader reader = new PdfReader(path);
int n = reader.getNumberOfPages();
Rectangle psize = reader.getPageSize(1);
float width = psize.width();
float height = psize.height();
Document document = new Document(psize, 50, 50, 50, 50);
PdfWriter writer = PdfWriter.getInstance(document, new FileStream(@"c:\Documento.pdf", FileMode.Create));
try
{
Watermark watermark = new Watermark(Image.getInstance(@"c:\watermark.jpg"), 300, 100);
document.add(watermark);
}
catch(Exception e)
{
MessageBox.Show("Are you sure you have the file 'watermark.jpg' in the right path?");
}
document.open();
PdfContentByte cb = writer.getDirectContent();
int i = 0;
int p = 0;
while (i < n)
{
document.newPage();
p++;
i++;
PdfImportedPage page1 = writer.getImportedPage(reader, i);
cb.addTemplate(page1, .5f, 0);
}
document.close();
}

}

0 Comentarios :

Post a Comment

<< Home