2017-08-15 59 views
1

怎樣纔可以有一個HTML文檔中的文本,這將是「有」的PDF文件(通過wkhtmltopdf產生的),但無形之中查看或打印時?使目前的PDF文檔中的文本,但無形的

約束:

  • 文本必須出現在正確的地方,用大小合適,因爲其目的是爲了找到一個自動化的工具的文本,發現在網頁上的座標和大小。

  • 解決方案必須做只有文字,因爲我想保持這種簡單的CSS樣式。任何「隱藏在其他元素下」都不能解決問題,因爲在這些座標中可能沒有任何其他元素。

  • 該解決方案不能依賴於什麼是已經在頁面上;我無法檢查頁面上的背景元素,因爲我無法動態確定這些元素。文本本身應該是不可見的。

  • 必須使用自動工具(例如pdfgrep)找到文本,這意味着wkhtmltopdf必須將文本放置在文檔文件中。

    所以「顯示:無」式的或「不透明度:0」是不行的,因爲這使得文本不是PDF文檔中存在的。

所以我想有一個HTML文檔,具有內嵌CSS樣式該文檔中放置文本元素「FOO」,並通過wkhtmltopdf處理它;那麼,pdfgrep FOO應該找到文本,文本的位置和大小應該是正確的,但文本不應該顯示在HTML中,不會在查看PDF時出現,並且在打印時不出現。與PDF的背景色的彩色

+0

你需要這個以自動化的方式生產像*許多*文件的工作?或者,如果您可以通過在其創建後半手動編輯PDF來實現您的目標,它會不夠好? –

+0

嗯......只是意識到:你不清楚如果文本應該在HTML中可見,但不在PDF中? –

回答

1

樣式爲color: transparent;文本將在頁面上完全透明,但通常顯示在文檔中查找該文本的任何工具。

0

使文本(例如,白色)。

+0

已經在問題中解決了:插入這個元素的程序不知道這個文本最終會產生什麼樣的背景顏色。 – bignose

+0

另一個解決方案:「不透明度:0;」 – Olga

1

的PDF語法支持不同「文本渲染模式」。這些讓一個PDF創建軟件(或任何人誰​​作者用簡單的文本編輯器PDF)提供任何文本,無論選擇的字體,如

  • 僅概述,
  • 不僅填補,
  • 概述和填充,
  • 既不填充也不概述(看不見的),
  • 再加上多一些,其處理剪輯。

下面是從PDF說明書中的說明:

Text rendering modes in PDF specification

然而,這不是由HTML或CSS(至少AFAIK)的支持。因此,以類似的方式完成它的唯一選擇是......

  • ...任一組中的HTML的背景色相同的文字顏色,
  • ...或文本顏色設置爲透明的。

然後希望htmltopdf將它轉換成它代表了同一個PDF ...

II。

以下HTML代碼(基本上使用style="color:transparent")適用於我。你必須決定是否完全fullfills您的要求:

<html> 
<head></head> 
<body> 
    <div style="color:transparent; background:red; border: 1px dashed currentColor;"> 
      The color of this text is transparent/invisible. <br /> 
      The background of this text is red. 

      <div style="background:blue; height:9px;"></div> 

      Above this text is a blue box with a height of 9px. <br /> 
      This block is surrounded by a transparent border. 
    </div> 
</body> 
</html> 

然後,打開PDF時,我不能閱讀任何文本行,但我可以選擇/標記/高亮顯示它們。

當運行

pdftotext -layout my.html - 

我看到下面的文字:

The color of this text is transparent/invisible. 
The background of this text is red. 
Above this text is a blue box with a height of 9px. 
This block is surrounded by a transparent border. 
相關問題