2012-04-04 143 views
0

我想呈現一個HTML頁面中的圖像。abcpdf HTML圖像拉伸

我有一個問題,當前圖像的大小似乎變得越來越多,我的圖像是304x112,當它呈現爲pdf時,它是607x224。

我沒有找到這個

屏幕分辨率通常爲96 dpi的。因此,當您在顯示器上查看HTML頁面 時,Windows將以96 dpi的分辨率顯示它。

屏幕分辨率與PDF分辨率之間的差異意味着HTML在打印文檔中顯示的大於屏幕上的 。

如果您希望兩者的尺寸相同,則需要使用72/96(0.75)的比例來補償此 。

例如,如果你是渲染網頁的寬度參數提供800 一個值,你需要,如果你想都出現相同的大小來設置矩形 的寬度600。

PDF文檔主要是基於矢量的。因此,他們不要 確實有一個dpi,因爲他們是獨立的分辨率。基於柵格的PDF的唯一 部分是圖像。

HTML的大部分元素 - 文本,行 - 都是基於矢量的。所以他們是 分辨率無關的。

您的網頁中的圖像呈現的分辨率爲 複雜。假設您有一個由 圖片標籤引用的300平方的圖片。如果Doc.Rect的寬度與 傳遞給AddImageUrl的寬度相同,則會以72 dpi的分辨率渲染。但是,通過 更改這兩個值之間的比率,圖像將被縮放爲 ,因此分辨率將會更改。

而且,如果您的300平方米位於寬度和高度爲 150的img標記中,則默認分辨率將翻倍。

我的問題似乎是在那裏的第二部分描述。

我的最終結果是將輸出添加到a4縱向頁面,以便它可以打印(以及文檔中的其他文本,但工作正常)。

目前,渲染,當我用這個

doc.MediaBox.String = pageSize; 
doc.Rect.String = pageSize; 
doc.AddImageHtml(html, true, width, disableCache); 

其中頁面尺寸爲「A4」且寬度在addimagehtml通話設置爲800。

我已經嘗試在設置頁面大小並將寬度設置爲addimagehtml調用800之後將doc.Rect.Width設置爲600,但圖像仍呈現錯誤。

還有什麼我不見了?

編輯:頁面轉換的 HTML是這樣的:

<html xmlns="http://www.w3.org/1999/xhtml" > 
    <head runat="server"> 
     <title>Workpack</title> 
     <style> 
      body { font-family: Arial, Helvetica, sans-serif; } 
     </style> 
    </head> 
    <body style="border: 1px solid black;"> 
     <div style="height: 1100px;"> 
      <div style="position: absolute; top: 50%;"> 
       <div style="text-align: center; width: 780px;" > 
        <div> 
         <% if (!string.IsNullOrWhiteSpace(Model.CompanyLogo)){%> 
          <img src="<%: Url.ToFullyQualifiedUrl(Model.CompanyLogo) %>"/> 
          <% } %> 
        </div> 
        <div> 
         <h1><%: Model.PlantName %></h1> 
        </div> 
        <div style="font-size: 15pt; font-weight: bold;"> 
         <h1><%: Model.WorkpackTitle %> - <%: Model.WorkPackNumber %></h1> 
        </div> 
       </div> 
      </div> 
     </div> 
    </body> 
</html> 
+0

我也嘗試設置addimagehtml寬度和rect.width都相同,以595和800沒有變化 – 2012-04-04 11:40:57

+0

你能不能只使用doc.rendering選項,並設置PDF可72 dpi ?? – davethecoder 2012-04-17 21:13:41

回答

1

沒有看到實際的HTML就很難說了。基本思想是AddImageUrl/AddImageHtml將填充Rect的區域,因此爲了使圖像在最終輸出中更小,您可以減少Rect(因此Rect小於MediaBox)。

或者,您可以減少width參數。例如:

const string kHtml = "<html><img src='https://encrypted.google.com/images/srpr/logo3w.png'></html>"; 

// The img gets smaller and smaller.... 
foreach (var i in Enumerable.Range(1, 5)) 
{ 
    using (var doc = new Doc()) 
    { 
     doc.Rect.String = doc.MediaBox.String = "A4"; 
     doc.AddImageHtml(kHtml, true, 400 * i, true); 
     doc.Save(i + ".pdf"); 
    } 
} 
+0

我已經添加了html,它非常簡單,沒有任何花哨 – 2012-04-05 04:04:11

+0

因此,它應該與上面帶有Google徽標的HTML非常相似?如果是這種情況,也許我們可以使用更簡單的HTML進行測試。運行上面的代碼是否會帶來縮放效果,以便您可以解決圖像分辨率問題? – kizzx2 2012-04-05 09:22:58

+0

看起來像它確實給了我的縮放效果,現在只是找出正確的值,使其看起來像在網頁上查看時一樣的大小 – 2012-04-09 22:48:15