html图像拉伸
我正在尝试呈现一个包含图像的html页面 我有一个问题,当前的图像大小似乎是双倍的,我的图像是304x112,当它渲染为pdf时是607x224 我确实找到了这个 屏幕分辨率通常为96 dpi。因此,当您查看HTML页面时 在显示器上,Windows将以96 dpi的速度显示 屏幕分辨率与PDF 72 dpi之间的差异 分辨率意味着HTML在打印文档中的显示比它大 在屏幕上看不到 您需要使用72/96(0.75)的刻度来补偿这一点 如果希望两者显示相同的大小 例如,如果要呈现一个值为800的网页 对于宽度参数,您需要设置矩形的宽度 如果希望两者显示为相同大小,则设置为600 及 PDF文档主要基于矢量。就其本身而言,它们并不存在 确实有一个dpi,因为它们是独立于解决方案的。唯一的 基于光栅的PDF部分是图像 HTML的大多数元素——文本、行——都是基于向量的。的确如此 分辨率独立 呈现网页中图像的分辨率为 复杂。假设有一个300平方米的图像被 图像标签。如果您的Doc.Rect的宽度与您选择的宽度相同 传递到AddImageUrl,然后以72 dpi的速度呈现。但是, 更改这两个值之间的比率,将缩放图像 因此,决议将被更改 而且。。。如果您的300方块位于宽度和高度为的img标签中 150,则默认分辨率将加倍 我的问题似乎是第二部分所描述的 我的最终结果将是将输出添加到a4肖像页,以便可以打印(与文档中的其他文本一起打印,但工作正常) 当前渲染时,我使用此html图像拉伸,html,image,resolution,dpi,abcpdf,Html,Image,Resolution,Dpi,Abcpdf,我正在尝试呈现一个包含图像的html页面 我有一个问题,当前的图像大小似乎是双倍的,我的图像是304x112,当它渲染为pdf时是607x224 我确实找到了这个 屏幕分辨率通常为96 dpi。因此,当您查看HTML页面时 在显示器上,Windows将以96 dpi的速度显示 屏幕分辨率与PDF 72 dpi之间的差异 分辨率意味着HTML在打印文档中的显示比它大 在屏幕上看不到 您需要使用72/96(0.75)的刻度来补偿这一点 如果希望两者显示相同的大小 例如,如果要呈现一个值为800的网页
doc.MediaBox.String = pageSize;
doc.Rect.String = pageSize;
doc.AddImageHtml(html, true, width, disableCache);
其中页面大小为“A4”,宽度在addimagehtml调用中设置为800
在设置页面大小后,我尝试将doc.Rect.Width设置为600,并将宽度设置为addimagehtml调用800,但图像仍然呈现不正确
我还缺什么吗
编辑:
要转换的页面的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>
工作包
正文{字体系列:Arial,Helvetica,无衬线;}
"/>
-
如果看不到实际的HTML,很难说。基本思想是AddImageUrl
/AddImageHtml
将填充Rect
的区域,因此为了在最终输出中缩小图像,可以减小Rect
(这样Rect
就比MediaBox
小)
或者,您可以减少宽度
参数。例如:
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");
}
}
const string kHtml=“”;
//img越来越小。。。。
foreach(可枚举范围(1,5)中的var i)
{
使用(var doc=new doc())
{
doc.Rect.String=doc.MediaBox.String=“A4”;
AddImageHtml文件(kHtml,真,400*i,真);
doc.Save(i+“.pdf”);
}
}
我也尝试过将addimagehtml宽度和rect.width设置为595和800,但没有任何更改。你可以不使用doc.rendering选项并将pdf设置为72 dpi吗?我已经添加了html,这非常简单,没有什么特别之处,因此它应该相当于上面带有谷歌徽标的html?如果是这样的话,也许吧我们可以使用更简单的HTML进行测试。运行上述代码是否会给您带来缩放效果,以便您可以解决图像分辨率问题?看起来它确实给了我缩放效果,现在只需找出正确的值,使其看起来与在网页上查看时的大小相同。我努力使其正常工作,但我必须生成文本页面上的所有内容都被缩小了,因此文本大小与其他页面不一致,因为它们没有图像。DanielPowell尽管这是非常意外的,也许你可以简单地缩放
标记本身?同样,很难判断发生了什么但是如果您向ABCpdf的支持电子邮件发送一个完整的独立测试用例(带有exe和HTML+图像/CSS),那么可能会找到一个更优雅的解决方案。