PHP中使用PDFlib TET提取PDF中的文本

?php

    /* 全局参数表*/
    $globaloptlist = "searchpath=../../../resource/cmap";

    /* 文档参数表 */
    $docoptlist = "";

    /* 页面参数表 */
    $pageoptlist = "granularity=page";

    $infile = $_GET['infile'];


    /* 将提取出的文本以UTF-8 编码传送的浏览器 */
    header("Content-type: text/html; charset=UTF-8");
    print("<pre>");

    $tet = TET_new();

    if ($infile == "")
    {
        die("<i>usage:</i> add ?infile=filename.pdf to the URL/n");
    }

    TET_set_option($tet, $globaloptlist);

    $doc = TET_open_document($tet, $infile, $docoptlist);

    if ($doc == -1)
    {
          die("Error ". TET_get_errnum($tet) . " in " . TET_get_apiname($tet)
    . "(): " . TET_get_errmsg($tet) . "/n");
    }

    /* 获取文档的页数*/
    $n_pages = TET_pcos_get_number($tet, $doc, "length:pages");

    for ($pageno = 1; $pageno <= $n_pages; ++$pageno)    /* 逐页循环*/
    {
          $page = TET_open_page($tet, $doc, $pageno, $pageoptlist);

          if ($page == -1)
          {
              print("Error " .  TET_get_errnum($tet) . "in " .
              TET_get_apiname($tet) . "() on page " .  $pageno . ": " .  TET_get_errmsg($tet) . "/n");
              continue;                       
          }

          /* 提取所有的文本段 */
          while (($text = TET_get_text($tet, $page)) != "")
          {
                /* 遍历所有字符*/
              while (($ci = TET_get_char_info($tet, $page)))
              {

              /* 提取字体名称;字符位置可以通过ci->x和ci->y取得*/
              $fontname = TET_pcos_get_string($tet, $doc,"fonts[" .  $ci->fontid .  "]/name");
                }

                print($text);
          }

          if (TET_get_errnum($tet) != 0)
          {
                print("Error " .  TET_get_errnum($tet) . " in " .  TET_get_apiname($tet) . " on page " .  $pageno  . ": " .  TET_get_errmsg($tet) . "/n");
          }

        TET_close_page($tet, $page);

          print("/n<p>");  /* add a delimiter between each zone */
    }

    print("</pre>");

    TET_close_document($tet, $doc);

    TET_delete($tet);
?>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值