0

我正在尝试使用黑色背景图像打印白色文本,但它仅在我们启用“打印背景(颜色和图像)时才有效。有没有办法通过 jquery 或其他解决方法来解决这个问题。这是我的示例代码。

<script type="text/javascript">
  $(function () {
    var print = $('.printButton');
    print.bind('mousedown', function () {
             $('.FirstName').attr("style", "background: transparent !important;color:#FFEFD5;-webkit-print-color-adjust: exact;");
              window.print();
             });
         });
</script>

<div >
    <div >
        <asp:Image runat="server" ID="imgIO" ImageUrl="/css/Images/Img-Black.jpg" />
      </div>
      <div class="FirstName">Hello</div>
</div>

<div>
   <div class="printButton">
       <asp:Button runat="server" ID="Button2"  />
   </div>
</div>


.FirstName {
    color: #eee;
    font-size: 11px;
    font-weight: bold;
    position: absolute;
    top: 15px;
    left: 72px;  
}
.printButton {
    margin: 0 -3px 0 0;
    float: right;
    font-family: Arial;
    direction: ltr;
}

我验证了这个链接我可以强制文本打印为白色吗?已经,但我无法找到解决方案。

谁能帮我解决这个问题。

非常感谢安娜

4

3 回答 3

1

解决方法:动态生成图像。服务器中的图像生成非常简单,也相对便宜。想想验证码,但要使用您的颜色、字体、选择的文本等。

即使从动态文本生成也不应该是太大的挑战。动画会更难,但可能是可行的,如果你要打印它,derp!

于 2013-04-23T06:35:49.847 回答
0

不能。网站不能更改浏览器设置。

如果网站上的 javascript 可以改变浏览器中的用户偏好,那将是一个重大的安全漏洞。

想象一下,如果网站可以在浏览器中启用弹出窗口。

于 2013-04-23T05:42:20.983 回答
0

根据 Nenotlep 的建议,我得到了答案。这是我下面的代码来解决我的问题。

private void LoadBlackImage(string imageUrl, string firstName, string lastName, string Number, string Date)
        {
            Bitmap bitMapImage = new Bitmap(Server.MapPath(imageUrl));
            Graphics graphicImage = Graphics.FromImage(bitMapImage);
            SolidBrush drawBrush = new SolidBrush(Color.White);

            HtmlGenericControl dynImage = new HtmlGenericControl("img");
            dynImage.ID = "imgBlack";
            dynImage.Attributes.Add("runat", "server");


            //Smooth graphics is nice.
            graphicImage.SmoothingMode = SmoothingMode.AntiAlias;
            //Write your text.
            graphicImage.DrawString(firstName, new Font("Arial", 8, FontStyle.Regular), drawBrush, new Point(50, 70));
            graphicImage.DrawString(lastName, new Font("Arial", 8, FontStyle.Regular), drawBrush, new Point(50, 85));
            graphicImage.DrawString(Number, new Font("Arial", 8, FontStyle.Regular), drawBrush, new Point(50, 100));
            graphicImage.DrawString(Date, new Font("Arial", 8, FontStyle.Regular), drawBrush, new Point(50, 115));

            //Save the new image to the response output stream.
            MemoryStream ms = new MemoryStream();
            bitMapImage.Save(ms, ImageFormat.Jpeg);
            var base64Data = Convert.ToBase64String(ms.ToArray());
            //lblGiftCardRightIO.Src = "data:image/jpeg;base64," + base64Data;
            dynImage.Attributes.Add("src", "data:image/jpeg;base64," + base64Data);
            divControl.Controls.Add(dynImage);

            //Clean house.
            graphicImage.Dispose();
            bitMapImage.Dispose();
        }

谢谢大家的时间和帮助

非常感谢安娜

于 2013-04-23T12:02:01.633 回答