📄 gtkprintoperation.sgml
字号:
<!-- ##### SECTION Title ##### -->GtkPrintOperation<!-- ##### SECTION Short_Description ##### -->High-level Printing API<!-- ##### SECTION Long_Description ##### --><para>GtkPrintOperation is the high-level, portable printing API. It looks a bit different than other GTK+ dialogs such as the #GtkFileChooser, since some platforms don't expose enough infrastructure to implementa good print dialog. On such platforms, GtkPrintOperation uses the native print dialog. On platforms which do not provide a native print dialog, GTK+ uses its own, see #GtkPrintUnixDialog.</para><para>The typical way to use the high-level printing API is to create a #GtkPrintOperation object with gtk_print_operation_new() when the user selects to print. Then you set some properties on it, e.g. the page size, any #GtkPrintSettings from previous print operations, the number of pages, the current page, etc. </para><para>Then you start the print operation by calling gtk_print_operation_run().It will then show a dialog, let the user select a printer and options. When the user finished the dialog various signals will be emitted on the #GtkPrintOperation, the main one being ::draw-page, which you are supposed to catch and render the page on the provided #GtkPrintContext using Cairo.</para><example><title>The high-level printing API</title><programlisting>static GtkPrintSettings *settings = NULL;static voiddo_print (void){ GtkPrintOperation *print; GtkPrintOperationResult res; print = gtk_print_operation_new (<!-- -->); if (settings != NULL) gtk_print_operation_set_print_settings (print, settings); g_signal_connect (print, "begin_print", G_CALLBACK (begin_print), NULL); g_signal_connect (print, "draw_page", G_CALLBACK (draw_page), NULL); res = gtk_print_operation_run (print, GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG, GTK_WINDOW (main_window), NULL); if (res == GTK_PRINT_OPERATION_RESULT_APPLY) { if (settings != NULL) g_object_unref (settings); settings = g_object_ref (gtk_print_operation_get_print_settings (print)); } g_object_unref (print);}</programlisting></example><para>By default GtkPrintOperation uses an external application to doprint preview. To implement a custom print preview, an application must connect to the preview signal. The functions gtk_print_operation_print_preview_render_page(), gtk_print_operation_preview_end_preview() and gtk_print_operation_preview_is_selected() are useful when implementing a print preview.</para><para>Printing support was added in GTK+ 2.10.</para><!-- ##### SECTION See_Also ##### --><para>#GtkPrintContext, #GtkPrintUnixDialog</para><!-- ##### SECTION Stability_Level ##### --><!-- ##### STRUCT GtkPrintOperation ##### --><para></para><!-- ##### SIGNAL GtkPrintOperation::begin-print ##### --><para></para>@printoperation: @context: <!-- ##### SIGNAL GtkPrintOperation::create-custom-widget ##### --><para></para>@printoperation: @Returns: <!-- ##### SIGNAL GtkPrintOperation::custom-widget-apply ##### --><para></para>@printoperation: @widget: <!-- ##### SIGNAL GtkPrintOperation::done ##### --><para></para>@printoperation: the object which received the signal.@arg1: <!-- ##### SIGNAL GtkPrintOperation::draw-page ##### --><para></para>@printoperation: the object which received the signal.@arg1: @arg2: <!-- ##### SIGNAL GtkPrintOperation::end-print ##### --><para></para>@printoperation: the object which received the signal.@arg1: <!-- ##### SIGNAL GtkPrintOperation::paginate ##### --><para></para>@printoperation: the object which received the signal.@arg1: @Returns: <!-- ##### SIGNAL GtkPrintOperation::preview ##### --><para></para>@printoperation: the object which received the signal.@arg1: @arg2: @arg3: @Returns: <!-- ##### SIGNAL GtkPrintOperation::request-page-setup ##### --><para></para>@printoperation: the object which received the signal.@arg1: @arg2: @arg3: <!-- ##### SIGNAL GtkPrintOperation::status-changed ##### --><para></para>@printoperation: the object which received the signal.<!-- ##### ARG GtkPrintOperation:allow-async ##### --><para></para><!-- ##### ARG GtkPrintOperation:current-page ##### --><para></para><!-- ##### ARG GtkPrintOperation:custom-tab-label ##### --><para></para><!-- ##### ARG GtkPrintOperation:default-page-setup ##### --><para></para><!-- ##### ARG GtkPrintOperation:export-filename ##### --><para></para><!-- ##### ARG GtkPrintOperation:job-name ##### --><para></para><!-- ##### ARG GtkPrintOperation:n-pages ##### --><para></para><!-- ##### ARG GtkPrintOperation:print-settings ##### --><para></para><!-- ##### ARG GtkPrintOperation:show-progress ##### --><para></para><!-- ##### ARG GtkPrintOperation:status ##### --><para></para><!-- ##### ARG GtkPrintOperation:status-string ##### --><para></para><!-- ##### ARG GtkPrintOperation:track-print-status ##### --><para></para><!-- ##### ARG GtkPrintOperation:unit ##### --><para></para><!-- ##### ARG GtkPrintOperation:use-full-page ##### --><para></para><!-- ##### ENUM GtkPrintStatus ##### --><para>The status gives a rough indication of the completionof a running print operation.</para>@GTK_PRINT_STATUS_INITIAL: The printing has not started yet; this status is set initially, and while the print dialog is shown.@GTK_PRINT_STATUS_PREPARING: This status is set while the begin-print signal is emitted and during pagination.@GTK_PRINT_STATUS_GENERATING_DATA: This status is set while the pages are being rendered.@GTK_PRINT_STATUS_SENDING_DATA: The print job is being sent off to the printer.@GTK_PRINT_STATUS_PENDING: The print job has been sent to the printer, but is not printed for some reason, e.g. the printer may be stopped.@GTK_PRINT_STATUS_PENDING_ISSUE: Some problem has occurred during printing, e.g. a paper jam.@GTK_PRINT_STATUS_PRINTING: The printer is processing the print job.@GTK_PRINT_STATUS_FINISHED: The printing has been completed successfully.@GTK_PRINT_STATUS_FINISHED_ABORTED: The printing has been aborted.<!-- ##### ENUM GtkPrintOperationAction ##### --><para>The @action parameter to gtk_print_operation_run()determines what action the print operation should perform.</para>@GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG: Show the print dialog.@GTK_PRINT_OPERATION_ACTION_PRINT: Start to print without showing the print dialog, based on the current print settings.@GTK_PRINT_OPERATION_ACTION_PREVIEW: Show the print preview.@GTK_PRINT_OPERATION_ACTION_EXPORT: Export to a file. This requires the export-filename property to be set.<!-- ##### ENUM GtkPrintOperationResult ##### --><para>A value of this type is returned by gtk_print_operation_run().</para>@GTK_PRINT_OPERATION_RESULT_ERROR: An error has occured.@GTK_PRINT_OPERATION_RESULT_APPLY: The print settings should be stored.@GTK_PRINT_OPERATION_RESULT_CANCEL: The print operation has been canceled, the print settings should not be stored.@GTK_PRINT_OPERATION_RESULT_IN_PROGRESS: The print operation is complete yet. This value will only be returned when running asynchronously.<!-- ##### ENUM GtkPrintError ##### --><para></para>@GTK_PRINT_ERROR_GENERAL: @GTK_PRINT_ERROR_INTERNAL_ERROR: @GTK_PRINT_ERROR_NOMEM: @GTK_PRINT_ERROR_INVALID_FILE: <!-- ##### MACRO GTK_PRINT_ERROR ##### --><para>The #GQuark used for #GtkPrintError errors.</para><!-- ##### FUNCTION gtk_print_operation_new ##### --><para></para>@Returns: <!-- ##### FUNCTION gtk_print_operation_set_allow_async ##### --><para></para>@op: @allow_async: <!-- ##### FUNCTION gtk_print_operation_get_error ##### --><para></para>@op: @error: <!-- ##### FUNCTION gtk_print_operation_set_default_page_setup ##### --><para></para>@op: @default_page_setup: <!-- ##### FUNCTION gtk_print_operation_get_default_page_setup ##### --><para></para>@op: @Returns: <!-- ##### FUNCTION gtk_print_operation_set_print_settings ##### --><para></para>@op: @print_settings: <!-- ##### FUNCTION gtk_print_operation_get_print_settings ##### --><para></para>@op: @Returns: <!-- ##### FUNCTION gtk_print_operation_set_job_name ##### --><para></para>@op: @job_name: <!-- ##### FUNCTION gtk_print_operation_set_n_pages ##### --><para></para>@op: @n_pages: <!-- ##### FUNCTION gtk_print_operation_set_current_page ##### --><para></para>@op: @current_page: <!-- ##### FUNCTION gtk_print_operation_set_use_full_page ##### --><para></para>@op: @full_page: <!-- ##### FUNCTION gtk_print_operation_set_unit ##### --><para></para>@op: @unit: <!-- ##### FUNCTION gtk_print_operation_set_export_filename ##### --><para></para>@op: @filename: <!-- ##### FUNCTION gtk_print_operation_set_show_progress ##### --><para></para>@op: @show_progress: <!-- ##### FUNCTION gtk_print_operation_set_track_print_status ##### --><para></para>@op: @track_status: <!-- ##### FUNCTION gtk_print_operation_set_custom_tab_label ##### --><para></para>@op: @label: <!-- ##### FUNCTION gtk_print_operation_run ##### --><para></para>@op: @action: @parent: @error: @Returns: <!-- ##### FUNCTION gtk_print_operation_cancel ##### --><para></para>@op: <!-- ##### FUNCTION gtk_print_operation_get_status ##### --><para></para>@op: @Returns: <!-- ##### FUNCTION gtk_print_operation_get_status_string ##### --><para></para>@op: @Returns: <!-- ##### FUNCTION gtk_print_operation_is_finished ##### --><para></para>@op: @Returns: <!-- ##### FUNCTION gtk_print_run_page_setup_dialog ##### --><para></para>@parent: @page_setup: @settings: @Returns: <!-- ##### USER_FUNCTION GtkPageSetupDoneFunc ##### --><para>The type of function that is passed to gtk_print_run_page_setup_dialog_async().This function will be called when the page setup dialog is dismissed, andalso serves as destroy notify for @data.</para>@page_setup: the #GtkPageSetup that has been@data: user data that has been passed to gtk_print_run_page_setup_dialog_async().<!-- ##### FUNCTION gtk_print_run_page_setup_dialog_async ##### --><para></para>@parent: @page_setup: @settings: @done_cb: @data: <!-- ##### STRUCT GtkPrintOperationPreview ##### --><para></para><!-- ##### FUNCTION gtk_print_operation_preview_end_preview ##### --><para></para>@preview: <!-- ##### FUNCTION gtk_print_operation_preview_is_selected ##### --><para></para>@preview: @page_nr: @Returns: <!-- ##### FUNCTION gtk_print_operation_preview_render_page ##### --><para></para>@preview: @page_nr:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -