2009-10-19 61 views
-4

我需要識別PDF文件中未填充的橢圓。之後,我應該用顏色填充它們,並且需要頁碼的橢圓座標。任何人可以幫助我如何解決這個使用CAM::PDF如何使用CAM :: PDF識別PDF文檔中未填充的橢圓?

+1

你有任何代碼了嗎?你嘗試了什麼?你遇到什麼問題? – innaM 2009-10-19 13:34:32

+0

您應該一次完成這一步。您是否設法檢測到所有橢圓形?成功完成後,看看你是否能找出他們是什麼顏色。我認爲這很棘手。 – Geo 2009-10-19 13:35:09

+0

即使在最好的情況下,你所要求的也是相當困難和困難的。請提供更多信息。 – 2009-10-19 13:36:21

回答

1

$doc->traverse($dereference, $node, $callbackfunc, $callbackdata)似乎很有前途。檢查並查看橢圓形的類型。

1

望着PDF Specs,我會說你有在你面前很挑戰:

PDF提供了五種類型的圖形對象:

  • 一個路徑對象是任意形狀由直線,矩形和立方貝塞爾曲線組成。路徑可能相交,可能有斷開的部分和孔。一個路徑對象以一個或多個繪製操作符結束,該操作符指定路徑是否應被描邊,填充,用作剪切邊界,還是這些操作的某些組合。

  • 文本對象 ...

  • 外部對象(x對象)是內容流之外的定義和引用作爲命名資源的對象(見7.8.3「資源字典」 )。 XObject的解釋取決於它的類型。 ...

  • 內嵌圖像對象使用特殊語法直接在內容流內表示小圖像的數據。

  • A 着色對象描述了一種幾何形狀,其顏色是形狀內任意位置的函數。

因此,至少,人們需要知道你感興趣的橢圓是否路徑或外部物體或內嵌圖像對象或遮蔽對象。

然後,您需要一個適當的算法,可以決定該類型的對象是否是橢圓形。然後,你需要弄清楚什麼沒有填充的含義。然後,你需要弄清楚如何填充它們。

對我來說,似乎不太可能有人會付出很多努力給你一個現成的解決方案。

0

將PDF渲染爲灰度位圖並使用簡單的形狀識別來確定從未填充的橢圓中填充可能會更簡單。如果你能夠可靠地確定橢圓的位置(我假設這是來自一個表單,所以橢圓的位置將是標準的),你可以做一個簡單的啓發式(例如,如果70%的像素是50 %灰度或更高)來確定它是什麼樣的橢圓形。

例如,在這種情況下:

[ ] | [ ] | [ ] | [X] 
------+-----------+----------+------ 
[ ] | [X] | [ ] | [ ] 
------+-----------+----------+------ 
[ ] | [ ] | [X] | [ ] 

從那裏你只是在網格圈之後,應用簡單的啓發式到每個單元:

[ ]  [ ]   [ ]  [X] 

[ ]  [X]   [ ]  [ ] 

[ ]  [ ]   [X]  [ ] 

您可以使用網格分割橢圓形。