【问题标题】:How to remove/change print document margin in printTask?如何在 printTask 中删除/更改打印文档边距?
【发布时间】:2015-05-25 10:31:37
【问题描述】:

我想知道如何实现无边框打印。

目前我的输出如下所示:

我想让图像从最左上角开始。这可能吗?我已经尝试为我的打印样式框设置负边距,但图像会被剪切。

我知道也许并非所有打印机都能够打印边框区域,但在我的用例中,这些区域的图片将是白色的。 (山图仅用于演示目的)

我可以通过 printTask 以某种方式指定文档边框吗?

查看我当前的设置:

HTML:

<div id="pdf-render-output"></div>

CSS:

body > #pdf-render-output {
    display: none;
}

@media print {

    body > * {
       display:none;
       max-width: 100%;
    }

    html {
       max-width: 100%;
       border-top: 0;
    }

    body > #pdf-render-output {
        display: block;
        border: none;
        max-width: 100%;
        width: 100%;
        height: 100%;
        position: relative;
        margin: 0; /* I tried to set negative margin/padding eg. here */
        padding: 0;
    }

}

JS:

$('#pdf-render-output').append("<img src="..." style=\"width: 100%\" />");

我尝试了所有可能的边距/填充和其他东西,但是图像会被剪切并且白色边框会保持在“上方”。

我希望可能有一个我错过了浏览 msdn 的 printTask 选项?

更新: 我尝试使用 !important 设置所有边距/填充/边框值。没变。 这是模拟器的屏幕截图,仅显示 print-css 样式:

我认为这是 printTask 本身的问题。关于这个问题有什么选择吗?

【问题讨论】:

  • 您有与此相关的任何代码吗?所以请把它贴在你指定边距的地方,或者放置你的图片?
  • @AshishMishra 请查看我更新的问题!
  • var img = $('&lt;img /&gt;'); img.css({'position:absolute;top:0px;left:0px;width:100%;height:100%;background-color:red'}); $('#pdf-render-output').append(img); 请试试这个..
  • 感谢您的回答,但遗憾的是边界保持不变。我认为绝对定位不是这里的关键。 填充/边距可能有问题吗? (我已经尝试将其设置为 0,但没有改变)。或者,如果您考虑普通程序的常见打印可能性:有时您可以在此处指定边框宽度。也许 WinJS 有类似的地方?
  • 我建议你将body,html 和另一个elements 设置为margin:0!important 和相同的边框宽度,填充使用!important 然后尝试它,可能是它是动态分配的。并且在调试时查看您的DOM,在那里您可以找到原因。

标签: javascript html printing winjs windows-8.1


【解决方案1】:

如果将 DocumentSource 的边距值设置为 0,间隙将大大减小。但是,与 C#+XAML 的 PrintTask 相比,上边距(可能是页眉/页脚区域)做了一点。

var printTask = printEvent.request.createPrintTask("Print Sample", function (args) {
    var src = MSApp.getHtmlPrintDocumentSource(document);
    src.rightMargin = 0;
    src.leftMargin = 0;
    src.topMargin = 0;
    src.bottomMargin = 0;
    src.shrinkToFit = false;
    args.setSource(src);
}

在我的环境中,当使用这个 CSS 时,它已经删除了边距,而无需 src.rightMargin 等。

@page {
    margin:0cm;
}

【讨论】:

  • @page 成功了!非常感谢。这应该记录在某个地方......(或者我只是错过了它?)
  • 我有同样的问题,它对我不起作用。它只是稍微减少右边距(不是全部),但上边距是相同的。我没有尝试使用@page css 属性,不要将它放在我的文档上,因为我手动创建了文档。
  • @page 也对我有用。以及 malte 的说法:它没有记录在任何地方,但它应该是
  • 如果我像这样创建我的文档片段: var container = document.createElement("div"); container.innerHTML = "
    " + "这是一些内容" + "
    ";那就是我正在打印的文件,在哪里/如何放置@page {margin: 0cm}?
猜你喜欢
  • 2020-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-06
  • 1970-01-01
  • 1970-01-01
  • 2016-08-24
  • 2014-05-11
相关资源
最近更新 更多