Spire.pdfを一度使って見てください。
サンプルコード:
static
1 {
2 //PdfDocumentオブジェクトを作成し,PDFをロードします。
3 PdfDocument document = new PdfDocument();
4 document.LoadFromFile("sample.pdf");
5
6 //ファイルを.tiffで保存します。
7 JoinTiffImages(SaveAsImage(document), "result.tiff", EncoderValue.CompressionLZW);
8 }
9 //SaveAsImage()メソード
10 private static Image[] SaveAsImage(PdfDocument document)
11 {
12 Image[] images = new Image[document.Pages.Count];
13 for (int i = 0; i < document.Pages.Count; i++)
14 {
15 images[i] = document.SaveAsImage(i);
16 }
17 return images;
18 }
19 //GetEncoderInfo()メソード
20 private static ImageCodecInfo GetEncoderInfo(string mimeType)
21 {
22 ImageCodecInfo[] encoders = ImageCodecInfo.GetImageEncoders();
23 for (int j = 0; j < encoders.Length; j++)
24 {
25 if (encoders[j].MimeType == mimeType)
26 return encoders[j];
27 }
28 throw new Exception(mimeType + " mime type not found in ImageCodecInfo");
29 }
30 //JoinTiffImages()メソード
31 public static void JoinTiffImages(Image[] images, string outFile, EncoderValue compressEncoder)
32 {
33 Encoder enc = Encoder.SaveFlag;
34 EncoderParameters ep = new EncoderParameters(2);
35 ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.MultiFrame);
36 ep.Param[1] = new EncoderParameter(Encoder.Compression, (long)compressEncoder);
37 Image pages = images[0];
38 int frame = 0;
39 ImageCodecInfo info = GetEncoderInfo("image/tiff");
40 foreach (Image img in images)
41 {
42 if (frame == 0)
43 {
44 pages = img;
45 pages.Save(outFile, info, ep);
46 }
47
48 else
49 {
50 ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.FrameDimensionPage);
51
52 pages.SaveAdd(img, ep);
53 }
54 if (frame == images.Length - 1)
55 {
56 ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.Flush);
57 pages.SaveAdd(ep);
58 }
59 frame++;
60 }
61 }