2011-03-14 20 views

Respuesta

2

estoy usando iText para este requisito

Document document = new Document(); 
PdfWriter.getInstance(document, new FileOutputStream(yourOutFile)); 
document.open(); 

for(int i=0;i<numberOfImages;i++){ 
    Image image1 = Image.getInstance("myImage"+i+".jpg"); 
    image1.scalePercent(23f); 
    document.newPage(); 
    document.add(image1); 
} 
document.close(); 
+0

Para que esto funcione para mí, ¿qué necesito? (¿Qué bibliotecas incluir?) – BIU

+0

@BIU Debe descargar [Biblioteca iText] (http://www.itextpdf.com/) – anu

+0

@anu Recibo los siguientes errores: "no contiene una definición para ' getInstance "Ya he agregado e importado la Biblioteca iText usando iTextSharp.text; usando iTextSharp.text.pdf; usando iTextSharp; – Ladessa

3

que iba a tratar utilizando http://www.pdfsharp.net/

Algo a lo largo de las líneas de

PdfPage page = outputDocument.AddPage(); 
page.Size = PdfSharp.PageSize.A4; 
XGraphics gfx = XGraphics.FromPdfPage(page); 
XImage image = XImage.FromFile("MyJPGFileXXX.jpg"); 
gfx.DrawImage(image, 0, 0); 
+1

lo general el uso iText Sharp, pero estoy buscando en tratar esta biblioteca, parece bastante fácil de usar. – stephenbayer

+0

mdmulinax, consulte mi pregunta http://stackoverflow.com/questions/15437706/pdf-from-bitmap Estoy obteniendo distorsionar el pdf cuando uso PDFSharp – Ladessa

2

DotImage tiene clases incorporadas para realizar esta acción. Si todos sus archivos JPEG están en una carpeta, usted puede hacer esto:

FileSystemImageSource source = new FileSystemImageSource(pathToDirectory, "*.jpg", true); 
PdfEncoder encoder = new PdfEncoder(); 
using (FileStream outstm = new FileStream(outputPath, FileMode.Create)) { 
    encoder.Save(outstm, source, null); 
} 

el cual se transmitirá todas las imágenes que terminan en .jpg en un archivo PDF de salida. Cada página se ajustará al tamaño de la imagen (esto se puede configurar). Por lo que yo sé, no existe un límite práctico para la cantidad de páginas que puede codificar (estoy bastante seguro de que excederá el límite de PDF antes de agotar su memoria Heap). En las pruebas, he ejecutado cientos de imágenes a través de él sin estresar la máquina.

La compresión puede controlarse con un evento si desea un control más fino (es decir, el nivel de compresión JPEG o el uso de Flate o JPEG 2000). Los perfiles de color se incluirán si están presentes en JPEG y si quiere PDF/A-1b, también lo hará. También hay algún soporte básico para configurar una tabla de contenidos, si lo desea.

Descargo de responsabilidad - Trabajo para Atalasoft y personalmente escribí las clases FileSystemImageSource y PdfEncoder (y casi todas las herramientas de generación de PDF subyacentes).

+0

¿En qué idioma está escribiendo y qué bibliotecas está usando? (es decir, ¿qué necesito para trabajar con este programa?) – BIU

+0

¿Es posible usar DotImage para generar el PDF a partir de jpegs que no están guardados en el directorio de archivos (por ejemplo, para archivos en una base de datos). Entonces, en lugar de FileSystemImageSource, ¿hay algo así como un MemoryStreamImageSource o algo que me permita alimentarlo con una secuencia para generar un PDF? – Diskdrive

+0

@Diskdrive ImageSource y RandomAccessImageSource son clases abstractas que se pueden subclasificar para adaptarse a sus necesidades. También ofrecemos un DbImageSource adaptado a las bases de datos. – plinth

Cuestiones relacionadas