2012-07-06 154 views
3

我正在尝试使用PDfSharp将pdf转换为jpeg。使用PdfSharp将PDF转换为Jpeg(资源为空)

这里是我的代码:

PdfSharp.Pdf.PdfDocument document = PdfSharp.Pdf.IO.PdfReader.Open(doc); 
      PdfSharp.Pdf.PdfPage page = document.Pages[0];   
      // get resources dictionary 
      PdfSharp.Pdf.PdfDictionary resources = page.Elements.GetDictionary("/resources"); 
      if (resources != null) 
      { 
       // get external objects dictionary 
       PdfSharp.Pdf.PdfDictionary xobjects = resources.Elements.GetDictionary("/xobject"); 
       if (xobjects != null) 
       { 
        ICollection<PdfSharp.Pdf.PdfItem> items = xobjects.Elements.Values; 
        // iterate references to external objects 
        foreach (PdfSharp.Pdf.PdfItem item in items) 
        { 
         PdfSharp.Pdf.Advanced.PdfReference reference = item as PdfSharp.Pdf.Advanced.PdfReference; 
         if (reference != null) 
         { 
          PdfSharp.Pdf.PdfDictionary xobject = reference.Value as PdfSharp.Pdf.PdfDictionary; 
          // is external object an image? 
          if (xobject != null && xobject.Elements.GetString("/subtype") == "/image") 
          { 
           ExportJpegImage(xobject); 
          } 
         } 
        } 
       } 

     } 

行:if (resources != null)是返回false。我不确定应该包含哪些资源,但对于转换的其余部分似乎很重要。我从pdfSharp示例站点复制了此代码。我的PDF可能有问题吗?我使用单词2010。

任何帮助将不胜感激!

+1

资源键应以大写'R'开头。你有没有尝试过使用**/Resources **而不是**/resources **?其他键也有错误的大写。还是以不区分大小写的方式查找PDFSharp? – mkl 2013-09-07 07:01:42

回答

3

如果要将PDF转换为JPEG格式,并且希望使用免费的软件库,请考虑使用ImageMagick。这可以在所有主要平台上运行,所以在Windows上你会很好。它可以在命令行中启动,并且可以设置您的首选有损压缩级别。

编辑:啊,我看到另一个问题,你正在使用ImageMagick的.net接口。如果你可以使用它,那很棒,但是你可能会发现使用convert命令更容易!

+0

感谢您的回复。是的,我一直在与ImageMagickNet合作,但发现它比我期待的要困难。我对.NET世界相当陌生,但是你知道我是否能够使用'convert'命令作为我的网站的一部分? – PFranchise 2012-07-06 22:51:44

+1

我确定你可以。只要找到一种方法来执行一个网页内的系统命令(我不是一个.net程序员),并调用'convert.exe -quality 85 infile.pdf/temp/path/tempfile.jpg' – halfer 2012-07-06 22:59:34