我正在使用UWP应用程序,这是我动态生成PDF文件所需的一项要求。
我需要一些约束/要求来协调:
关于如何处理这个问题我有几点想法:
过去有没有人取得类似的成绩?如果有的话 - 你采取了什么方法?
答案 0 :(得分:2)
目前,有许多第三方付费软件包用于在UWP中生成PDF,例如Syncfusion和XFinium。对于像PDFSharp这样在UWP中不可用的免费库。由于您不想要付费的,您可以考虑使用免费库创建经典应用程序,然后创建一个AppService来处理它。有关详细信息,请参阅AppServiceBridgeSample。
拥有XAML页面并通过打印将其转换为PDF
通过printing功能生成PDF可以很好地工作。但是根据您的要求"通过隐藏的打印对话框"不可能,打印UI无法隐藏打印。
使用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>
web视图
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手机的文档,但您仍可以参考。