{"id":4632,"date":"2023-04-05T08:04:36","date_gmt":"2023-04-05T06:04:36","guid":{"rendered":"https:\/\/mariusbancila.ro\/blog\/?p=4632"},"modified":"2023-04-05T08:15:48","modified_gmt":"2023-04-05T06:15:48","slug":"using-microsoft-edge-in-a-native-windows-desktop-app-part-6","status":"publish","type":"post","link":"https:\/\/mariusbancila.ro\/blog\/2023\/04\/05\/using-microsoft-edge-in-a-native-windows-desktop-app-part-6\/","title":{"rendered":"Using Microsoft Edge in a native Windows desktop app \u2013 part 6"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">The WebView2 control supports different printing scenarios. In this new article, I&#8217;ll show you how to display a print dialog and, respectively, how to print to PDF.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p class=\"wp-block-paragraph\">Articles in this series:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/mariusbancila.ro\/blog\/2020\/01\/28\/using-microsoft-edge-in-a-native-windows-desktop-app-part-1\/\" target=\"_blank\" rel=\"noreferrer noopener\">Part 1: Introduction to Edge and WebView2<\/a><\/li><li><a href=\"https:\/\/mariusbancila.ro\/blog\/2020\/01\/29\/using-microsoft-edge-in-a-native-windows-desktop-app-part-2\/\" target=\"_blank\" rel=\"noreferrer noopener\">Part 2: Creating a WebView2 component<\/a><\/li><li><a href=\"https:\/\/mariusbancila.ro\/blog\/2020\/01\/30\/using-microsoft-edge-in-a-native-windows-desktop-app-part-3\/\" target=\"_blank\" rel=\"noreferrer noopener\">Part 3: Navigation and other events<\/a><\/li><li><a href=\"https:\/\/mariusbancila.ro\/blog\/2021\/01\/27\/using-microsoft-edge-in-a-native-windows-desktop-app-part-4\/\" target=\"_blank\" rel=\"noreferrer noopener\">Part 4: Performing navigation with custom data and headers<\/a><\/li><li><a href=\"https:\/\/mariusbancila.ro\/blog\/2023\/03\/21\/using-microsoft-edge-in-a-native-windows-desktop-app-part-5\/\" target=\"_blank\" rel=\"noopener\" title=\"\">Part 5: Executing JavaScript code<\/a><\/li><li>Part 6: Printing a web page<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Printing APIs<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The WebView2 control is constantly evolving, with new capabilities added with each new release. However, this actually poses a problem with the API. Since existing COM interfaces should be stable, every new additions are made to a new interface. At the point of writing this article, there is <code>ICoreWebView2<\/code>, <code>ICoreWebView2_2<\/code>, <code>ICoreWebView2_3<\/code>, up to <code>ICoreWebView2_17<\/code>. There are also <code>ICoreWebView2Environment<\/code>, <code>ICoreWebView2Environment2<\/code> and up to <code>ICoreWebView2Environment12<\/code>, <code>ICoreWebView2EnvironmentOptions<\/code> and up to <code>ICoreWebView2EnvironmentOptions5<\/code>, <code>ICoreWebView2Settings<\/code> and up to <code>ICoreWebView2Settings7<\/code>, and so on and so forth. If you ask me, the API is becoming cumbersome, but that&#8217;s the way it is and we have to live with it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The printing APIs are the following:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/learn.microsoft.com\/en-us\/microsoft-edge\/webview2\/reference\/win32\/icorewebview2_7?view=webview2-1.0.1661.34\" target=\"_blank\" rel=\"noopener\" title=\"\">ICoreWebView2_7<\/a> interface contains <code>PrintToPdf<\/code> (prints the current web page as a PDF document)<\/li><li><a href=\"https:\/\/learn.microsoft.com\/en-us\/microsoft-edge\/webview2\/reference\/win32\/icorewebview2_16?view=webview2-1.0.1661.34\" target=\"_blank\" rel=\"noopener\" title=\"\">ICoreWebView2_16<\/a> interface contains <code>Print<\/code> (to print the current page to the specified printer, with the specified settings), <code>PrintToPdfStream<\/code> (prints the current web page as PDF to a stream), and <code>ShowPrintUI<\/code> (opens a print dialog).<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">In this article, we will discuss <code>PrintToPdf()<\/code> and <code>ShowPrintUI()<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We&#8217;ll modify the existing demo application with new options on the toolbar, as shown in the following image:<\/p>\n\n\n\n<div class=\"wp-block-uagb-image uagb-block-0247e184 wp-block-uagb-image--layout-default wp-block-uagb-image--effect-static wp-block-uagb-image--align-none\"><figure class=\"wp-block-uagb-image__figure\"><a class=\"\" href=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2023\/04\/toolbar.png\" target=\"\" rel=\"noopener\"><img decoding=\"async\" src=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2023\/04\/toolbar.png\" alt=\"\" class=\"uag-image-4634\" width=\"1087\" height=\"135\" title=\"\" loading=\"lazy\" \/><\/a><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Displaying a printing dialog<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The first option that we&#8217;ll address is displaying the print dialog. For this purpose, we&#8217;ll use the <a href=\"https:\/\/learn.microsoft.com\/en-us\/microsoft-edge\/webview2\/reference\/win32\/icorewebview2_16?view=webview2-1.0.1661.34#showprintui\" target=\"_blank\" rel=\"noopener\" title=\"\">ICoreWebView2_16::ShowPrintUI()<\/a> method. It has a single parameter, an enumeration that specifies the kind of dialog to display: system&#8217;s default or browser specific. Using this method is straight forward:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">void CWebBrowser::ShowPrintUI(bool const systemDialog)\n{\n   if (m_pImpl->m_webView != nullptr)\n   {\n      CHECK_FAILURE(m_pImpl->m_webView2_16->ShowPrintUI(systemDialog ? COREWEBVIEW2_PRINT_DIALOG_KIND_SYSTEM : \n                                                                       COREWEBVIEW2_PRINT_DIALOG_KIND_BROWSER));\n   }   \n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Here is the result of running with either option:<\/p>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2023\/04\/printersystem.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1064\" height=\"917\" data-id=\"4635\" src=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2023\/04\/printersystem.png\" alt=\"\" class=\"wp-image-4635\" srcset=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2023\/04\/printersystem.png 1064w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2023\/04\/printersystem-300x259.png 300w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2023\/04\/printersystem-700x603.png 700w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2023\/04\/printersystem-768x662.png 768w\" sizes=\"auto, (max-width: 1064px) 100vw, 1064px\" \/><\/a><figcaption>System print dialog<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2023\/04\/printerbrowser.png\"><img loading=\"lazy\" decoding=\"async\" width=\"944\" height=\"734\" data-id=\"4636\" src=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2023\/04\/printerbrowser.png\" alt=\"\" class=\"wp-image-4636\" srcset=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2023\/04\/printerbrowser.png 944w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2023\/04\/printerbrowser-300x233.png 300w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2023\/04\/printerbrowser-700x544.png 700w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2023\/04\/printerbrowser-768x597.png 768w\" sizes=\"auto, (max-width: 944px) 100vw, 944px\" \/><\/a><figcaption>Browser print dialog<\/figcaption><\/figure>\n<\/figure>\n<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Printing to PDF<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Printing to a PDF document is a very popular option nowadays. It&#8217;s no surprise it was the first printing feature supported by the WebView2 control. For this, we will use the <a href=\"https:\/\/learn.microsoft.com\/en-us\/microsoft-edge\/webview2\/reference\/win32\/icorewebview2_7?view=webview2-1.0.1661.34#printtopdf\" target=\"_blank\" rel=\"noopener\" title=\"\">ICoreWebView2_7::PrintToPdf()<\/a> method. This method has two parameters: a pointer to a printer settings object and a completion handler (that is called when the operation has completed). If the first argument is set to null, the default printer settings are being used.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here is how this method can be used:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">void CWebBrowser::PrintToPDF(bool const landscape, std::function&lt;void(bool, CString)> callback)\n{\n   WCHAR defaultName[MAX_PATH] = L\"default.pdf\";\n\n   OPENFILENAME openFileName = {};\n   openFileName.lStructSize   = sizeof(openFileName);\n   openFileName.hwndOwner     = nullptr;\n   openFileName.hInstance     = nullptr;\n   openFileName.lpstrFile     = defaultName;\n   openFileName.lpstrFilter   = L\"PDF File\\0*.pdf\\0\";\n   openFileName.nMaxFile      = MAX_PATH;\n   openFileName.Flags         = OFN_OVERWRITEPROMPT;\n\n   if (::GetSaveFileName(&amp;openFileName))\n   {\n      wil::com_ptr&lt;ICoreWebView2PrintSettings> printSettings = nullptr;\n      wil::com_ptr&lt;ICoreWebView2Environment6> webviewEnvironment6;\n      CHECK_FAILURE(m_pImpl->m_webViewEnvironment->QueryInterface(IID_PPV_ARGS(&amp;webviewEnvironment6)));\n\n      if (webviewEnvironment6)\n      {\n         CHECK_FAILURE(webviewEnvironment6->CreatePrintSettings(&amp;printSettings));\n         CHECK_FAILURE(printSettings->put_Orientation(landscape ? COREWEBVIEW2_PRINT_ORIENTATION_LANDSCAPE : \n                                                                  COREWEBVIEW2_PRINT_ORIENTATION_PORTRAIT));\n      }\n\n      wil::com_ptr&lt;ICoreWebView2_7> webview2_7;\n      CHECK_FAILURE(m_pImpl->m_webView->QueryInterface(IID_PPV_ARGS(&amp;webview2_7)));\n      if (webview2_7)\n      {\n         m_printToPdfInProgress = true;\n\n         CHECK_FAILURE(webview2_7->PrintToPdf(\n            openFileName.lpstrFile, \n            printSettings.get(),\n            Callback&lt;ICoreWebView2PrintToPdfCompletedHandler>(\n               [this, callback, &amp;openFileName](HRESULT errorCode, BOOL isSuccessful) -> HRESULT {\n                  CHECK_FAILURE(errorCode);\n\n                  m_printToPdfInProgress = false;\n\n                  callback(isSuccessful, openFileName.lpstrFile);\n\n                  return S_OK;\n               })\n            .Get()));\n      }\n   }\n}\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">There are several things happening here:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>First, a path for the destination PDF file is being requested from the user.<\/li><li>A printer settings object is created and the selected orientation is being set. The portrait orientation is the default, so if no other options are set, creating a print settings object is not really necessary. You can just pass null.<\/li><li>A pointer to the <code>ICoreWebView2_7<\/code> interface is retrieved so that we can invoke the <code>PrintToPdf()<\/code> method.<\/li><li>Upon completion of the print job, the provided callback is invoked.<\/li><li>A Boolean flag, <code>m_printToPdfInProgress<\/code> is used to indicate that a printing operation is in progress. This is then used elsewhere in the application to ensure a second operation is not started until the current one completes. This is because a single print operation can execute at any given point. If any of the available print methods (listed in the beginning) are invoked while a print job is in process, the completion handler is invoked immediately with the <code>isSuccessful<\/code> argument set to <code>FALSE<\/code>.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The following snippet shows the code in the main frame that invokes the PDF printing. Here you can notice the check of the print-in-progress flag:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">void CMainFrame::OnButtonPrintToPdf()\n{\n   auto view = dynamic_cast&lt;CMfcEdgeDemoView*>(GetActiveView());\n   if (view != nullptr)\n   {\n      if (view->IsPrintToPdfInProgress())\n      {\n         ::MessageBox(\n            nullptr,\n            L\"A PDF file is currently printing. Please wait until the operation completes.\",\n            L\"Warning\",\n            MB_OK|MB_ICONEXCLAMATION);\n\n         return;\n      }\n\n      CButton* check = (CButton*)m_wndDlgBar.GetDlgItem(IDC_CHECK_LANDSCAPE);\n\n      view->PrintToPDF(check->GetCheck() == BST_CHECKED, [](bool const isSuccessful, CString path) {\n         if (isSuccessful)\n         {\n            auto result = ::MessageBox(\n               nullptr,\n               L\"Print to PDF succeeded. Would you like to open the document?\",\n               L\"Print to PDF completed\",\n               MB_YESNO);\n            \n            if (result == IDYES)\n            {\n               ShellExecute(0, 0, path, 0, 0, SW_SHOW);\n            }\n         }\n         else\n         {\n            ::MessageBox(\n               nullptr,\n               L\"Print to PDF failed\",\n               L\"Print to PDF completed\",\n               MB_OK);\n         }\n      });\n   }\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">In the next images, you can see the PDFs created from the web page, with portrait and landscape orientation:<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2023\/04\/pdfportrait.png\"><img loading=\"lazy\" decoding=\"async\" width=\"700\" height=\"604\" data-id=\"4639\" src=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2023\/04\/pdfportrait-700x604.png\" alt=\"\" class=\"wp-image-4639\" srcset=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2023\/04\/pdfportrait-700x604.png 700w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2023\/04\/pdfportrait-300x259.png 300w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2023\/04\/pdfportrait-768x662.png 768w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2023\/04\/pdfportrait.png 944w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/a><figcaption>Portrait orientation<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2023\/04\/pdflandscape.png\"><img loading=\"lazy\" decoding=\"async\" width=\"700\" height=\"604\" data-id=\"4638\" src=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2023\/04\/pdflandscape-700x604.png\" alt=\"\" class=\"wp-image-4638\" srcset=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2023\/04\/pdflandscape-700x604.png 700w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2023\/04\/pdflandscape-300x259.png 300w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2023\/04\/pdflandscape-768x662.png 768w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2023\/04\/pdflandscape.png 944w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/a><figcaption>Landscape orientation<\/figcaption><\/figure>\n<\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Downloads<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You can download the demo application and try it here: <div class=\"wp-block-button\">\n<a  data-e-Disable-Page-Transition=\"true\" class=\"dlm-download-link dlm-download-default wp-block-button__link wp-element-button\" title=\"Version 6\" href=\"https:\/\/mariusbancila.ro\/blog\/download\/3689\/?tmstv=1792339278\" rel=\"nofollow\" id=\"download-link-3689\" data-redirect=\"false\" >\n\tMfcEdgeDemo.zip\t(<span class=\"dlm-download-count-value\">40583 downloads<\/span>\n\t)\n<\/a>\n<\/div>\n.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">See also<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">To learn more about the printing capabilities of the WebView2 control, you can read the following articles:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/learn.microsoft.com\/en-us\/microsoft-edge\/webview2\/concepts\/overview-features-apis?tabs=dotnetcsharp#printing\" target=\"_blank\" rel=\"noopener\" title=\"\">Overview of WebView2 features and APIs: Printing<\/a><\/li><li><a href=\"https:\/\/learn.microsoft.com\/en-us\/microsoft-edge\/webview2\/how-to\/print?tabs=win32cpp\" target=\"_blank\" rel=\"noopener\" title=\"\">Printing from WebView2 apps<\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>The WebView2 control supports different printing scenarios. In this new article, I&#8217;ll show you how to display a print dialog and, respectively, how to print to PDF.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","advgb_blocks_editor_width":"","advgb_blocks_columns_visual_guide":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[7,608,12,8],"tags":[451,616,453,644],"class_list":["post-4632","post","type-post","status-publish","format-standard","hentry","category-c","category-edge","category-mfc","category-windows-programming","tag-c","tag-edge","tag-mfc","tag-webview2"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"The WebView2 control supports different printing scenarios. In this new article, I&#039;ll show you how to display a print dialog and how to print to PDF.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Marius Bancila\"\/>\n\t<meta name=\"keywords\" content=\"c++,edge,mfc,webview2\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/mariusbancila.ro\/blog\/2023\/04\/05\/using-microsoft-edge-in-a-native-windows-desktop-app-part-6\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Marius Bancila&#039;s Blog | About code. Mostly on C++\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Using Microsoft Edge in a native Windows desktop app \u2013 part 6\" \/>\n\t\t<meta property=\"og:description\" content=\"The WebView2 control supports different printing scenarios. In this new article, I&#039;ll show you how to display a print dialog and how to print to PDF.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/mariusbancila.ro\/blog\/2023\/04\/05\/using-microsoft-edge-in-a-native-windows-desktop-app-part-6\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2023-04-05T06:04:36+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2023-04-05T06:15:48+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Using Microsoft Edge in a native Windows desktop app \u2013 part 6\" \/>\n\t\t<meta name=\"twitter:description\" content=\"The WebView2 control supports different printing scenarios. In this new article, I&#039;ll show you how to display a print dialog and how to print to PDF.\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2023\\\/04\\\/05\\\/using-microsoft-edge-in-a-native-windows-desktop-app-part-6\\\/#article\",\"name\":\"Using Microsoft Edge in a native Windows desktop app \\u2013 part 6\",\"headline\":\"Using Microsoft Edge in a native Windows desktop app \\u2013 part 6\",\"author\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/toolbar.png\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2023\\\/04\\\/05\\\/using-microsoft-edge-in-a-native-windows-desktop-app-part-6\\\/#articleImage\",\"width\":1087,\"height\":135},\"datePublished\":\"2023-04-05T08:04:36+02:00\",\"dateModified\":\"2023-04-05T08:15:48+02:00\",\"inLanguage\":\"en-US\",\"commentCount\":2,\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2023\\\/04\\\/05\\\/using-microsoft-edge-in-a-native-windows-desktop-app-part-6\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2023\\\/04\\\/05\\\/using-microsoft-edge-in-a-native-windows-desktop-app-part-6\\\/#webpage\"},\"articleSection\":\"C++, Edge, MFC, Windows Programming, C++, Edge, MFC, WebView2\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2023\\\/04\\\/05\\\/using-microsoft-edge-in-a-native-windows-desktop-app-part-6\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/#listItem\",\"name\":\"IT\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/#listItem\",\"position\":2,\"name\":\"IT\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/#listItem\",\"name\":\"Software\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/#listItem\",\"position\":3,\"name\":\"Software\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/c\\\/#listItem\",\"name\":\"C++\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/#listItem\",\"name\":\"IT\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/c\\\/#listItem\",\"position\":4,\"name\":\"C++\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/c\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/c\\\/mfc\\\/#listItem\",\"name\":\"MFC\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/#listItem\",\"name\":\"Software\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/c\\\/mfc\\\/#listItem\",\"position\":5,\"name\":\"MFC\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/c\\\/mfc\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2023\\\/04\\\/05\\\/using-microsoft-edge-in-a-native-windows-desktop-app-part-6\\\/#listItem\",\"name\":\"Using Microsoft Edge in a native Windows desktop app \\u2013 part 6\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/c\\\/#listItem\",\"name\":\"C++\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2023\\\/04\\\/05\\\/using-microsoft-edge-in-a-native-windows-desktop-app-part-6\\\/#listItem\",\"position\":6,\"name\":\"Using Microsoft Edge in a native Windows desktop app \\u2013 part 6\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/c\\\/mfc\\\/#listItem\",\"name\":\"MFC\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#organization\",\"name\":\"Marius Bancila's Blog\",\"description\":\"About code. Mostly on C++\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/\",\"name\":\"Marius Bancila\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2023\\\/04\\\/05\\\/using-microsoft-edge-in-a-native-windows-desktop-app-part-6\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a84dd2831d955c38355ddea55df4df260809b88f36408bc14fd4eab8f7f131c9?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Marius Bancila\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2023\\\/04\\\/05\\\/using-microsoft-edge-in-a-native-windows-desktop-app-part-6\\\/#webpage\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2023\\\/04\\\/05\\\/using-microsoft-edge-in-a-native-windows-desktop-app-part-6\\\/\",\"name\":\"Using Microsoft Edge in a native Windows desktop app \\u2013 part 6\",\"description\":\"The WebView2 control supports different printing scenarios. In this new article, I'll show you how to display a print dialog and how to print to PDF.\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2023\\\/04\\\/05\\\/using-microsoft-edge-in-a-native-windows-desktop-app-part-6\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\"},\"datePublished\":\"2023-04-05T08:04:36+02:00\",\"dateModified\":\"2023-04-05T08:15:48+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/\",\"name\":\"Marius Bancila's Blog\",\"description\":\"About code. Mostly on C++\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Using Microsoft Edge in a native Windows desktop app \u2013 part 6","description":"The WebView2 control supports different printing scenarios. In this new article, I'll show you how to display a print dialog and how to print to PDF.","canonical_url":"https:\/\/mariusbancila.ro\/blog\/2023\/04\/05\/using-microsoft-edge-in-a-native-windows-desktop-app-part-6\/","robots":"max-image-preview:large","keywords":"c++,edge,mfc,webview2","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/mariusbancila.ro\/blog\/2023\/04\/05\/using-microsoft-edge-in-a-native-windows-desktop-app-part-6\/#article","name":"Using Microsoft Edge in a native Windows desktop app \u2013 part 6","headline":"Using Microsoft Edge in a native Windows desktop app \u2013 part 6","author":{"@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author"},"publisher":{"@id":"https:\/\/mariusbancila.ro\/blog\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2023\/04\/toolbar.png","@id":"https:\/\/mariusbancila.ro\/blog\/2023\/04\/05\/using-microsoft-edge-in-a-native-windows-desktop-app-part-6\/#articleImage","width":1087,"height":135},"datePublished":"2023-04-05T08:04:36+02:00","dateModified":"2023-04-05T08:15:48+02:00","inLanguage":"en-US","commentCount":2,"mainEntityOfPage":{"@id":"https:\/\/mariusbancila.ro\/blog\/2023\/04\/05\/using-microsoft-edge-in-a-native-windows-desktop-app-part-6\/#webpage"},"isPartOf":{"@id":"https:\/\/mariusbancila.ro\/blog\/2023\/04\/05\/using-microsoft-edge-in-a-native-windows-desktop-app-part-6\/#webpage"},"articleSection":"C++, Edge, MFC, Windows Programming, C++, Edge, MFC, WebView2"},{"@type":"BreadcrumbList","@id":"https:\/\/mariusbancila.ro\/blog\/2023\/04\/05\/using-microsoft-edge-in-a-native-windows-desktop-app-part-6\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog#listItem","position":1,"name":"Home","item":"https:\/\/mariusbancila.ro\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/#listItem","name":"IT"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/#listItem","position":2,"name":"IT","item":"https:\/\/mariusbancila.ro\/blog\/category\/it\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/#listItem","name":"Software"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/#listItem","position":3,"name":"Software","item":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/#listItem","name":"C++"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/#listItem","name":"IT"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/#listItem","position":4,"name":"C++","item":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/mfc\/#listItem","name":"MFC"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/#listItem","name":"Software"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/mfc\/#listItem","position":5,"name":"MFC","item":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/mfc\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/2023\/04\/05\/using-microsoft-edge-in-a-native-windows-desktop-app-part-6\/#listItem","name":"Using Microsoft Edge in a native Windows desktop app \u2013 part 6"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/#listItem","name":"C++"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/2023\/04\/05\/using-microsoft-edge-in-a-native-windows-desktop-app-part-6\/#listItem","position":6,"name":"Using Microsoft Edge in a native Windows desktop app \u2013 part 6","previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/mfc\/#listItem","name":"MFC"}}]},{"@type":"Organization","@id":"https:\/\/mariusbancila.ro\/blog\/#organization","name":"Marius Bancila's Blog","description":"About code. Mostly on C++","url":"https:\/\/mariusbancila.ro\/blog\/"},{"@type":"Person","@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author","url":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/","name":"Marius Bancila","image":{"@type":"ImageObject","@id":"https:\/\/mariusbancila.ro\/blog\/2023\/04\/05\/using-microsoft-edge-in-a-native-windows-desktop-app-part-6\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/a84dd2831d955c38355ddea55df4df260809b88f36408bc14fd4eab8f7f131c9?s=96&d=mm&r=g","width":96,"height":96,"caption":"Marius Bancila"}},{"@type":"WebPage","@id":"https:\/\/mariusbancila.ro\/blog\/2023\/04\/05\/using-microsoft-edge-in-a-native-windows-desktop-app-part-6\/#webpage","url":"https:\/\/mariusbancila.ro\/blog\/2023\/04\/05\/using-microsoft-edge-in-a-native-windows-desktop-app-part-6\/","name":"Using Microsoft Edge in a native Windows desktop app \u2013 part 6","description":"The WebView2 control supports different printing scenarios. In this new article, I'll show you how to display a print dialog and how to print to PDF.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/mariusbancila.ro\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/mariusbancila.ro\/blog\/2023\/04\/05\/using-microsoft-edge-in-a-native-windows-desktop-app-part-6\/#breadcrumblist"},"author":{"@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author"},"creator":{"@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author"},"datePublished":"2023-04-05T08:04:36+02:00","dateModified":"2023-04-05T08:15:48+02:00"},{"@type":"WebSite","@id":"https:\/\/mariusbancila.ro\/blog\/#website","url":"https:\/\/mariusbancila.ro\/blog\/","name":"Marius Bancila's Blog","description":"About code. Mostly on C++","inLanguage":"en-US","publisher":{"@id":"https:\/\/mariusbancila.ro\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"Marius Bancila's Blog | About code. Mostly on C++","og:type":"article","og:title":"Using Microsoft Edge in a native Windows desktop app \u2013 part 6","og:description":"The WebView2 control supports different printing scenarios. In this new article, I'll show you how to display a print dialog and how to print to PDF.","og:url":"https:\/\/mariusbancila.ro\/blog\/2023\/04\/05\/using-microsoft-edge-in-a-native-windows-desktop-app-part-6\/","article:published_time":"2023-04-05T06:04:36+00:00","article:modified_time":"2023-04-05T06:15:48+00:00","twitter:card":"summary","twitter:title":"Using Microsoft Edge in a native Windows desktop app \u2013 part 6","twitter:description":"The WebView2 control supports different printing scenarios. In this new article, I'll show you how to display a print dialog and how to print to PDF."},"aioseo_meta_data":{"post_id":"4632","title":null,"description":"The WebView2 control supports different printing scenarios. In this new article, I'll show you how to display a print dialog and how to print to PDF.","keywords":[],"keyphrases":{"focus":[],"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":[],"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","location":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2023-04-04 19:27:32","updated":"2026-10-18 15:43:46","seo_analyzer_scan_date":null,"focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"author_meta":{"display_name":"Marius Bancila","author_link":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/"},"featured_img":null,"jetpack_publicize_connections":[],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Marius Bancila","author_link":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/"},"uagb_comment_info":2,"uagb_excerpt":"The WebView2 control supports different printing scenarios. In this new article, I&#8217;ll show you how to display a print dialog and, respectively, how to print to PDF.","coauthors":[],"tax_additional":{"categories":{"linked":["<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/\" class=\"advgb-post-tax-term\">C++<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/web\/edge\/\" class=\"advgb-post-tax-term\">Edge<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/mfc\/\" class=\"advgb-post-tax-term\">MFC<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/windows-programming\/\" class=\"advgb-post-tax-term\">Windows Programming<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">C++<\/span>","<span class=\"advgb-post-tax-term\">Edge<\/span>","<span class=\"advgb-post-tax-term\">MFC<\/span>","<span class=\"advgb-post-tax-term\">Windows Programming<\/span>"]},"tags":{"linked":["<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/windows-programming\/\" class=\"advgb-post-tax-term\">C++<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/windows-programming\/\" class=\"advgb-post-tax-term\">Edge<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/windows-programming\/\" class=\"advgb-post-tax-term\">MFC<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/windows-programming\/\" class=\"advgb-post-tax-term\">WebView2<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">C++<\/span>","<span class=\"advgb-post-tax-term\">Edge<\/span>","<span class=\"advgb-post-tax-term\">MFC<\/span>","<span class=\"advgb-post-tax-term\">WebView2<\/span>"]}},"comment_count":"2","relative_dates":{"created":"Posted 4 years ago","modified":"Updated 4 years ago"},"absolute_dates":{"created":"Posted on April 5, 2023","modified":"Updated on April 5, 2023"},"absolute_dates_time":{"created":"Posted on April 5, 2023 8:04 am","modified":"Updated on April 5, 2023 8:15 am"},"featured_img_caption":"","series_order":"","jetpack_shortlink":"https:\/\/wp.me\/pYNdv-1cI","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts\/4632","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/comments?post=4632"}],"version-history":[{"count":10,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts\/4632\/revisions"}],"predecessor-version":[{"id":4654,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts\/4632\/revisions\/4654"}],"wp:attachment":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/media?parent=4632"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/categories?post=4632"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/tags?post=4632"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}