{"id":505,"date":"2021-04-12T03:43:48","date_gmt":"2021-04-12T03:43:48","guid":{"rendered":"https:\/\/portfolio.accrualhub.com\/powergi2\/?p=505"},"modified":"2025-09-11T19:54:56","modified_gmt":"2025-09-11T19:54:56","slug":"azure-function-to-combine-pdf-files","status":"publish","type":"post","link":"https:\/\/powergi.net\/es\/blog\/azure-function-to-combine-pdf-files\/","title":{"rendered":"Azure Function to combine PDF files"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"505\" class=\"elementor elementor-505\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-1d04fd39 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"1d04fd39\" data-element_type=\"section\" data-e-type=\"section\" data-settings='{\"jet_parallax_layout_list\":[]}'>\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-2158d13c\" data-id=\"2158d13c\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-52ae6adb elementor-widget elementor-widget-text-editor\" data-id=\"52ae6adb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\n<p class=\"wp-block-paragraph\">We will create an Azure Function that will merge PDF documents stored in a container of our storage account in Azure, this function will receive the file names to be merged\/combined in the parameters of the URL and they will be separated by commas.<\/p>\n\n<p class=\"wp-block-paragraph\">Below is an example of the POST request that the code presented in this blog will be able to process.<\/p><div id=\"seology-cta-1\">\t\t<div data-elementor-type=\"section\" data-elementor-id=\"7276\" class=\"elementor elementor-7276\" data-elementor-post-type=\"elementor_library\">\n\t\t\t<div class=\"elementor-element elementor-element-7e3f164 e-con-full e-flex e-con e-parent\" data-id=\"7e3f164\" data-element_type=\"container\" data-e-type=\"container\" data-settings='{\"background_background\":\"classic\",\"jet_parallax_layout_list\":[]}'>\n\t\t<div class=\"elementor-element elementor-element-9078c9f e-con-full e-flex e-con e-child\" data-id=\"9078c9f\" data-element_type=\"container\" data-e-type=\"container\" data-settings='{\"jet_parallax_layout_list\":[]}'>\n\t\t\t\t<div class=\"elementor-element elementor-element-7b99949 elementor-widget elementor-widget-heading\" data-id=\"7b99949\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">From vision to execution<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8e61db5 elementor-widget elementor-widget-heading\" data-id=\"8e61db5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Whether you're just starting or scaling automation, we help turn your ideas into impactful solutions.<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a578907 e-flex e-con-boxed e-con e-child\" data-id=\"a578907\" data-element_type=\"container\" data-e-type=\"container\" data-settings='{\"jet_parallax_layout_list\":[]}'>\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e8c827b elementor-view-stacked elementor-shape-circle elementor-widget elementor-widget-icon\" data-id=\"e8c827b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-wrapper\">\n\t\t\t<a class=\"elementor-icon\" href=\"#ctc_chat\">\n\t\t\t<i aria-hidden=\"true\" class=\"fab fa-whatsapp\"><\/i>\t\t\t<\/a>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d834237 elementor-view-stacked elementor-shape-circle elementor-widget elementor-widget-icon\" data-id=\"d834237\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-wrapper\">\n\t\t\t<a class=\"elementor-icon\" href=\"https:\/\/powergi.net\/es\/contact\/\">\n\t\t\t<i aria-hidden=\"true\" class=\"far fa-envelope\"><\/i>\t\t\t<\/a>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<\/div>\n\n<figure class=\"wp-block-image size-large is-resized\"><img fetchpriority=\"high\" decoding=\"async\" class=\"wp-image-514\" src=\"https:\/\/powergi.net\/wp-content\/uploads\/2021\/04\/image-1-1024x45.png\" alt=\"\" width=\"1152\" height=\"50\"><\/figure>\n\n<h3 class=\"wp-block-heading\">Set up your project<\/h3>\n\n<ol class=\"wp-block-list\">\n<li>Create an azure function project and use the HTTP Trigger<\/li>\n<li>Make sure you install the below packages before getting started with coding<\/li>\n<\/ol>\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" class=\"wp-image-515\" src=\"https:\/\/powergi.net\/wp-content\/uploads\/2026\/07\/image-2-1024x416-1.webp\" alt=\"\"><\/figure>\n\n<h3 class=\"wp-block-heading\">Create the Function code<\/h3>\n\n<p class=\"wp-block-paragraph\">We are ready to start writing code. We need two files:<\/p>\n\n<p class=\"wp-block-paragraph\"><strong>ResultClass.cs<\/strong> \u2013 will return the file(s) merged as list<\/p>\n\n<div class=\"wp-block-group\">\n<div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<pre class=\"wp-block-code\"><code>using System;\nusing System.Collections.Generic;\n\nnamespace FunctionApp1\n{\n\n    public class Result\n    {\n\n        public Result(IList newFiles)\n        {\n            this.files = newFiles;\n        }\n\n        public IList files { get; private set; }\n    }\n}<\/code><\/pre>\n<\/div>\n<\/div>\n\n<p class=\"wp-block-paragraph\"><strong>Function1.cs<\/strong> \u2013 Code that will receive the file names in the URL, grab them from the Storage account, merge them into one and return a download URL<\/p>\n\n<pre class=\"wp-block-code\"><code>using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Net.Http;\nusing System.Threading.Tasks;\nusing Microsoft.AspNetCore.Http;\nusing Microsoft.AspNetCore.Mvc;\nusing Microsoft.Azure.WebJobs;\nusing Microsoft.Azure.WebJobs.Extensions.Http;\nusing Microsoft.Extensions.Logging;\nusing Microsoft.Extensions.Configuration;\nusing Microsoft.WindowsAzure.Storage.Blob;\nusing Newtonsoft.Json;\nusing PdfSharp.Pdf;\nusing PdfSharp.Pdf.IO;\n\nnamespace FunctionApp1\n{\n    public class Function1\n    {\n\n        static <strong><span class=\"has-inline-color has-vivid-purple-color\">Function1()<\/span><\/strong>\n        {\n\n            <span class=\"has-inline-color has-vivid-green-cyan-color\">\/\/ This is required to avoid the \"No data is available <\/span>                        <span class=\"has-inline-color has-vivid-green-cyan-color\">for encoding 1252\" exception when saving the PdfDocument<\/span>\nSystem.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);\n\n        }\n\n        [FunctionName(\"Function1\")]\n        public async Task SplitUploadAsync(\n            [HttpTrigger(AuthorizationLevel.Anonymous, \"post\", Route = null)] HttpRequestMessage req,\n            <span class=\"has-inline-color has-vivid-green-cyan-color\">\/\/container where files will be stored and accessed for retrieval. in this case, it's called temp-pdf\n<\/span>            [Blob(\"temp-pdf\", Connection = \"\")] CloudBlobContainer outputContainer,\n            ILogger log)\n        {\n            <span class=\"has-inline-color has-vivid-green-cyan-color\">\/\/get query parameters\n<\/span>\n            string uriq = req.RequestUri.ToString(); \n            string keyw = uriq.Substring(uriq.IndexOf('=') + 1);\n\n            <span class=\"has-inline-color has-vivid-green-cyan-color\">\/\/get file name in query parameters\n<\/span>            String fileNames = keyw.Split(\"mergepfd&amp;filenam=\")[1];\n\n            <span class=\"has-inline-color has-vivid-green-cyan-color\">\/\/split file name<\/span>\n            string[] files = fileNames.Split(',');\n\n            <span class=\"has-inline-color has-vivid-green-cyan-color\">\/\/process merge<\/span>\n            var newFiles = await this.MergeFileAsync(outputContainer, files);\n\n            return new Result(newFiles);\n\n        }\n\n        private async Task&lt;IList&gt; <strong><span class=\"has-inline-color has-vivid-purple-color\">MergeFileAsync(CloudBlobContainer container, string[] blobfiles)<\/span><\/strong>\n        {\n            <span class=\"has-inline-color has-vivid-green-cyan-color\">\/\/init instance<\/span>\n            PdfDocument outputDocument = new PdfDocument();\n\n            <span class=\"has-inline-color has-vivid-green-cyan-color\">\/\/loop through files sent in query<\/span>\n            foreach (string fileblob in blobfiles)\n            {\n                String intfile = $\"\" + fileblob;\n\n                <span class=\"has-inline-color has-vivid-green-cyan-color\">\/\/ get file<\/span>\n                CloudBlockBlob blob = container.GetBlockBlobReference(intfile);\n\n                using (var memoryStream = new MemoryStream())\n                {\n                    await blob.DownloadToStreamAsync(memoryStream);\n\n                    <span class=\"has-inline-color has-vivid-green-cyan-color\">\/\/get file content<\/span>\n                    string contents = blob.DownloadTextAsync().Result;\n                   \n                   <span class=\"has-inline-color has-vivid-green-cyan-color\"> \/\/open document<\/span>\n                    var inputDocument = PdfReader.Open(memoryStream, PdfDocumentOpenMode.Import);\n\n                    <span class=\"has-inline-color has-vivid-green-cyan-color\">\/\/get pages<\/span>\n                    int count = inputDocument.PageCount;\n                    for (int idx = 0; idx &lt; count; idx++)\n                    {\n                       <span class=\"has-inline-color has-vivid-green-cyan-color\"> \/\/append<\/span>\n                        outputDocument.AddPage(inputDocument.Pages[idx]);\n                    }\n\n\n                }\n            }\n\n\n            var outputFiles = new List();\n            var tempFile = String.Empty;\n\n           <span class=\"has-inline-color has-vivid-green-cyan-color\"> \/\/call save function to store output in container<\/span>\n            tempFile = await this.SaveToBlobStorageAsync(container, outputDocument);\n\n            outputFiles.Add(tempFile);\n\n            <span class=\"has-inline-color has-vivid-green-cyan-color\">\/\/return file(s) url<\/span>\n            return outputFiles;\n        }\n\n        private async Task <strong><span class=\"has-inline-color has-vivid-purple-color\">SaveToBlobStorageAsync(CloudBlobContainer container, PdfDocument document)<\/span><\/strong>\n        {\n\n            <span class=\"has-inline-color has-vivid-green-cyan-color\">\/\/file name structure<\/span>\n            var filename = $\"merge-{DateTime.Now.ToString(\"yyyyMMddhhmmss\")}-{Guid.NewGuid().ToString().Substring(0, 4)}.pdf\";\n\n            <span class=\"has-inline-color has-vivid-green-cyan-color\">\/\/ Creating an empty file pointer<\/span>\n            var outputBlob = container.GetBlockBlobReference(filename);\n\n            using (var stream = new MemoryStream())\n            {\n                <span class=\"has-inline-color has-vivid-green-cyan-color\">\/\/save result of merge<\/span>\n                document.Save(stream);\n                await outputBlob.UploadFromStreamAsync(stream);\n            }\n\n            <span class=\"has-inline-color has-vivid-green-cyan-color\">\/\/get sas token<\/span>\n            var sasBlobToken = outputBlob.GetSharedAccessSignature(new SharedAccessBlobPolicy()\n            {\n                SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(5),\n                Permissions = SharedAccessBlobPermissions.Read\n            });\n\n            <span class=\"has-inline-color has-vivid-green-cyan-color\">\/\/return sas token<\/span>\n            return outputBlob.Uri + sasBlobToken;\n        }\n    }\n}\n\n<\/code><\/pre>\n\n<p>Our expertise in <a href=\"https:\/\/powergi.net\/microsoft-power-platform-consulting-services\/\"><strong>Power Platform consulting services<\/strong><\/a> helps transform ideas into impactful digital solutions, merging efficiency with innovation. Whether it\u2019s optimizing your workflow or automating routine tasks through Microsoft Power Platform, our tailored consultancy ensures seamless execution.<\/p>\n<h3 class=\"wp-block-heading\">Create Azure Function<\/h3>\n\n<p class=\"wp-block-paragraph\">Create the resource in Azure for the Azure Function. Below you can see how I did the set up for my function<\/p>\n\n<figure class=\"wp-block-image size-large is-resized\"><img decoding=\"async\" class=\"wp-image-516\" src=\"https:\/\/powergi.net\/wp-content\/uploads\/2026\/07\/powergi-image-14890.webp\" alt=\"\" width=\"582\" height=\"529\"><\/figure>\n\n<h3 class=\"wp-block-heading\">Publish your Code<\/h3>\n\n<p class=\"wp-block-paragraph\">Now it\u2019s time to Publish our Function to the Azure service. Right click on your solution and select the \u201cPublish\u201d option.<\/p>\n\n<p class=\"wp-block-paragraph\">Follow the instructions in the next screens, once you reach the <strong>Service Dependencies <\/strong>section, make sure that you select the <strong>storage account where your PDF documents to merge are saved<\/strong>. Also, double check that the right container name is used in the connection string.<\/p>\n\n<p class=\"wp-block-paragraph\">In below screenshot you can see how I selected <strong><em>storageaccountazure8721 <\/em><\/strong>as the one that contains my \u201c<strong><em>temp-pdf<\/em><\/strong>\u201d container. Note that this container can be the same where your Function is storing its files or it can a completely different.<\/p><div id=\"seology-cta-2\">\t\t<div data-elementor-type=\"section\" data-elementor-id=\"7280\" class=\"elementor elementor-7280\" data-elementor-post-type=\"elementor_library\">\n\t\t\t<div class=\"elementor-element elementor-element-7e3f164 e-con-full e-flex e-con e-parent\" data-id=\"7e3f164\" data-element_type=\"container\" data-e-type=\"container\" data-settings='{\"background_background\":\"classic\",\"jet_parallax_layout_list\":[]}'>\n\t\t<div class=\"elementor-element elementor-element-9078c9f e-con-full e-flex e-con e-child\" data-id=\"9078c9f\" data-element_type=\"container\" data-e-type=\"container\" data-settings='{\"jet_parallax_layout_list\":[]}'>\n\t\t\t\t<div class=\"elementor-element elementor-element-7b99949 elementor-widget elementor-widget-heading\" data-id=\"7b99949\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Automate tasks that slow you down<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8e61db5 elementor-widget elementor-widget-heading\" data-id=\"8e61db5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Free up your team\u2019s time and focus on strategic work with digital and robotic automation.<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a578907 e-flex e-con-boxed e-con e-child\" data-id=\"a578907\" data-element_type=\"container\" data-e-type=\"container\" data-settings='{\"jet_parallax_layout_list\":[]}'>\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e8c827b elementor-view-stacked elementor-shape-circle elementor-widget elementor-widget-icon\" data-id=\"e8c827b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-wrapper\">\n\t\t\t<a class=\"elementor-icon\" href=\"#ctc_chat\">\n\t\t\t<i aria-hidden=\"true\" class=\"fab fa-whatsapp\"><\/i>\t\t\t<\/a>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d834237 elementor-view-stacked elementor-shape-circle elementor-widget elementor-widget-icon\" data-id=\"d834237\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-wrapper\">\n\t\t\t<a class=\"elementor-icon\" href=\"https:\/\/powergi.net\/es\/contact\/\">\n\t\t\t<i aria-hidden=\"true\" class=\"far fa-envelope\"><\/i>\t\t\t<\/a>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<\/div>\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" class=\"wp-image-518\" src=\"https:\/\/powergi.net\/wp-content\/uploads\/2026\/07\/image-5-1024x340-1.webp\" alt=\"\"><\/figure>\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" class=\"wp-image-519\" src=\"https:\/\/powergi.net\/wp-content\/uploads\/2021\/04\/image-6.png\" alt=\"\">\n<figcaption>Make sure that the container name in the connection string exists in the Storage account you select in the dependency \u2013 in this case \u201ctemp-pdf\u201d<\/figcaption>\n<\/figure>\n\n<p class=\"wp-block-paragraph\">Click publish and wait for the success confirmation from Visual Studio.<\/p>\n\n<h3 class=\"wp-block-heading\">You\u2019re all set!<\/h3>\n\n<p class=\"wp-block-paragraph\">All is ready. You can merge any number of pdf documents into one and get a link that will allow direct download of the merged file.<\/p>\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" class=\"wp-image-520\" src=\"https:\/\/powergi.net\/wp-content\/uploads\/2021\/04\/image-7-1024x215.png\" alt=\"\"><\/figure>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>We will create an Azure Function that will merge PDF documents stored in a container of our storage account in Azure, this function will receive the file names to be merged\/combined in the parameters of the URL and they will be separated by commas. Below is an example of the POST request that the code [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":2630,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"default","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"default","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"glossary_letter":"","footnotes":""},"categories":[32],"tags":[13,14,33],"class_list":["post-505","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-azure-cat","tag-automation","tag-azure_tag","tag-azure-function"],"glossary_letter":null,"rank_math_title":null,"rank_math_description":"How to use Azure Functions to merge PDF files automatically. An advanced technical integration solution for your business on the Power GI blog.","rank_math_focus_keyword":null,"_links":{"self":[{"href":"https:\/\/powergi.net\/es\/wp-json\/wp\/v2\/posts\/505","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/powergi.net\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/powergi.net\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/powergi.net\/es\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/powergi.net\/es\/wp-json\/wp\/v2\/comments?post=505"}],"version-history":[{"count":0,"href":"https:\/\/powergi.net\/es\/wp-json\/wp\/v2\/posts\/505\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/powergi.net\/es\/wp-json\/wp\/v2\/media\/2630"}],"wp:attachment":[{"href":"https:\/\/powergi.net\/es\/wp-json\/wp\/v2\/media?parent=505"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/powergi.net\/es\/wp-json\/wp\/v2\/categories?post=505"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/powergi.net\/es\/wp-json\/wp\/v2\/tags?post=505"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}