我在使用iTextSharp(5.x)將html轉換爲pdf時試圖隱藏包含某個類的圖像元素。如何在從html創建pdf時隱藏具有某個類的圖像?
我無法訪問原始Html,因爲它來自另一個源,但是,我可以在C#中執行基本的東西,例如正則表達式和string.replace。
HTML字符串中的一個簡單的例子是這樣的:
<div>
<div>
<img src="somepath/desktop.jpg" class="img-desktop">Desktop</img>
<img src="somepath/mobile.jpg" class="img-mobile">Mobile</img>
</div>
</div>
然後得到創建該字符串轉換成使用iTextSharp的該XMLWorker的PDF文件。
我需要隱藏第二個圖像,更一般地說,任何帶有「img-mobile」類的圖像元素。
我已經試過:
- 添加img.img移動{顯示:無}到CSS是創建PDF
- 添加img.img移動{寬度時發送: 0; height:0}添加到CSS
- Add @media print {img.img-mobile:display:none} 0}到CSS
使用正則表達式來查找具有該類的img元素,然後遍歷匹配,更換空的源代碼的來源和替換字符串與新字符串的原始HTML(我的正則表達式是不斂任何比賽,不幸的是)
var pattern = "<img.*?class=\"img-mobile.*\"\\s?>.*</img>"; var mobileImages = Regex.Matches(innerHtml, pattern); var srcPattern = "src=\".*\" "; foreach (var imageElement in mobileImages) { var replaceString = Regex.Replace(imageElement.ToString(), srcPattern, " "); innerHtml.Replace(imageElement.ToString(), replaceString); }
我趕緊跑出來關於如何處理這個問題的想法...唯一的優點是,由於工具在其他地方生成它,所以進來的Html是一致的。所以,當用戶「添加一個圖像到該html」它將始終結構相同,所以正則表達式和替換方法是可以接受的,雖然CSS方法會更受歡迎...
感謝您的回覆!我也開始走這條路,但由於它沒有得到「客戶的批准」,所以不得不轉而離開它,這意味着它必須通過審批委員會。建築師有信心它應該沒問題,但我想探索其他選擇......聽起來好像沒有任何:)我會用更復雜的html給出這個結果並回復給你。 – JasonWilczak
更新爲'Regex'替代。 – kuujinbo
我希望我能夠贊成這50次,謝謝!正則表達式路徑是我目前所擁有的,並且完美運行!當我回來時,我會在星期一去HtmlAgilityPack,但至少我知道B計劃的作品,再次感謝你! – JasonWilczak