c# - PdfDocument.GetTextWithFormatting()不占用所有页面

时间:2017-07-02 22:24:31

标签: c# pdf asp.net-core bitmiracle docotic.pdf

我试图用这段代码打开一个大的PDF文件

using BitMiracle.Docotic.Pdf;

PdfDocument pdf = new PdfDocument("document.pdf")
string document = pdf.GetTextWithFormatting();

字符串document取第87页(174页)。为什么只需要文档的前半部分?

编辑:这是图书馆的评估模式限制。有一些替代方案吗?

2 个答案:

答案 0 :(得分:1)

您观察到的行为是因为评估模式限制。在试用模式下使用时,库会施加以下限制:

  • 使用库生成的文档包含在每个页面上打印的评估通知。
  • 对于所有现有文档,图书馆只能阅读一半页面。

要评估没有评估模式限制的库,您可以在我们的网站上get a free time-limited license

答案 1 :(得分:0)

您可以尝试阅读每页的文字:

StringBuilder sb = new StringBuilder();
var options = new PdfTextExtractionOptions
                {
                    WithFormatting = false,
                    SkipInvisibleText = true
                };
using (PdfDocument pdf = new PdfDocument("document.pdf"))
{
    int pageIndex = 1;
    foreach(var page in pdf.Pages)
    {
        Console.WriteLine("Page {0}", pageIndex++);
        sb.AppendLine(page.GetText(options));
    }
}
string allText = sb.ToString();

执行此操作后,您应该在控制台中看到pdf中每个页面的一行。

我可能是87之后没有文字的页面。例如,它们可能是扫描页面的图像。

您可以在第87页之后尝试从PDF中选择并复制并粘贴文本来测试这一点。如果可以,则可能是BitMiracle DLL中的错误。