如何找出用户在c#中的OpenFileDialog中选择的pdf文件的页数?

时间:2014-03-28 03:38:39

标签: c# filestream openfiledialog dialogresult

你好,来自阿富汗 我正在开发一个桌面应用程序,使用soap消息发送和接收传真,我需要知道用户想要传真的pdf文件的页数。

4 个答案:

答案 0 :(得分:2)

当文档上传到服务器时,有多个外部库可以知道文档PDF的页数:

<强> iTextSharp的

http://sourceforge.net/projects/itextsharp/

private static int getNumberOfPdfPages(string pathDocument)
{
    return new iTextSharp.text.pdf.PdfReader(pathDocument).NumberOfPages;
}

<强> PDFLIB

http://www.pdflib.com/ - (在6.0.4.0版中测试的方法)

private static int getNumberOfPdfPages(string pathDocument)
{
    int doc = 0;
    int numPages = 0;

    PDFlib_dotnet.PDFlib oPDF = new PDFlib_dotnet.PDFlib();
    doc = oPDF.open_pdi(pathDocument, "", 0); //open document
    if (doc != -1) //if not problem open document
    {
        numPages = (int)oPDF.get_pdi_value("/Root/Pages/Count", doc, -1, 0);
        oPDF.close_pdi(doc);//close document
    }
    return numPages;
}

<强> PDFSHARP

private static int getNumberOfPdfPages(string pathDocument)
{
    return PdfSharp.Pdf.IO.PdfReader.Open(pathDocument, PdfSharp.Pdf.IO.PdfDocumentOpenMode.InformationOnly).PageCount;
}

<强>的StreamReader

不需要外部库

public static int getNumberOfPdfPages(string pathDocument)
{
    using (StreamReader sr = new StreamReader(File.OpenRead(pathDocument)))
    {
        return new Regex(@"/Type\s*/Page[^s]").Matches(sr.ReadToEnd()).Count;
    }
}

答案 1 :(得分:0)

您需要一个PDF库来解析PDF并确定其包含的页数。有几个free ones for .NET

答案 2 :(得分:0)

您可以在文件中找到/Count值,只需在不使用外部库的情况下解析它。如果PDF有5页,它看起来像/Count 5

我不知道该解决方案有多强大,但在添加/学习另一个库之前,它绝对值得尝试。

答案 3 :(得分:0)

在客户端上传之前,我使用PDFjs来评估PDF。适用于获取页数,页面大小......但是加载PDFjs的有效负载是一个很重的

http://www.pdfcharts.com/lab/analyze.html