{"id":3881,"date":"2024-02-15T11:06:37","date_gmt":"2024-02-15T10:06:37","guid":{"rendered":"https:\/\/www.capri-soft.de\/blog\/?p=3881"},"modified":"2024-02-19T10:34:57","modified_gmt":"2024-02-19T09:34:57","slug":"c-net-qr-code-erzeugen-mit-qrcoder","status":"publish","type":"post","link":"https:\/\/www.capri-soft.de\/blog\/?p=3881","title":{"rendered":"C#.NET: QR Code erzeugen mit QRCoder.dll \/ QR-Codes mit C# oder VB.NET erstellen \/ generieren"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Beispiel: Kostenloser QR Code Generator<\/h2>\n\n\n\n<p>Hier ein kostenloser QR Code Generator, welcher in ASP.NET mit C# als Backend realisiert wurde:<\/p>\n\n\n\n<p><a href=\"https:\/\/www.my-asp-experiments.com\/QRCode\">https:\/\/www.my-asp-experiments.com\/QRCode<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Beschreibung<\/h2>\n\n\n\n<p>QRCoder erm\u00f6glicht das Erstellen von QR-Codes mit einer einfachen Bibliothek. Solange keine QR-Code-Version angegeben wird, passt sich die Gr\u00f6\u00dfe der generierten QR-Codes an den zu codierenden Text an. <\/p>\n\n\n\n<p>Die folgenden Parameter werden unterst\u00fctzt:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>ECC Level: <\/strong>Fehlerkorrekturlevel. Gibt an wieviel Redundanzen eingebaut werden um im Fehlerfalle trotzdem lesbare Q- Codes zu erhalten. Je h\u00f6her der Level ist, desto weniger Text kann im QR-Code einer bestimmten Gr\u00f6\u00dfe gespeichert werden. Es gibt 4 ECC-Level={L, M, Q, H}, die in der folgenden ENUM definiert sind: <br><em>QRCodeGenerator.ECCLevel<\/em><\/li>\n\n\n\n<li><strong>Version (optional):<\/strong> Die QR-Code-Version legt eine feste Gr\u00f6\u00dfe (Modulanzahl) f\u00fcr den generierten QR Code fest. Die QR-Code-Gr\u00f6\u00dfe definiert sich durch die Anzahl der &#8222;Module&#8220; in der Matrix. Ein &#8222;Module&#8220; definiert ein Quadrat im QR-Code. Wird keine Version angegeben, vergr\u00f6\u00dfert sich der QR-Code automatisch auf die entsprechende Version.<br><span style=\"text-decoration: underline;\">Beispiele<\/span>: Version 1 hat eine Gr\u00f6\u00dfe von 21&#215;21 Modulen, also 1(21&#215;21), Version 2(25&#215;25), 3(29&#215;29), 4(33&#215;33), 5(37&#215;37), 6(41&#215;41), 7(45&#215;45), 8(49&#215;49), 9(53&#215;53), 10(57&#215;57), 11(61&#215;61) &#8230;<\/li>\n\n\n\n<li><strong>Pixel pro Modul: <\/strong>Die Anzahl der verwendeten Pixel f\u00fcr die Darstellung eines Moduls im QR-Code. Da Module im QR-Code quadratisch sind, gilt der Parameter f\u00fcr Breite und H\u00f6he. Durch die exakte Festlegung der Pixel kann verhindert werden, dass der QR-Code wegen einer Skalierung unscharf oder verschwommen wird (wg. Aliasing).<\/li>\n\n\n\n<li><strong>Text (bzw. Textformat des zu codierenden Textes): <\/strong>Ein codierter Text kann numerische, alphanumerische, bin\u00e4re oder Kanji-Zeichen enthalten. Die Reihenfolge dieser m\u00f6glichen Zeichens\u00e4tze legt von links nach rechts fest, wieviel Text insgesamt im QR-Code enthalten sein kann. Rein numerische Zeichen ben\u00f6tigen wenig Platz im QR-Code, wodurch f\u00fcr eine festgelegte Gr\u00f6\u00dfe (Version) z.B. viel mehr Text codiert werden kann. Wenn ein Text aber nur ein einziges Kanji-Zeichen beinhaltet, wird der gesamte Textinhalt f\u00fcr Kanji codiert, was dazu f\u00fchrt dass weniger Text f\u00fcr eine Version (festgelegte Anzahl von Modulen) codiert werden kann. <\/li>\n<\/ul>\n\n\n\n<p>Die folgende Tabelle verdeutlicht anhand der oben genannten Parameter, welche Datenkapazit\u00e4t (Textl\u00e4nge) nach Version, ECC Level und verwendetem Zeichensatz erwartet werden kann:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th rowspan=\"2\">Version (Modulzahl)<\/th><th colspan=\"4\">Numerisch<\/th><th colspan=\"4\">Alphanumerisch<\/th><th colspan=\"4\">Bin\u00e4r<\/th><th colspan=\"4\">Kanji<\/th><\/tr><tr><th>L<\/th><th>M<\/th><th>Q<\/th><th>H<\/th><th>L<\/th><th>M<\/th><th>Q<\/th><th>H<\/th><th>L<\/th><th>M<\/th><th>Q<\/th><th>H<\/th><th>L<\/th><th>M<\/th><th>Q<\/th><th>H<\/th><\/tr><\/thead><tbody><tr><th>1(21)<\/th><td>41<\/td><td>34<\/td><td>27<\/td><td>17<\/td><td>25<\/td><td>20<\/td><td>16<\/td><td>10<\/td><td>17<\/td><td>14<\/td><td>11<\/td><td>7<\/td><td>10<\/td><td>8<\/td><td>7<\/td><td>4<\/td><\/tr><tr><th>2(25)<\/th><td>77<\/td><td>63<\/td><td>48<\/td><td>34<\/td><td>47<\/td><td>38<\/td><td>29<\/td><td>20<\/td><td>32<\/td><td>26<\/td><td>20<\/td><td>14<\/td><td>20<\/td><td>16<\/td><td>12<\/td><td>8<\/td><\/tr><tr><th>3(29)<\/th><td>127<\/td><td>101<\/td><td>77<\/td><td>58<\/td><td>77<\/td><td>61<\/td><td>47<\/td><td>35<\/td><td>53<\/td><td>42<\/td><td>32<\/td><td>24<\/td><td>32<\/td><td>26<\/td><td>20<\/td><td>15<\/td><\/tr><tr><th>4(33)<\/th><td>187<\/td><td>149<\/td><td>111<\/td><td>82<\/td><td>114<\/td><td>90<\/td><td>67<\/td><td>50<\/td><td>78<\/td><td>62<\/td><td>46<\/td><td>34<\/td><td>48<\/td><td>38<\/td><td>28<\/td><td>21<\/td><\/tr><tr><th>5(37)<\/th><td>255<\/td><td>202<\/td><td>144<\/td><td>106<\/td><td>154<\/td><td>122<\/td><td>87<\/td><td>64<\/td><td>106<\/td><td>84<\/td><td>60<\/td><td>44<\/td><td>65<\/td><td>52<\/td><td>37<\/td><td>27<\/td><\/tr><tr><th>6(41)<\/th><td>322<\/td><td>255<\/td><td>178<\/td><td>139<\/td><td>195<\/td><td>154<\/td><td>108<\/td><td>84<\/td><td>134<\/td><td>106<\/td><td>74<\/td><td>58<\/td><td>82<\/td><td>65<\/td><td>45<\/td><td>36<\/td><\/tr><tr><th>7(45)<\/th><td>370<\/td><td>293<\/td><td>207<\/td><td>154<\/td><td>224<\/td><td>178<\/td><td>125<\/td><td>93<\/td><td>154<\/td><td>122<\/td><td>86<\/td><td>64<\/td><td>95<\/td><td>75<\/td><td>53<\/td><td>39<\/td><\/tr><tr><th>8(49)<\/th><td>461<\/td><td>365<\/td><td>259<\/td><td>202<\/td><td>279<\/td><td>221<\/td><td>157<\/td><td>122<\/td><td>192<\/td><td>152<\/td><td>108<\/td><td>84<\/td><td>118<\/td><td>93<\/td><td>66<\/td><td>52<\/td><\/tr><tr><th>9(53)<\/th><td>552<\/td><td>432<\/td><td>312<\/td><td>235<\/td><td>335<\/td><td>262<\/td><td>189<\/td><td>143<\/td><td>230<\/td><td>180<\/td><td>130<\/td><td>98<\/td><td>141<\/td><td>111<\/td><td>80<\/td><td>60<\/td><\/tr><tr><th>10(57)<\/th><td>652<\/td><td>513<\/td><td>364<\/td><td>288<\/td><td>395<\/td><td>311<\/td><td>221<\/td><td>174<\/td><td>271<\/td><td>213<\/td><td>151<\/td><td>119<\/td><td>167<\/td><td>131<\/td><td>93<\/td><td>74<\/td><\/tr><tr><th>11(61)<\/th><td>772<\/td><td>604<\/td><td>427<\/td><td>331<\/td><td>468<\/td><td>366<\/td><td>259<\/td><td>200<\/td><td>321<\/td><td>251<\/td><td>177<\/td><td>137<\/td><td>198<\/td><td>155<\/td><td>109<\/td><td>85<\/td><\/tr><tr><th>12(65)<\/th><td>883<\/td><td>691<\/td><td>489<\/td><td>374<\/td><td>535<\/td><td>419<\/td><td>296<\/td><td>227<\/td><td>367<\/td><td>287<\/td><td>203<\/td><td>155<\/td><td>226<\/td><td>177<\/td><td>125<\/td><td>96<\/td><\/tr><tr><th>13(69)<\/th><td>1022<\/td><td>796<\/td><td>580<\/td><td>427<\/td><td>619<\/td><td>483<\/td><td>352<\/td><td>259<\/td><td>425<\/td><td>331<\/td><td>241<\/td><td>177<\/td><td>262<\/td><td>204<\/td><td>149<\/td><td>109<\/td><\/tr><tr><th>14(73)<\/th><td>1101<\/td><td>871<\/td><td>621<\/td><td>468<\/td><td>667<\/td><td>528<\/td><td>376<\/td><td>283<\/td><td>458<\/td><td>362<\/td><td>258<\/td><td>194<\/td><td>282<\/td><td>223<\/td><td>159<\/td><td>120<\/td><\/tr><tr><th>15(77)<\/th><td>1250<\/td><td>991<\/td><td>703<\/td><td>530<\/td><td>758<\/td><td>600<\/td><td>426<\/td><td>321<\/td><td>520<\/td><td>412<\/td><td>292<\/td><td>220<\/td><td>320<\/td><td>254<\/td><td>180<\/td><td>136<\/td><\/tr><tr><th>16(81)<\/th><td>1408<\/td><td>1082<\/td><td>775<\/td><td>602<\/td><td>854<\/td><td>656<\/td><td>470<\/td><td>365<\/td><td>586<\/td><td>450<\/td><td>322<\/td><td>250<\/td><td>361<\/td><td>277<\/td><td>198<\/td><td>154<\/td><\/tr><tr><th>17(85)<\/th><td>1548<\/td><td>1212<\/td><td>876<\/td><td>674<\/td><td>938<\/td><td>734<\/td><td>531<\/td><td>408<\/td><td>644<\/td><td>504<\/td><td>364<\/td><td>280<\/td><td>397<\/td><td>310<\/td><td>224<\/td><td>173<\/td><\/tr><tr><th>18(89)<\/th><td>1725<\/td><td>1346<\/td><td>948<\/td><td>746<\/td><td>1046<\/td><td>816<\/td><td>574<\/td><td>452<\/td><td>718<\/td><td>560<\/td><td>394<\/td><td>310<\/td><td>442<\/td><td>345<\/td><td>243<\/td><td>191<\/td><\/tr><tr><th>19(93)<\/th><td>1903<\/td><td>1500<\/td><td>1063<\/td><td>813<\/td><td>1153<\/td><td>909<\/td><td>644<\/td><td>493<\/td><td>792<\/td><td>624<\/td><td>442<\/td><td>338<\/td><td>488<\/td><td>384<\/td><td>272<\/td><td>208<\/td><\/tr><tr><th>20(97)<\/th><td>2061<\/td><td>1600<\/td><td>1159<\/td><td>919<\/td><td>1249<\/td><td>970<\/td><td>702<\/td><td>557<\/td><td>858<\/td><td>666<\/td><td>482<\/td><td>382<\/td><td>528<\/td><td>410<\/td><td>297<\/td><td>235<\/td><\/tr><tr><th>21(101)<\/th><td>2232<\/td><td>1708<\/td><td>1224<\/td><td>969<\/td><td>1352<\/td><td>1035<\/td><td>742<\/td><td>587<\/td><td>929<\/td><td>711<\/td><td>509<\/td><td>403<\/td><td>572<\/td><td>438<\/td><td>314<\/td><td>248<\/td><\/tr><tr><th>22(105)<\/th><td>2409<\/td><td>1872<\/td><td>1358<\/td><td>1056<\/td><td>1460<\/td><td>1134<\/td><td>823<\/td><td>640<\/td><td>1003<\/td><td>779<\/td><td>565<\/td><td>439<\/td><td>618<\/td><td>480<\/td><td>348<\/td><td>270<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Installation von QRCoder.dll<\/h2>\n\n\n\n<p>Die Bibliothek &#8222;QRCoder&#8220; kann \u00fcber die g\u00e4ngigen Quellen bezogen werden und muss dann ggfs. als Verweis hinzugef\u00fcgt werden:<br><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/i0.wp.com\/www.capri-soft.de\/blog\/wp-content\/uploads\/2024\/02\/image-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"474\" height=\"141\" data-attachment-id=\"3893\" data-permalink=\"https:\/\/www.capri-soft.de\/blog\/?attachment_id=3893\" data-orig-file=\"https:\/\/i0.wp.com\/www.capri-soft.de\/blog\/wp-content\/uploads\/2024\/02\/image-1.png?fit=516%2C154&amp;ssl=1\" data-orig-size=\"516,154\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image-1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.capri-soft.de\/blog\/wp-content\/uploads\/2024\/02\/image-1.png?fit=474%2C141&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/www.capri-soft.de\/blog\/wp-content\/uploads\/2024\/02\/image-1.png?resize=474%2C141&#038;ssl=1\" alt=\"\" class=\"wp-image-3893\" srcset=\"https:\/\/i0.wp.com\/www.capri-soft.de\/blog\/wp-content\/uploads\/2024\/02\/image-1.png?w=516&amp;ssl=1 516w, https:\/\/i0.wp.com\/www.capri-soft.de\/blog\/wp-content\/uploads\/2024\/02\/image-1.png?resize=300%2C90&amp;ssl=1 300w\" sizes=\"auto, (max-width: 474px) 100vw, 474px\" \/><\/a><\/figure>\n\n\n\n<p><br>Einige der genannten Quellen tun dies allerdings automatisch<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">GitHub<\/h3>\n\n\n\n<p><a href=\"https:\/\/github.com\/codebude\/QRCoder\">https:\/\/github.com\/codebude\/QRCoder<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">.NET CLI<\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\ndotnet add package QRCoder --version 1.4.3\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\">Package Manager<\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nNuGet\\Install-Package QRCoder -Version 1.4.3\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\">Package Reference<\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n&amp;lt;PackageReference Include=&quot;QRCoder&quot; Version=&quot;1.4.3&quot; \/&gt;\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\">Paket CLI<\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\npaket add QRCoder --version 1.4.3\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\">Script &amp; Interactive<\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n#r &quot;nuget: QRCoder, 1.4.3&quot;\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\">Cake<\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n\/\/ Install QRCoder as a Cake Addin\n#addin nuget:?package=QRCoder&amp;amp;version=1.4.3\n\n\/\/ Install QRCoder as a Cake Tool\n#tool nuget:?package=QRCoder&amp;amp;version=1.4.3\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">C# Konsolenanwendung<\/h2>\n\n\n\n<p>Die folgende C# Konsolenanwendung erzeugt drei QR-Codes der Version 5 (also 37&#215;37 Module) mit dem Fehlerkorrekturlevel L (niedrigster Korrekturlevel f\u00fcr viel Platz) und 4&#215;4 Pixel pro Modul. Der Text ist bin\u00e4r, da er die Sonderzeichen einer URL aber keine Kanji-Zeichen beinhaltet. Der erste QR-Code beinhaltet nur den Text &#8222;d&#8220; und wird deswegen als alphanumerisch klassifziert. <\/p>\n\n\n\n<p>Au\u00dferdem wird der &#8222;Ruhebereich&#8220; des QR-Codes (wei\u00dfer Rand) abgeschnitten, was nicht immer zu empfehlen ist, da diese Trennung f\u00fcr einen korrekten Scan ben\u00f6tigt wird.  <\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nusing QRCoder;\nusing System;\nusing System.Collections.Generic;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace QRCodeTestConsole\n{\n    public class Program\n    {\n        public static Program prg;\n        public const int version5QRCodeSize = 148 + 32;\n        public const int pixelPerModule = 4;\n        public const int moduleVersion = 5;\n        public const int croppedBorderPixels = 16; \n        public const QRCodeGenerator.ECCLevel eccLevel = QRCodeGenerator.ECCLevel.L;\n\n        public Program()\n        {\n            string&#x5B;] content = { &quot;d&quot;, \n                                 &quot;https:\/\/www.youtube.com\/playlist?list=PLA4OWG_-fY-JLoj-bHIPiUU1SJquB9X8J&quot;,\n                                 &quot;https:\/\/www.youtube.com\/playlist?list=PLA4OWG_-fY-JLoj-bHIPiUU1SJquB9X8J----------------------...........oipipoiopiopipoipiooipo&quot;};\n            \n            for (int i = 0; i &lt; content.Length; i++)\n            {\n                string current = content&#x5B;i];              \n\n                string msgResult = this.GenerateQRCode(current, &quot;QRCode&quot; + i + &quot;.bmp&quot;);\n                \n                if (!msgResult.ToLower().Equals(&quot;ok&quot;))\n                {\n                    Console.WriteLine(msgResult);\n                }\n            }\n\n            Console.ReadLine();\n        }\n\n        public string GenerateQRCode(string content, string fileName)\n        {\n            try\n            {\n                QRCodeGenerator qrGenerator = new QRCodeGenerator();\n                QRCodeData qrCodeData = qrGenerator.CreateQrCode(content, eccLevel, false, false, QRCodeGenerator.EciMode.Default, moduleVersion);\n                QRCode qrCode = new QRCode(qrCodeData);\n                Bitmap qrCodeImage = new Bitmap(qrCode.GetGraphic(pixelPerModule));\n\n                \/\/ Ruhezone abschneiden - falls nicht \n                \/\/ gew\u00fcnscht bei qrCodeImage.Save aufrufen \n                Bitmap croppedBmp = qrCodeImage.Clone(new Rectangle(croppedBorderPixels, croppedBorderPixels, qrCodeImage.Width - 2 * croppedBorderPixels, qrCodeImage.Height - 2 * croppedBorderPixels), qrCodeImage.PixelFormat);\n                croppedBmp.Save(&quot;CROP_&quot; + fileName);\n            }\n            catch (Exception e)\n            {\n                return e.ToString();\n            }\n\n            return &quot;ok&quot;;\n        }\n\n        public static void Main(string&#x5B;] args)\n        {\n            prg = new Program();\n        }\n    }\n}\n<\/pre><\/div><iframe src=\"http:\/\/www.facebook.com\/plugins\/like.php?href=https%3A%2F%2Fwww.capri-soft.de%2Fblog%2F%3Fp%3D3881&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light\" scrolling=\"no\" frameborder=\"0\" allowTransparency=\"true\" style=\"border:none; overflow:hidden; width:450px;margin-top:5px;\"><\/iframe>","protected":false},"excerpt":{"rendered":"<p>Beispiel: Kostenloser QR Code Generator Hier ein kostenloser QR Code Generator, welcher in ASP.NET mit C# als Backend realisiert wurde: https:\/\/www.my-asp-experiments.com\/QRCode Beschreibung QRCoder erm\u00f6glicht das Erstellen von QR-Codes mit einer einfachen Bibliothek. Solange keine QR-Code-Version angegeben wird, passt sich die Gr\u00f6\u00dfe der generierten QR-Codes an den zu codierenden Text an. Die folgenden Parameter werden unterst\u00fctzt: &hellip; <a href=\"https:\/\/www.capri-soft.de\/blog\/?p=3881\" class=\"more-link\"><span class=\"screen-reader-text\">C#.NET: QR Code erzeugen mit QRCoder.dll \/ QR-Codes mit C# oder VB.NET erstellen \/ generieren<\/span> weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_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}},"categories":[4,33,17,3],"tags":[105,451,448,450,449,453,452],"class_list":["post-3881","post","type-post","status-publish","format-standard","hentry","category-net","category-c","category-grafik","category-programmierung","tag-c","tag-generate-qr-code","tag-qr-code","tag-qr-code-erzeugen","tag-qr-code-2","tag-qrcoder","tag-qrcoder-dll"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p4yGeN-10B","jetpack_likes_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/3881","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3881"}],"version-history":[{"count":15,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/3881\/revisions"}],"predecessor-version":[{"id":3911,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/3881\/revisions\/3911"}],"wp:attachment":[{"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3881"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3881"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3881"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}