整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          5-LINUX HTML 轉(zhuǎn) PDF-seleniu

          5-LINUX HTML 轉(zhuǎn) PDF-selenium

          tml2pdf

          selenium

          Selenium 通過使用 WebDriver 支持市場(chǎng)上所有主流瀏覽器的自動(dòng)化。 Webdriver 是一個(gè) API 和協(xié)議,它定義了一個(gè)語言中立的接口,用于控制 web 瀏覽器的行為。 每個(gè)瀏覽器都有一個(gè)特定的 WebDriver 實(shí)現(xiàn),稱為驅(qū)動(dòng)程序。 驅(qū)動(dòng)程序是負(fù)責(zé)委派給瀏覽器的組件,并處理與 Selenium 和瀏覽器之間的通信。

          這種分離是有意識(shí)地努力讓瀏覽器供應(yīng)商為其瀏覽器的實(shí)現(xiàn)負(fù)責(zé)的一部分。 Selenium 在可能的情況下使用這些第三方驅(qū)動(dòng)程序, 但是在這些驅(qū)動(dòng)程序不存在的情況下,它也提供了由項(xiàng)目自己維護(hù)的驅(qū)動(dòng)程序。

          Selenium 框架通過一個(gè)面向用戶的界面將所有這些部分連接在一起, 該界面允許透明地使用不同的瀏覽器后端, 從而實(shí)現(xiàn)跨瀏覽器和跨平臺(tái)自動(dòng)化。

          selenium 驅(qū)動(dòng)

          # selenium 驅(qū)動(dòng)
          https://selenium-python.readthedocs.io/installation.html#drivers
          https://selenium-python.readthedocs.io/api.html

          selenium-java

          主要依賴

                  <dependency>
                      <groupId>org.seleniumhq.selenium</groupId>
                      <artifactId>selenium-java</artifactId>
                      <version>4.16.1</version>
                  </dependency>
          

          測(cè)試代碼

                  // 獲取 java 版本
                  String version=System.getProperty("java.specification.version");
          
                  // 獲取系統(tǒng)類型
                  String platform=System.getProperty("os.name", "");
                  platform=platform.toLowerCase().contains("window") ? "win" : "linux";
          
                  // 當(dāng)前程序目錄
                  String current=System.getProperty("user.dir");
          
                  System.out.println("current:" + current);
          
                  // firefox 運(yùn)行參數(shù)配置
                  FirefoxOptions options=new FirefoxOptions();
                  // 無頭模式
                  options.addArguments("--headless");
                  // 最大化
                  options.addArguments("--start-maximized");
          
                  FirefoxDriver browser=new FirefoxDriver(options);
          
                  Path url=Paths.get(current, "..", "index.html");
                  System.out.println("url:" + url.toString());
          
                  // NOTE 要使用 file 協(xié)議
                  browser.get(String.format("file://%s", url.toString()));
          
                  // 打印設(shè)置
                  PrintOptions print=new PrintOptions();
                  Pdf pdf=browser.print(print);
          
                  // pdf base64 內(nèi)容
                  String content=pdf.getContent();
                  // 解碼內(nèi)容
                  Base64.Decoder decoder=Base64.getDecoder();
                  byte[] buffer=decoder.decode(content);
          
                  try {
                      // 將 byte 寫入文件
                      Path file=Paths.get(String.format("java%s_%s.pdf", version, platform));
                      Files.write(file, buffer);
                  } catch (IOException e) {
                      throw new RuntimeException(e);
                  } finally {
                      browser.quit();
                  }
          

          效果預(yù)覽

          selenium/java11_linux.pdf · yjihrp/linux-html2pdf-demo - Gitee.com

          selenium/java11_win.pdf · yjihrp/linux-html2pdf-demo - Gitee.com

          測(cè)試結(jié)果


          測(cè)試結(jié)果

          下一篇 6-LINUX HTML 轉(zhuǎn) PDF-selenium-python

          器之心報(bào)道

          項(xiàng)目作者:vinayak mehta參與:一鳴

          從 PDF 表格中獲取數(shù)據(jù)是一項(xiàng)痛苦的工作。不久前,一位開發(fā)者提供了一個(gè)名為 Camelot 的工具,使用三行代碼就能從 PDF 文件中提取表格數(shù)據(jù)。

          PDF 文件是一種非常常用的文件格式,通常用于正式的電子版文件。它能夠很好的將不同的排版格式固定下來,形成版面清晰且美觀的展示效果。然而,對(duì)于想要從 PDF 中提取信息的人們來說,PDF 是個(gè)噩夢(mèng),尤其是表格。

          大量的學(xué)術(shù)報(bào)告、論文、分析文章都使用 PDF 展示其中的表格數(shù)據(jù),但是對(duì)于如果想要直接從表格中復(fù)制數(shù)據(jù)則會(huì)非常麻煩。不久前,有一位開發(fā)者提供了一個(gè)可從文字 PDF 中提取表格信息的工具——Camelot,能夠直接將大部分表格轉(zhuǎn)換為 Pandas 的 Dataframe。

          • 項(xiàng)目地址:https://github.com/camelot-dev/camelot

          Camelot 是什么

          據(jù)項(xiàng)目介紹稱,Camelot 是一個(gè) Python 工具,用于將 PDF 文件中的表格數(shù)據(jù)提取出來。

          具體而言,用戶可以像使用 Pandas 那樣打開 PDF 文件,然后利用這個(gè)工具提取表格數(shù)據(jù),最后再指定輸出的形式(如 csv 文件)。

          代碼示例

          項(xiàng)目提供的 PDF 文件如圖所示,假設(shè)用戶需要提取這些文字之間的表格 2-1 中的信息。

          PDF 文件。我們需要提取表格 2-1。

          使用 Camelot 提取表格數(shù)據(jù)的代碼如下:

          >>> import camelot
          >>> tables=camelot.read_pdf('foo.pdf') #類似于Pandas打開CSV文件的形式
          >>> tables[0].df # get a pandas DataFrame!
          >>> tables.export('foo.csv', f='csv', compress=True) # json, excel, html, sqlite,可指定輸出格式
          >>> tables[0].to_csv('foo.csv') # to_json, to_excel, to_html, to_sqlite, 導(dǎo)出數(shù)據(jù)為文件
          >>> tables
          <TableList n=1>
          >>> tables[0]
          <Table shape=(7, 7)> # 獲得輸出的格式
          >>> tables[0].parsing_report
          {
           'accuracy': 99.02,
           'whitespace': 12.24,
           'order': 1,
           'page': 1
          }
          

          以下為輸出的結(jié)果,對(duì)于合并的單元格,Camelot 在抽取后做了空行處理,這是一個(gè)穩(wěn)妥的方法。

          安裝方法

          項(xiàng)目作者提供了三種安裝方法。首先,你可以使用 Conda 進(jìn)行安裝,這是最簡(jiǎn)單的。

          conda install -c conda-forge camelot-py
          

          最流行的安裝方法是使用 pip 安裝。

          pip install camelot-py[cv]
          

          還可以從項(xiàng)目中克隆代碼,并使用源碼安裝。

          ompdf是一個(gè)可以將HTML生成PD并保留樣式效果的PHP第三方擴(kuò)展。

          下面就一步步講解如何使用:

          一、通過composer安裝

          composer require dompdf/dompdf


          安裝過程

          二 、編寫測(cè)試代碼

          (1)引用autoload.php

          include 'vendor/autoload.php'; 

          (2)實(shí)例化Dompdf

          $dompdf=new \Dompdf\Dompdf();

          (3)加載HTML

          $dompdf->loadHtml($html); //$html 為HTML字符串

          (4)設(shè)置紙張和方向

          $dompdf->setPaper('A4', 'landscape'); //紙張大小和紙張方向

          (5)生成PDF并下載

           $dompdf->render();
          $dompdf->stream('數(shù)據(jù)字典.pdf');

          三、導(dǎo)出PDF測(cè)試,發(fā)現(xiàn)中文亂碼了


          導(dǎo)出PDF發(fā)現(xiàn)中文亂碼了

          四、解決中文亂了問題

          (1)下載支持中文的字體包放到根目錄下(和vendor目錄同級(jí)),這里演示使用的是阿里巴巴的普惠字體(字體格式是ttf的,小編原先下載使用的字體格式是otf格式的無效)

          (2)下載dompdf字體安裝工具解壓到根目錄(和vendor目錄同級(jí))

          下載地址:https://github.com/dompdf/utils

          (3)在命令行(CMD定位到根目錄)下執(zhí)行命令

          php load_font.php "puhui" Alibaba-PuHuiTi-Light.ttf

          執(zhí)行成功后在路徑(vendor\dompdf\dompdf\lib\fonts)下就會(huì)出現(xiàn)剛才的字體

          (4)在樣式文件中指定使用剛才安裝的字體

          body{font-family:puhui;}

          (5)再次導(dǎo)出PDF測(cè)試成功


          亂碼問題解決


          主站蜘蛛池模板: 国产suv精品一区二区6| 国产一区二区三区免费观看在线| 精品日韩一区二区三区视频| 熟女大屁股白浆一区二区| 成人精品一区二区电影| 91精品福利一区二区三区野战| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 日本不卡免费新一区二区三区| 日本一区二区高清不卡| 午夜性色一区二区三区不卡视频| 精品国产AV一区二区三区| 亚洲AV综合色区无码一区爱AV| 国产一区二区三区在线观看精品| 高清一区二区三区视频| 国产一区二区三区日韩精品| 无码午夜人妻一区二区不卡视频| 中文字幕一区一区三区| 91精品国产一区| 亚洲另类无码一区二区三区| 亚洲一区二区三区免费视频 | 最新中文字幕一区| 激情无码亚洲一区二区三区| 亚洲国产欧美日韩精品一区二区三区 | 尤物精品视频一区二区三区 | 一区二区在线视频观看| 福利片福利一区二区三区| 国产在线观看一区二区三区四区 | 国产午夜精品一区二区三区极品 | 久久99精品一区二区三区| 国产激情з∠视频一区二区| 无码毛片视频一区二区本码 | 韩国一区二区三区| 麻豆视频一区二区三区| 中文字幕一区二区视频| 精品福利一区二区三| 麻豆一区二区在我观看| 一区二区和激情视频| 精品在线视频一区| 久久婷婷色综合一区二区| 乱色精品无码一区二区国产盗| 中字幕一区二区三区乱码 |