html图像拉伸

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的网页

我正在尝试呈现一个包含图像的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肖像页,以便可以打印(与文档中的其他文本一起打印,但工作正常)

当前渲染时,我使用此

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),那么可能会找到一个更优雅的解决方案。