`
zhuyufufu
  • 浏览: 139436 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

文档展示:PDFRender 将PDF转换为图片

阅读更多
上接 文档展示:PDFBox 将PDF转换为图片
http://zhuyufufu.iteye.com/blog/2009600

上面链接的文章展示了使用PDFBox转PDF为图片,但是有问题:

1.当PDF文档为180M大小时直接报解析异常 (通过加大堆内存可解决)

2.当PDF页数为500多页时处理非常慢

3.测试例子中出现中文正常,英文数字括号乱码的情况

4.jar包很大,达到9M以上

换个组件使用PDFRender来实现例子

上代码:

package com.zas.pdfrender.test;

import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import com.sun.pdfview.PDFFile;
import com.sun.pdfview.PDFPage;

public class PDFRenderTest {
	
	public static void convert(String inputPDFPath, String outputFDir) throws IOException, FileNotFoundException {
		//pdf文件存在校验,输出文件夹创建
		File file = new File(inputPDFPath);
		if(!file.exists()){
			throw new FileNotFoundException("文件不存在: " + inputPDFPath);
		}
		File outputFolder = new File(outputFDir);
		if(!outputFolder.exists()){
			outputFolder.mkdirs();
		}
		
		//获取PDFFile
		RandomAccessFile raf = new RandomAccessFile(file, "r");
		FileChannel channel = raf.getChannel();
		ByteBuffer buf = channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size());
		channel.close();
		raf.close();
		PDFFile pdffile = new PDFFile(buf);
		
		System.out.println("PDF页数: " + pdffile.getNumPages() + " , " + inputPDFPath);
		
		//转化处理
		for (int i = 1; i <= pdffile.getNumPages(); i++) {
			PDFPage page = pdffile.getPage(i);
			Rectangle rect = new Rectangle(0, 0, (int) page.getBBox().getWidth(), (int) page.getBBox().getHeight());
			Image img = page.getImage(rect.width, rect.height, // width &  height
					rect, // clip rect
					null, // null for the ImageObserver
					true, // fill background with white
					true // block until drawing is done
					);
			BufferedImage tag = new BufferedImage(rect.width, rect.height, BufferedImage.TYPE_INT_RGB);
			
			Graphics2D g=tag.createGraphics();
			//g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
			g.drawImage(img, 0, 0, rect.width, rect.height, null);
			FileOutputStream out = new FileOutputStream(outputFDir + i + i + ".png"); // 输出到文件流
			JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
			JPEGEncodeParam param2 = encoder.getDefaultJPEGEncodeParam(tag);
			param2.setQuality(1f, false);// 1f是提高生成的图片质量
			encoder.setJPEGEncodeParam(param2);
			encoder.encode(tag); // JPEG编码
			out.close();
		}
	}

	public static void main(final String[] args) throws FileNotFoundException, IOException {
		String inputPDFPath = "D:\\pdf\\ppt\\2010110档案管理系统需求分析说明书正式.pdf";
		String outputFDir = "D:\\pdf\\222222222222010110系统需求分析说明书正式\\";
		PDFRenderTest.convert(inputPDFPath, outputFDir);
	}
}



结果:
能够正常转换PDF为图片,没有乱码

问题:

1.转换的图片稍毛糙

2.在PDF超过500页时和PDFBox一样慢的令人难以忍受,看来只有做多线程处理了


PDF转图片效果最好的还是Adobe Acrobat X Pro,但是它没有提供程序调用接口,还是收费软件,好像也不支持Linux

还有两天的技术预研时间,接下来研究下文档转换为HTML
0
0
分享到:
评论

相关推荐

    O2S.Components.PDFRender4NET 4.5.1.2 无水印 不会转空白图片 附带PDF转图片代码 C# 真实项目实测有效

    在文档管理系统中,为了保护版权,可以将PDF转换为图片,防止直接复制文本;又或者在数据分析中,如果需要对PDF中的图表进行自动化处理,转换成图片后能更容易地进行图像识别和分析。 描述中提到的"附带转换代码...

    PDF转图片O2S.Components.PDFRender4NET

    O2S.Components.PDFRender4NET是一个专门用于将PDF文档转换为图像的DLL库,它提供了一种简单高效的方式来处理PDF到图片的转换。在C#工程中,我们可以通过引用这个DLL并调用其内部方法,实现快速且灵活的转换功能。 ...

    PDF文档转换为图片pdf.zip

    PDF文档在许多场景下是必不可少的,但有时我们需要将PDF转换为图片格式,例如为了方便在网页上展示或在不支持PDF阅读的设备上查看。本压缩包"PDF文档转换为图片pdf.zip"提供了一个解决方案,它包含了"O2S.Components...

    c#将PDF转为图片,高清无水印

    以下是一个使用PDFRender4NET将PDF转换为图片的C#示例代码: ```csharp using System; using System.Drawing; using pdf2image.O2S.Components.PDFRender4NET; class Program { static void Main(string[] args) ...

    O2S.Components.PDFRender4NET.dllv2.4.3 c#专用Pdf转图片专用,官方正版购买。

    PDFRender4NET是一款针对C#开发者的专业PDF转换工具,主要功能是将PDF文档转换为图像格式。在标题和描述中提到的“O2S.Components.PDFRender4NET.dllv2.4.3”是该组件的具体版本,适用于C#环境,且强调是官方正版,...

    O2S.Components.PDFRender4NET_print_pdf_4.7.3_无水印版本.zip

    首先,PDFRender4NET提供了PDF文档的高质量渲染,支持将PDF页面转换为图像,这对于预览、保存或打印PDF非常有用。在C#项目中,你可以通过引用`O2S.Components.PDFRender4NET_4.7.3_无水印版本.dll`这个库来调用其API...

    使用Linux-Shell转换PDF文件为图片

    `convert-pdf.jar`很可能是一个Java编写的可执行程序,它实现了将PDF转换为图片的逻辑。在Linux中,我们可以用Java的JAR文件执行Java代码。`convertPdfToImg.sh`则是一个Shell脚本,它包含了调用jar包并执行转换的...

    PDFRender4NET 资源及使用方法

    总之,PDFRender4NET是一个强大且易于使用的库,它提供了将PDF转换为高质量图片的功能,适合各种.NET项目中的PDF处理需求。正确引用和使用该库,可以极大地提高开发效率,简化PDF到图片的转换过程。

    O2S.Components.PDFRender4NET4.5.1.2

    它提供了丰富的API接口,允许开发者将PDF文档转换为图像,或者在应用程序中直接显示PDF内容。这个特定的版本"O2S.Components.PDFRender4NET4.5.1.2"包含了对破解无水印功能的更新,意味着用户可以使用该组件生成...

    PDFRender4NET C# pdf to image

    PDFRender4NET是一款用于.NET平台的库,专为C#开发者设计,用于将PDF文档转换成高质量的图像格式。这个库提供了高效的API,使得在C#应用中处理PDF到图像的转换变得简单易行。在本文中,我们将深入探讨如何使用O2S....

    O2S.Components.PDFRender4NET.dll 真正无水印最新版 v4.5.1

    1. 在线预览:网站可以将PDF文档转换为图片,然后以幻灯片形式展示,避免用户必须下载整个PDF。 2. 数据抓取:通过转换PDF为图像,可以使用OCR(光学字符识别)技术提取文本信息。 3. 安全分享:将PDF转为图片可以...

    O2S.Components.PDFRender4NET

    PDFRender4NET是一个用于PDF文档处理的组件,主要功能是将PDF文档转换为图像格式。在.NET环境中,这个组件提供了一种高效且便捷的方式,来处理PDF文件,特别是在需要将PDF页面转化为静态图片的场景中非常有用。下面...

    .NET/C#实现把PDF转为图片

    本资源为C#下调用o2s.components.pdfrender4net,把PDF文档转为图片的示例,内含O2S.Components.PDFRender4NET.dll(version:4.5.1.2)这个库,也包含转换示例代码,demo功能为把本地的一个PDF转为一张图片,然后以...

    O2S.Components.PDFRender4NET(DLL+转换源码类,绝对保证无水印无需破解能用).rar

    PDFRender4NET是一款用于在.NET环境中处理PDF文档的组件,主要功能是将PDF文档转换为图像。这个组件的特色在于其提供的DLL库和转换源码类,用户可以直接在自己的项目中引用,进行PDF到图像的转换操作,而且据描述所...

    pdf2image.O2S.Components.PDFRender4NET.zip

    PDF转换为图片是一种常见的需求,尤其在数据可视化、文档共享或网页设计中。这个压缩包文件"pdf2image.O2S.Components.PDFRender4NET.zip"包含了几种不同的.NET组件和库,它们允许开发者将PDF文档转换为图像格式。...

    O2S.Components.PDFRender4NET4.5.1.rar

    这个组件主要用于将PDF文档转换为图像或其他可显示的格式,以便在Web应用程序或者桌面应用程序中进行展示,而无需依赖Adobe Acrobat等PDF阅读器。在"O2S.Components.PDFRender4NET4.5.1.rar"压缩包中,包含了该组件...

    O2S.Components.PDFView4NET 和 O2S.Components.PDFRender4NET

    例如,他们可以使用PDFView4NET来创建一个用户友好的PDF查看器界面,用户可以在此界面上浏览PDF文件,而PDFRender4NET则在后台默默地将PDF转换为适合打印或共享的格式。同时,开发者还可以利用提供的事件和方法,对...

    C# pdf 转 图片

    然而,在某些情况下,我们可能需要将PDF转换为图片,以便于在网络上分享、嵌入到网页中或者进行进一步的图像处理。本教程将详细介绍如何使用C#编程语言和第三方库O2S.Components.PDFRender4NET来实现这个功能。 ...

    pdf转图片.

    PDF转图片是一个常见的需求,尤其在处理大量PDF文档并需要以图像形式进行展示或存储时。O2S.Components.PDFRender4NET.dll 是一个专门用于将PDF文档转换为图像格式的组件,它提供了32位和64位的兼容性,以适应不同...

Global site tag (gtag.js) - Google Analytics