是否可以在UWP应用中将HTML字符串转换为PDF文件? 我在常规.NET应用程序中看到了很多不同的方法(似乎有很多第三方库),但我还没有看到它可以在Universal /中完成的方式UWP应用程序有谁知道怎么做?
也许有一些方法可以加入" Microsoft Print to PDF"选项,如果没有纯代码解决方案?
或者是否有一种迂回的方式,也许就像在C#UWP应用程序中使用Javascript和https://github.com/MrRio/jsPDF一样?我不确定,抓着稻草......
我已经将Grace Feng-MSFT提供的解决方案标记为正确,以证明可以通过在打印对话框中使用Microsoft Print to PDF选项将HTML转换为PDF。谢谢
答案 0 :(得分:2)
如果没有纯代码解决方案,也许有一些方法可以勾选“Microsoft Print to PDF”选项?
是的,但是使用这种方式,您需要首先在RichEditBox
或TextBlock
等控件中显示您的HTML字符串,只有UIElement
可以是可打印的内容。
您也可以自己创建PDF文件,这是PDF中使用的基本语法:
您可以使用BT
和ET
创建段落:
以下是C#中的示例:
StringBuilder sb = new StringBuilder();
sb.AppendLine("BT"); // BT = begin text object, with text-units the same as userspace-units
sb.AppendLine("/F0 40 Tf"); // Tf = start using the named font "F0" with size "40"
sb.AppendLine("40 TL"); // TL = set line height to "40"
sb.AppendLine("230.0 400.0 Td"); // Td = position text point at coordinates "230.0", "400.0"
sb.AppendLine("(Hello World)'");
sb.AppendLine("/F2 20 Tf");
sb.AppendLine("20 TL");
sb.AppendLine("0.0 0.2 1.0 rg"); // rg = set fill color to RGB("0.0", "0.2", "1.0")
sb.AppendLine("(This is StackOverflow)'");
sb.AppendLine("ET");
然后您可以创建PDF文件并将其保存到此文件中。但是既然你想将HTML转换为PDF,那可能是一项艰苦的工作,我想你不想这样做。
或者是否有一种迂回的方式,也许就像在C#UWP应用程序中使用Javascript和https://github.com/MrRio/jsPDF一样?我不确定,抓着稻草......
老实说,使用Libs或Web服务将HTML转换为PDF也是一种方法,有很多我只是搜索它们,但我找不到任何可以在WinRT中使用的。所以我认为这里最实用的方法是第一个,挂钩到Microsoft Print to PDF。为此,您可以查看官方Printing sample。
<强>更新强>
使用@Jerry Nixon - How do I print WebView content in a Windows Store App?中的MSFT代码,这是一个很好的样本。我刚刚在NavigationCompleted
的{{1}}事件中添加了一些用于添加打印页面的代码:
WebView
然后在private async void webView_NavigationCompleted(WebView sender, WebViewNavigationCompletedEventArgs args)
{
MyWebViewRectangle.Fill = await GetWebViewBrush(webView);
MyPrintPages.ItemsSource = await GetWebPages(webView, new Windows.Foundation.Size(842, 595));
}
事件中(printDoc是printDoc.AddPages += PrintDic_AddPages;
的实例):
PrintDocument
对于其他代码,您可以参考官方打印样本。