从一组JPEG生成PDF

时间:2011-03-14 15:53:11

标签: c# asp.net pdf pdf-generation

我的服务器上有一组JPEG大小相同。我可以将其转换为PDF文件服务器端吗?

3 个答案:

答案 0 :(得分:3)

我尝试使用http://www.pdfsharp.net/

的内容
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 :(得分:2)

DotImage有内置的类来执行此操作。如果你的所有jpeg都在一个文件夹中,你可以这样做:

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

将所有以.jpg结尾的图像流式传输到输出PDF文件中。每个页面都适合图像的大小(这是可设置的)。据我所知,你可以编码的页数没有实际限制(我很确定你在耗尽堆内存之前会超过PDF限制)。在测试中,我通过它运行了数百张图像,而不会对机器造成压力。

如果您想要更精细的控制(即JPEG压缩级别或使用Flate或JPEG 2000),可以使用事件控制压缩。如果出现在JPEG中,将包含颜色配置文件,如果您想要PDF / A-1b,它也会这样做。如果需要,还可以为设置目录提供一些基本支持。

免责声明 - 我为Atalasoft工作并亲自编写了FileSystemImageSource和PdfEncoder类(以及几乎所有底层的PDF生成工具)。

答案 2 :(得分:2)

我正在使用iText来满足此要求

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();