我的服务器上有一组JPEG大小相同。我可以将其转换为PDF文件服务器端吗?
答案 0 :(得分:3)
的内容
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();