{"id":237015,"date":"2022-04-06T14:45:33","date_gmt":"2022-04-06T13:45:33","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=dotnet&#038;p=237015"},"modified":"2022-08-09T16:44:39","modified_gmt":"2022-08-09T15:44:39","slug":"webinar-oss-power-ups-questpdf","status":"publish","type":"dotnet","link":"https:\/\/blog.jetbrains.com\/zh-hans\/dotnet\/2022\/04\/06\/webinar-oss-power-ups-questpdf","title":{"rendered":"Webinar \u2013 OSS Power-Ups: QuestPDF"},"content":{"rendered":"\n<p>Join us <strong>Thursday, April 21, 2022, 16:00 &#8211; 17:00 CEST<\/strong> (10:00 AM &#8211; 11:00 AM EDT or <a href=\"https:\/\/www.worldtimebuddy.com\/?qm=1&amp;lid=12,5,8&amp;h=12&amp;date=2022-04-21&amp;sln=16-17&amp;hf=1\" target=\"_blank\" rel=\"noreferrer noopener\">check other timezones<\/a>) for our free live webinar, <strong>OSS PowerUps \u2013 QuestPDF<\/strong>, with Marcin Zi\u0105bek. This is the ninth episode of our series of <a href=\"https:\/\/lp.jetbrains.com\/oss-powerups\/\" target=\"_blank\" rel=\"noopener\">OSS Power-Ups<\/a>, where we put a spotlight on open-source .NET projects.<\/p>\n\n\n\n<p align=\"center\"><a class=\"jb-download-button\" href=\"https:\/\/info.jetbrains.com\/rider-webinar-april21-2022.html\" target=\"_blank\" rel=\"noopener\">Register now<\/a> and get a reminder, or <a href=\"https:\/\/youtu.be\/-iYvZvpLX0g\" target=\"_blank\" rel=\"noopener\">join on YouTube<\/a><\/p>\n\n\n\n<p><em>In the .NET ecosystem, generating PDF documents was challenging for many years. Most available libraries are paid or suffer from stability problems. Many of them also rely upon HTML-to-PDF conversion, whereas webpage technologies are inadequate for paging-related requirements. <a href=\"https:\/\/github.com\/QuestPDF\/QuestPDF\" target=\"_blank\" rel=\"noreferrer noopener\">QuestPDF<\/a> approaches the problem from a different angle. It offers many predictable building blocks that are optimized to create page-aware content. They can be composed together to build complex layouts &#8211; all of it done with type-safe and discoverable fluent API. Marcin Zi\u0105bek, the creator of this library, will present a typical development workflow in QuestPDF. Then, we will shortly discuss internal architecture, design decisions, and algorithms.<\/em><\/p>\n\n\n\n<p><em>Let&#8217;s get started and learn how easy it is to generate PDF documents with modern utilities!<\/em><\/p>\n\n\n\n<a href=\"https:\/\/info.jetbrains.com\/rider-webinar-april21-2022.html\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/04\/DSGN-13545_Webinar-OSS-Power-Ups-QuestPDF_img1_JB_Blog_Social_share_image_1280-720.png\" alt=\"Register for the webinar\" class=\"wp-image-180343\" width=\"800\"><\/a>\n\n\n\n<p>You can attend <a href=\"https:\/\/youtu.be\/-iYvZvpLX0g\" target=\"_blank\" rel=\"noreferrer noopener\">Marcin Zi\u0105bek&#8217;s webinar on YouTube<\/a>, or <a href=\"https:\/\/info.jetbrains.com\/rider-webinar-april21-2022.html\" target=\"_blank\" rel=\"noopener\"><strong>register here<\/strong> to get a reminder closer to the webinar<\/a>.<\/p>\n\n\n\n<p>About the presenters:<\/p>\n\n\n    <div class=\"about-author \">\n        <div class=\"about-author__box\">\n            <div class=\"row\">\n                                                            <div class=\"about-author__box-img\">\n                            <img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/03\/2022-03-31_20-40-02.png\" alt=\"\" loading=\"lazy\">\n                        <\/div>\n                                        <div class=\"about-author__box-text\">\n                                                    <h4>Marcin Zi\u0105bek<\/h4>\n                                                <p>Marcin is a technology enthusiast loving software development since the age of 10. He is interested in the hardest programming challenges, development optimization, machine learning, and open-source movement. He&#8217;s trying to expand his knowledge in various programming-related areas, understand and properly apply patterns and practices, see the bigger picture and create new technologies which not only improve the software itself but also make users&#8217; experience better.<\/p>\n<p><a href=\"https:\/\/twitter.com\/MarcinZiabek\" target=\"_blank\" rel=\"noopener\">Follow Marcin on Twitter<\/a>.<\/p>\n                    <\/div>\n                            <\/div>\n        <\/div>\n    <\/div>\n","protected":false},"author":553,"featured_media":0,"comment_status":"closed","ping_status":"closed","template":"","categories":[4992,30],"tags":[1269,2111,558,6442,6183],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/dotnet\/237015"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/dotnet"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/types\/dotnet"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/users\/553"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/comments?post=237015"}],"version-history":[{"count":10,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/dotnet\/237015\/revisions"}],"predecessor-version":[{"id":272984,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/dotnet\/237015\/revisions\/272984"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/media?parent=237015"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/categories?post=237015"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/tags?post=237015"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/zh-hans\/wp-json\/wp\/v2\/cross-post-tag?post=237015"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}