3

我正在用 c# 和 xaml 创建一个 Windows 8 应用程序。如何在不启动 Windows 的 pdf 阅读器的情况下从这个应用程序在我的系统上打印 pdf 文件。

4

3 回答 3

2

如果您想用设备打印它,可以在没有任何第三方库的情况下实现这一点。

这不适用于创建或编写“.pdf”[Pdf 文件)。为了在没有其他库的情况下实现这一点,您可以尝试将图像直接写入 pdf,但我只能在此处参考 Pdf 文档。

首先你必须渲染你的pdf。您可以使用Windows.Data.Pdf. 您可以在这里查看一个示例。该库将处理 Pdf,您会得到一些BitmapImages渲染。这个库可以读,但不能写“.pdf”

现在你必须打印你的图像(渲染的 pdf 页面)。为此,您采用Windows.Graphics.Printing.PrintManager. 在这种情况下,我不推荐使用 msdn 示例。因此,请先了解一下Windows 应用商店应用程序和基于 XAML 的打印

您将在此处找到另一个使用 MVVM 的打印示例:从 MVVM XAML Windows 8 Store 应用程序打印

如果您只是按照示例进行操作,那么在纸上打印 pdf 会有些麻烦。

如何为您的打印机添加自定义设置在如何将自定义设置添加到打印预览 UI (XAML) 中进行了说明!

于 2014-10-20T19:18:43.740 回答
2

如果可以选择商业图书馆,您可以尝试Amyuni PDF Creator for WinRT

从文档中,使用此库在 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;
}

可以在此处找到有关该库的更多详细信息。

免责声明:我目前是该库的开发人员

于 2013-04-22T13:24:31.947 回答
1

Windows 8 没有执行此操作的 API,因此您必须在其他地方获得一个 - 能够为您正确呈现 PDF 的东西,这将意味着一个完整的 PDF API 与所有的花里胡哨(对于仅支持打印的 Windows 8,我不知道其中的任何一个)。

如果只有PDF Sharp有 WinRT 版本,我会立即推荐它......不幸的是它没有(还)。我知道只有FoxitSiberix Report Writer有 WinRT 的 API 。

于 2012-12-05T17:48:34.377 回答