我正在c#和xaml中创建一个Windows 8应用程序。 如何在不启动Windows的pdf阅读器的情况下从此应用程序在我的系统上打印pdf文件。
答案 0 :(得分:2)
如果可以选择商业图书馆,您可以尝试Amyuni PDF Creator for WinRT。
From the documentation,使用此库在C#中打印PDF文件的代码如下所示:
// Printing on a XAML Windows Store Application
// The field AmyuniPDFCreator.PDFCreator m_pdfCreator; contains an instance of the PDFCreator control
TypedEventHandler<PrintManager, PrintTaskRequestedEventArgs> m_printTaskRequestedEventToken;
// Registering the Application View for printing
void RegisterForPrinting()
{
// Request a PrintManager instance
PrintManager printMan = PrintManager.GetForCurrentView();
// Add a handler for printing events.
m_printTaskRequestedEventToken = printMan.PrintTaskRequested += m_pdfCreator.Document.PrintTaskRequestedEventHandler;
}
// Unregistering the Application View for printing
void UnregisterForPrinting()
{
// Remove the handler for printing events.
PrintManager printMan = PrintManager.GetForCurrentView();
printMan.PrintTaskRequested -= m_printTaskRequestedEventToken;
}
有关该库的更多详细信息,请访问here。
免责声明:我目前是图书馆的开发人员
答案 1 :(得分:2)
如果您想使用设备打印,可以在没有任何第三方库的情况下实现此目的。
这不是为了创建或编写&#34; .pdf&#34; [Pdf文件]。为了在没有其他库的情况下实现这一点,您可以尝试将图像直接写入pdf,但我只能在这里参考Pdf文档。
首先,你必须渲染你的PDF格式。您可以使用Windows.Data.Pdf
执行此操作。
您可以查看示例here。 libary将处理Pdf,你会得到一些BitmapImages
。
这个库可以阅读,但不能写#34; .pdf&#34;
现在你必须打印你的图像(渲染的pdf页面)。为此,您可以使用Windows.Graphics.Printing.PrintManager
。
在这种情况下,我不推荐使用msdn示例。
因此,请先了解Windows Store Apps and XAML Based Printing。
你会在这里找到另一个MVVM的打印示例:Printing from MVVM XAML Windows 8 Store apps。
如果您只是按照示例进行操作,那么在纸上打印pdf会有些麻烦。
如何为您的打印机添加自定义设置,请参阅How to add custom settings to the print preview UI (XAML)!
答案 2 :(得分:1)
Windows 8没有用于执行此操作的API,因此您必须在其他地方获取一个 - 能够为您正确呈现PDF的内容,这将意味着一个完整的PDF API与所有钟声和口哨(我不知道任何这些仅支持打印的Windows 8。)
如果只有PDF Sharp有一个WinRT版本,我会在心跳中推荐它......不幸的是它还没有(还)。只有我知道的有WinRT API的是Foxit和Siberix Report Writer。