一尘不染

如何将pdf文件转换为图像

c#

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

是否有像Acrobat产品一样收费的开源解决方案?


阅读 350

收藏
2020-05-19

共1个答案

一尘不染

以下线程适合您的要求。
将pdf文件转换为jpeg图像

一种解决方案是使用第三方库。ImageMagick非常受欢迎,也可以免费获得。您可以在这里获得.NET包装器。原始的ImageMagick下载页面在这里

您还可以看一下该线程:
如何在C#中通过pictureBox中的pdf文件打开页面

如果使用此过程将PDF转换为tiff,则可以使用此类从tiff检索位图。

public class TiffImage
{
    private string myPath;
    private Guid myGuid;
    private FrameDimension myDimension;
    public ArrayList myImages = new ArrayList();
    private int myPageCount;
    private Bitmap myBMP;

    public TiffImage(string path)
    {
        MemoryStream ms;
        Image myImage;

        myPath = path;
        FileStream fs = new FileStream(myPath, FileMode.Open);
        myImage = Image.FromStream(fs);
        myGuid = myImage.FrameDimensionsList[0];
        myDimension = new FrameDimension(myGuid);
        myPageCount = myImage.GetFrameCount(myDimension);
        for (int i = 0; i < myPageCount; i++)
        {
            ms = new MemoryStream();
            myImage.SelectActiveFrame(myDimension, i);
            myImage.Save(ms, ImageFormat.Bmp);
            myBMP = new Bitmap(ms);
            myImages.Add(myBMP);
            ms.Close();
        }
        fs.Close();
    }
}

像这样使用它:

private void button1_Click(object sender, EventArgs e)
{
    TiffImage myTiff = new TiffImage("D:\\Some.tif");
    //imageBox is a PictureBox control, and the [] operators pass back
    //the Bitmap stored at that position in the myImages ArrayList in the TiffImage
    this.pictureBox1.Image = (Bitmap)myTiff.myImages[0];
    this.pictureBox2.Image = (Bitmap)myTiff.myImages[1];
    this.pictureBox3.Image = (Bitmap)myTiff.myImages[2];
}
2020-05-19