一、c pdf下載
在進行c++開發過程中,我們經常需要使用到pdf文件,比如文檔、資料等等。所以,我們需要學會如何進行c pdf下載。
以下是使用libcurl庫進行c pdf下載的代碼示例:
CURL *curl; FILE *fp; curl = curl_easy_init(); if(curl) { fp = fopen("example.pdf","wb");//設置文件名及方式 curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/example.pdf");//設置下載地址 curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);//設置寫入文件 res = curl_easy_perform(curl);//執行下載 if(res != CURLE_OK) fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); curl_easy_cleanup(curl);//清理資源 fclose(fp); }
二、安全員c證考試題庫pdf
對於一些需要進行考試或者提升職業技能的人群來說,這個題庫是非常重要的。而且,很多人喜歡將題庫下載到本地進行學習和備考。下面是使用libcurl庫進行c++pdf下載示例:
CURL *curl; FILE *fp; curl = curl_easy_init(); if(curl) { fp = fopen("安全員c證考試題庫.pdf","wb");//設置文件名及方式 curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/安全員c證考試題庫.pdf");//設置下載地址 curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);//設置寫入文件 res = curl_easy_perform(curl);//執行下載 if(res != CURLE_OK) fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); curl_easy_cleanup(curl);//清理資源 fclose(fp); }
三、c pdf讀取
c pdf讀取是非常常見的操作,我們可以使用一些第三方庫來進行c pdf讀取的操作。比如說,我們可以使用Poppler庫來進行c pdf讀取。以下代碼示例,演示如何使用Poppler庫來讀取pdf文件:
#include <poppler/cpp/poppler-document.h> #include <poppler/cpp/poppler-page.h> #include <iostream> int main() { auto doc = poppler::document::load_from_file("example.pdf");//加載pdf文件 if (!doc || doc->is_locked() || doc->permissions() != poppler::document::Permissions::All) { std::cerr << "Cannot open the PDF file.\n"; return EXIT_FAILURE; } for(int i = 0; i pages(); ++i) {//遍歷所有頁 auto page = doc->create_page(i); auto text = page->text(poppler::page::TextLayout::PhysicalLayout);//獲取文本信息 std::cout << text << '\n';//輸出文本 } }
四、cpd粉底液多少錢
這個標題雖然和c++pdf沒有直接的關係,但是為了說明如何使用pdf進行數據抓取,我們選擇了cpd粉底液多少錢來舉例。以下代碼示例,演示如何使用pdfminer庫來對cpd粉底液的pdf價目表進行抓取:
import pdfminer.high_level import re with open('cpd_price.pdf', 'rb') as file: price_table = pdfminer.high_level.extract_text(file) price_list = re.findall(r'(?<=CPD粉底液.*)(\d+\.\d+)', price_table) print('CPD粉底液的價格:', price_list[0], '元')
五、c pdf簽章
pdf簽章是對pdf文件進行保護和認證的一種方式,要進行c pdf簽章,我們可以使用OpenSSL庫。以下是示例代碼:
#include <openssl/evp.h> #include <openssl/rsa.h> #include <openssl/x509.h> #include <openssl/pkcs12.h> int main() { const char* password = "password";//密鑰文件密碼 X509* cert = nullptr;//證書 EVP_PKEY* pkey = nullptr;//私鑰 PKCS12* pkcs12 = nullptr;//密鑰文件 FILE* fp = fopen("key.p12", "rb"); if (!fp) { puts("Cannot open the key file."); return EXIT_FAILURE; } pkcs12 = d2i_PKCS12_fp(fp, nullptr); fclose(fp); if (!PKCS12_parse(pkcs12, password, &pkey, &cert, nullptr)) { puts("Failed to parse the key file."); return EXIT_FAILURE; } EVP_MD* digest = EVP_get_digestbyname("sha256");//摘要算法 int flags = PKCS7_DETACHED | PKCS7_NOSMIMECAP | PKCS7_NOCERTS | PKCS7_NOATTR | PKCS7_NOSIGS;//簽名選項 PKCS7* pkcs7 = PKCS7_sign(cert, pkey, nullptr, nullptr, flags);//簽名 BIO* out = BIO_new_file("signed.pdf", "wb"); PEM_write_bio_PKCS7(out, pkcs7);//輸出簽名文件 PKCS7_free(pkcs7); BIO_free(out); EVP_PKEY_free(pkey); X509_free(cert); PKCS12_free(pkcs12); return EXIT_SUCCESS; }
六、佳能c5235掃描pdf
如果我們需要將一些紙質文件轉換為pdf文件,我們可以通過佳能打印掃描儀進行掃描,得到掃描後的pdf文件。以下是使用佳能c5235進行掃描pdf的示例代碼:
#include <twain.h> #include <stdio.h> void CALLBACK TwainCallback(pTW_IDENTITY,LPSTR pSourceName,pTW_IDENTITY,const TW_MEMREF); int main() { TW_IDENTITY AppID; TW_UINT16 Status; memset(&AppID,0,sizeof(TW_IDENTITY)); AppID.Id = 0; AppID.Version.MajorNum = TWON_VERSION_MAJOR; AppID.Version.MinorNum = TWON_VERSION_MINOR; AppID.Version.Language = TWLG_CHINESE_SIMPLIFIED; strcpy((char*)AppID.Version.Info, "Example 1"); AppID.ProtocolMajor = TWON_PROTOCOLMAJOR; AppID.ProtocolMinor = TWON_PROTOCOLMINOR; AppID.SupportedGroups = DG_CONTROL | DG_IMAGE; sprintf((char*)AppID.Manufacturer, "Canon\n"); sprintf((char*)AppID.ProductFamily, "WinTest\n"); sprintf((char*)AppID.ProductName, "TW WinTest\n"); if(!DSM_Entry(&AppID,NULL,DG_CONTROL,DAT_PARENT,MSG_OPENDSM,(TW_MEMREF)&HwndMain)){ printf("打開數據來源管理器失敗!"); return 0; } if(!DSM_Entry(&AppID,NULL,DG_CONTROL,DAT_IDENTITY,MSG_GETFIRST,(TW_MEMREF)&SrcID)){ printf("獲取數據來源失敗!"); return 0; } if(!DSM_Entry(&AppID,NULL,DG_CONTROL,DAT_IDENTITY,MSG_OPENDS,(TW_MEMREF)&SrcID)){ printf("打開數據源失敗!"); return 0; } memset(&Cap, 0, sizeof(TW_CAPABILITY)); Cap.Cap = ICAP_COMPRESSION;//設置設備的輸出格式 Cap.ConType = TWON_ONEVALUE; Cap.hContainer = GlobalAlloc(GHND,sizeof(TW_ONEVALUE));//放設備格式 pCap = (pTW_ONEVALUE)GlobalLock(Cap.hContainer); pCap->lVal = TWCP_NONE; GlobalUnlock(Cap.hContainer); memset(&ImgInf, 0, sizeof(TW_IMAGEINFO)); memset(&ImgLayout, 0, sizeof(TW_IMAGELAYOUT)); memset(&GryChnl, 0, sizeof(TW_PIXELBUFFER)); memset(&RwyChnl, 0, sizeof(TW_PIXELBUFFER)); memset(&BluChnl, 0, sizeof(TW_PIXELBUFFER)); memset(&BufInfo, 0, sizeof(TW_BUFFER)); lpHelperStruct = new HelperStruct; lpHelperStruct->hwndMain = HwndMain; lpHelperStruct->hwndChild = HwndChild; lpHelperStruct->FlagStopScanning = FALSE; DlgMsg = DialogBox((HINSTANCE)GetWindowLongPtr(HwndMain,GWLP_HINSTANCE), (LPCTSTR)IDD_TWAIN,dummywin,DlgProc); DSM_Entry(&AppID,NULL,DG_CONTROL,DAT_PARENT,MSG_CLOSEDSM,(TW_MEMREF)&HwndMain); return 0; } void CALLBACK TwainCallback(pTW_IDENTITY pOrigin, LPSTR pSourceName,pTW_IDENTITY pDest,const TW_MEMREF pData){ HelperStruct* lpHelperStruct = (HelperStruct*)pData; MsgTwain = (pTW_USERINTERFACE)&TwainMsg; memset(MsgTwain, 0, sizeof(TW_USERINTERFACE)); MsgTwain->ShowUI = TRUE; MsgTwain->ModalUI = FALSE; MsgTwain->hParent = lpHelperStruct->hwndChild; TwainMsg = TWAIN_DSMIDENTIFIER; Status = DSM_Entry(NULL, NULL, DG_CONTROL, DAT_IDENTITY, MSG_GET, (TW_MEMREF)&srcID); if(Status != TWRC_SUCCESS){ printf("Cannot get image source.\n"); return; } Status = DSM_Entry(NULL, NULL, DG_CONTROL, DAT_USERINTERFACE, MSG_ENABLEDS,(TW_MEMREF)&(MsgTwain->ShowUI)); if(Status != TWRC_SUCCESS){ printf("Cannot enable UI.\n"); return; } return; }
七、c pdf加密
c pdf加密是為了保護pdf文件內容安全,防止不被授權的人查看、修改、複製等。我們可以使用PDFlib庫進行c pdf加密。
#include <pdflib.h> int main() { PDF *p; int page; p = PDF_new(); if (PDF_set_option(p, "license=", "your license key") == -1) { puts("Cannot set license."); return EXIT_FAILURE; } if (PDF_begin_document(p, "encrypted.pdf", 0, "") == -1) { puts("Cannot create document."); PDF_delete(p); return EXIT_FAILURE; } if (PDF_set_info(p, "Author", "author") == -1 || PDF_set_info(p, "Title", "title") == -1 || PDF_set_info(p, "Subject", "subject") == -1 || PDF_set_info(p, "Keywords", "keywords") == -1) { puts("Cannot set document info."); PDF_end_document(p, ""); PDF_delete(p); return EXIT_FAILURE; } page = PDF_begin_page(p, 595, 842); if (page == -1) { puts("Cannot create page."); PDF_end_document(p, ""); PDF_delete(p); return EXIT_FAILURE; } PDF_end_page(p); PDF_end_document(p, ""); PDF_delete(p); return EXIT_SUCCESS; }
八、c pdf轉圖片
我們可以使用第三方庫ImageMagick進行c pdf轉圖片的操作。以下是使用Magick++進行c pdf轉圖片的示例代碼:
#include <Magick++.h> #include <iostream> int main() { Magick::Image image; try { image.read("example.pdf[0]");//選擇第一頁進行轉換 image.write("example.jpg");//輸出為jpg文件 } catch (Magick::Exception &ex) { std::cerr << "Magick++ exception: " << ex.what() << "\n"; return EXIT_FAILURE; } return EXIT_SUCCESS; }
九、c pdf圖片
c pdf圖片是將一張圖片文件轉換為pdf文件的操作。我們可以使用libHaru庫來進行c pdf圖片的操作。以下是使用libHaru進行c pdf圖片的示例代碼:
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
#include <stdlib.h>
#include &原創文章,作者:SNPOL,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/324510.html