目前,在UWP中有很多用於生成PDF的第三方付費軟件包,例如Syncfusion和XFinium。對於在UWP中不可用的免費圖書館,如PDFSharp。既然你不想付費,你可以考慮用免費庫創建經典應用程序,然後創建一個AppService來處理它。詳情請參考AppServiceBridgeSample。
有一個XAML網頁和PDF通過打印
生成由printing功能的PDF可以很好地工作轉換。但是由於您的要求「通過隱藏的打印對話框」是不可能的,打印用戶界面無法隱藏打印。
不要用的WebView和HTML類似的東西
開放jsPDF庫可以幫助你的JavaScript生成HTML到PDF。您可以從WebView
獲得InvokeScriptAsync
返回的PDF結果。例如:
的JavaScript
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.4/jspdf.debug.js"></script>
<script type='text/javascript'>
function print() {
var doc = new jsPDF()
doc.text('Hello world!', 10, 10);
doc.circle(50, 50, 50);
var pdfresult = doc.output();
document.getElementById('myDiv').innerText = pdfresult;
//doc.save('a4.pdf');
return pdfresult;
}
</script>
</head>
<body>
<div id='myDiv'>Hello</div>
</body>
</html>
的WebView
Webview.Navigate(new Uri("ms-appx-web:///Assets/test.html"));
string pdfresult = await Webview.InvokeScriptAsync("eval", new string[] { "print()" });
StorageFile pdf = await ApplicationData.Current.LocalFolder.CreateFileAsync("test.pdf");
await FileIO.WriteTextAsync(pdf, pdfresult);
畢竟,你可以考慮自己寫的PDF文件格式。 Here是Windows Phone的文檔,但您仍可參考。