如何将PDF文件转换为图片

64

我需要将PDF文件转换为图像。如果PDF文件是多页的,我只需要包含所有PDF页面的一个图像。

有没有一种开源解决方案,可以像Acrobat产品那样不收费呢?

15个回答

1

Apache PDFBox 对我也非常有效。

使用命令行工具的方法:

javar -jar pdfbox-app-2.0.19.jar PDFToImage -quality 1.0  -dpi 150 -prefix out_dir/page -format png

谢谢,我不知道pdfbox有DPI参数。 - Pogger

0
使用Android的默认库,例如AppCompat,您可以将所有PDF页面转换为图像。此方法非常快速和优化。以下代码是用于获取PDF页面的单独图像。它非常迅速和快速。
ParcelFileDescriptor fileDescriptor = ParcelFileDescriptor.open(new File("pdfFilePath.pdf"), MODE_READ_ONLY);
    PdfRenderer renderer = new PdfRenderer(fileDescriptor);
    final int pageCount = renderer.getPageCount();
    for (int i = 0; i < pageCount; i++) {
        PdfRenderer.Page page = renderer.openPage(i);
        Bitmap bitmap = Bitmap.createBitmap(page.getWidth(), page.getHeight(),Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bitmap);
        canvas.drawColor(Color.WHITE);
        canvas.drawBitmap(bitmap, 0, 0, null);
        page.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
        page.close();

        if (bitmap == null)
            return null;

        if (bitmapIsBlankOrWhite(bitmap))
            return null;

        String root = Environment.getExternalStorageDirectory().toString();
        File file = new File(root + filename + ".png");

        if (file.exists()) file.delete();
        try {
            FileOutputStream out = new FileOutputStream(file);
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
            Log.v("Saved Image - ", file.getAbsolutePath());
            out.flush();
            out.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

=======================================================

private static boolean bitmapIsBlankOrWhite(Bitmap bitmap) {
    if (bitmap == null)
        return true;

    int w = bitmap.getWidth();
    int h = bitmap.getHeight();
    for (int i =  0; i < w; i++) {
        for (int j = 0; j < h; j++) {
            int pixel =  bitmap.getPixel(i, j);
            if (pixel != Color.WHITE) {
                return false;
            }
        }
    }
    return true;
}

-1

-2

https://www.codeproject.com/articles/317700/convert-a-pdf-into-a-series-of-images-using-csharp

我发现这个GhostScript包装器非常好用,可以逐页将PDF转换为PNG。

用法:

string pdf_filename = @"C:\TEMP\test.pdf";            
var pdf2Image = new Cyotek.GhostScript.PdfConversion.Pdf2Image(pdf_filename);
for (var page = 1; page < pdf2Image.PageCount; page++)
{
    string png_filename = @"C:\TEMP\test" + page + ".png";
    pdf2Image.ConvertPdfPageToImage(png_filename, page);
}

由于建立在GhostScript之上,显然对于商业应用程序而言,许可证问题仍然存在。


-7

(免责声明:我曾在Software Siglo XXI公司工作过,参与了此组件的开发)

您可以使用Super Pdf2Image Converter生成一个包含所有渲染页面的高分辨率TIFF多页文件。它适用于32位和64位系统,并且价格便宜而且非常有效。我建议您尝试一下。

只需一行代码...

GetImage(outputFileName, firstPage, lastPage, resolution, imageFormat)

Converts specifies pages to image and save them to outputFileName (tiff allows multi-page or creates several files)

你可以在这里查看:http://softwaresigloxxi.com/SuperPdf2ImageConverter.html

8
404 - dead link (404错误-失效链接) - Yogi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接