{"id":6002,"date":"2022-08-31T21:26:30","date_gmt":"2022-08-31T15:56:30","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-read-an-image-or-pdf-using-c-without-external-library\/"},"modified":"2022-08-31T21:26:30","modified_gmt":"2022-08-31T15:56:30","slug":"solved-read-an-image-or-pdf-using-c-without-external-library","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-read-an-image-or-pdf-using-c-without-external-library\/","title":{"rendered":"[Solved] Read an image or pdf using C++ without external library"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-33783170\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"33783170\" data-parentid=\"33780943\" data-score=\"1\" data-position-on-page=\"2\" data-highest-scored=\"0\" data-question-has-accepted-highest-score=\"0\" itemprop=\"suggestedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<p>There is no difference what file you are reading opened in binary mode, there is only difference is how you should interpret the data you get from the file.<\/p>\n<p>It&#8217;s significantly better to take ready to use library like e.g. <a rel=\"nofollow noopener\" target=\"_blank\" href=\"http:\/\/sourceforge.net\/projects\/libjpeg\/\">libjpeg<\/a> or whatever. There are plenty of them. But If you really want to do this, at first you should define suitable structures and constants (see links below) to make code to be convinient and useable. Then you just read the data and try to interpret it step by step. The code below is just pseudo code, I didn&#8217;t compile it.<\/p>\n<pre><code>#include &lt;fstream&gt;\n\n\/\/ define header structure\nstruct jpeg_header \n{ \n  enum class marker: unsigned short { eoi = 0xffd8, sof0 = 0xffc0 ... };\n  ...\n};\n\nbool is_eoi(unsigned short m) { return jpeg_header::eoi == m; }\n\njpeg_header read_jpeg_header(const std::string&amp; fn)\n{\n    std::ifstream inf(fn, std::ifstream::binary);\n    if (!inf) \n    {\n        throw std::runtime_error(\"Can't open file: \" + fn);\n    }\n\n    inf.exceptions(std::ifstream::failbit | std::ifstream::eofbit);\n\n    unsigned short marker = inf.get() &lt;&lt; 8;\n    marker |= inf.get();\n    if (!is_eoi(marker))\n    {\n        throw std::runtime_error(\"Invalid jpeg header\");\n    }\n    ...\n\n    jpeg_header header;\n    \/\/ read further and fill header structure\n    ...\n    return header;\n}\n<\/code><\/pre>\n<p>To read huge block of data use <code>ifstream::read()<\/code>, <code>ifstream::readsome()<\/code> methods. Here is the good example <a rel=\"nofollow noopener\" target=\"_blank\" href=\"http:\/\/en.cppreference.com\/w\/cpp\/io\/basic_istream\/read\">http:\/\/en.cppreference.com\/w\/cpp\/io\/basic_istream\/read<\/a>.<br \/>\nThose functions also work faster then stream iterators. It&#8217;s also better define your own exception classes derived from <code>std::runtime_error<\/code>.<\/p>\n<p>For details on file formats you interested in look here<\/p>\n<ul>\n<li>Structure of a PDF file?<\/li>\n<li><a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/JPEG_File_Interchange_Format\">https:\/\/en.wikipedia.org\/wiki\/JPEG_File_Interchange_Format<\/a><\/li>\n<li><a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/JPEG\">https:\/\/en.wikipedia.org\/wiki\/JPEG<\/a><\/li>\n<\/ul>\n<\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\"><\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved Read an image or pdf using C++ without external library <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] There is no difference what file you are reading opened in binary mode, there is only difference is how you should interpret the data you get from the file. It&#8217;s significantly better to take ready to use library like e.g. libjpeg or whatever. There are plenty of them. But If you really want to &#8230; <a title=\"[Solved] Read an image or pdf using C++ without external library\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-read-an-image-or-pdf-using-c-without-external-library\/\" aria-label=\"More on [Solved] Read an image or pdf using C++ without external library\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[324],"class_list":["post-6002","post","type-post","status-publish","format-standard","hentry","category-solved","tag-c"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Solved] Read an image or pdf using C++ without external library - JassWeb<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jassweb.com\/solved\/solved-read-an-image-or-pdf-using-c-without-external-library\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] Read an image or pdf using C++ without external library - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] There is no difference what file you are reading opened in binary mode, there is only difference is how you should interpret the data you get from the file. It&#8217;s significantly better to take ready to use library like e.g. libjpeg or whatever. There are plenty of them. But If you really want to ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-read-an-image-or-pdf-using-c-without-external-library\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-08-31T15:56:30+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-read-an-image-or-pdf-using-c-without-external-library\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-read-an-image-or-pdf-using-c-without-external-library\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] Read an image or pdf using C++ without external library\",\"datePublished\":\"2022-08-31T15:56:30+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-read-an-image-or-pdf-using-c-without-external-library\/\"},\"wordCount\":200,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\"c++\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-read-an-image-or-pdf-using-c-without-external-library\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-read-an-image-or-pdf-using-c-without-external-library\/\",\"name\":\"[Solved] Read an image or pdf using C++ without external library - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2022-08-31T15:56:30+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-read-an-image-or-pdf-using-c-without-external-library\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-read-an-image-or-pdf-using-c-without-external-library\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-read-an-image-or-pdf-using-c-without-external-library\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] Read an image or pdf using C++ without external library\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jassweb.com\/solved\/#website\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jassweb.com\/solved\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"contentUrl\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750\",\"contentUrl\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\/\/jassweb.com\"],\"url\":\"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] Read an image or pdf using C++ without external library - JassWeb","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jassweb.com\/solved\/solved-read-an-image-or-pdf-using-c-without-external-library\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] Read an image or pdf using C++ without external library - JassWeb","og_description":"[ad_1] There is no difference what file you are reading opened in binary mode, there is only difference is how you should interpret the data you get from the file. It&#8217;s significantly better to take ready to use library like e.g. libjpeg or whatever. There are plenty of them. But If you really want to ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-read-an-image-or-pdf-using-c-without-external-library\/","og_site_name":"JassWeb","article_published_time":"2022-08-31T15:56:30+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-read-an-image-or-pdf-using-c-without-external-library\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-read-an-image-or-pdf-using-c-without-external-library\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] Read an image or pdf using C++ without external library","datePublished":"2022-08-31T15:56:30+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-read-an-image-or-pdf-using-c-without-external-library\/"},"wordCount":200,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["c++"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-read-an-image-or-pdf-using-c-without-external-library\/","url":"https:\/\/jassweb.com\/solved\/solved-read-an-image-or-pdf-using-c-without-external-library\/","name":"[Solved] Read an image or pdf using C++ without external library - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-08-31T15:56:30+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-read-an-image-or-pdf-using-c-without-external-library\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-read-an-image-or-pdf-using-c-without-external-library\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-read-an-image-or-pdf-using-c-without-external-library\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] Read an image or pdf using C++ without external library"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/6002","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=6002"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/6002\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=6002"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=6002"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=6002"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}