所以,首先我尝试了在SO上发现的类似问题中提出的几个解决方案,但到目前为止我还没有找到一种方法使其发挥作用。
在我看来,我有:
<iframe ng-if="clientPDFUrl" id="clientPDF"
ng-src="{{originURL + clientPDFUrl}}" ng-hide="true">
</iframe>
<iframe ng-if="CACPDFUrl" id="CACPDF"
ng-src="{{originURL + CACPDFUrl}}" ng-hide="true">
</iframe>
然后我有一个这样的模态:
<div class="modal-header">
<h3 class="modal-title">Printing</h3>
</div>
<div class="modal-body">
<button ng-click="localPrintPDF('CACPDF')"
class="btn btn-normal generate-pdf-button">Print for CAC
</button>
<button ng-click="localPrintPDF('clientPDF')"
class="btn btn-normal generate-pdf-button">Print for client
</button>
</div>
<div class="modal-footer">
<button ng-click="cancel()" class="btn btn-normal">Annuler</button>
</div>
最后是控制器:
angular.module('app.edition').controller('printingModalController', [
'$scope', '$rootScope', '$state', '$stateParams', '$modalInstance', 'APIClientService',
function($scope, $rootScope, $state, $stateParams, $modalInstance, APIClientService) {
$scope.localPrintPDF = function(frameId) {
var frameContent = document.getElementById(frameId).contentWindow;
frameContent.document.execCommand('print', false, null);
};
$scope.cancel = function() {
$modalInstance.dismiss(false);
};
}
]);
因此,这在Chrome中运行良好,但使用IE打印空白页。
到目前为止我尝试过的事情:
ng-hide="true"
style="width: 0px; height: 0px;"
frameContent.print()
代替frameContent.document.execCommand('print', false, null);
focus()
print()
window.frames[frameId].print()
(首先使用focus()
)那么,有什么建议让IE上的打印工作?我可以使用别的东西而不是iframe。