原創|使用教程|編輯:何躍|2021-09-17 14:46:00.013|閱讀 467 次
概述:LEADTOOLS支持150多種光柵、矢量和文檔文件格式,包括SVG、JPEG、PNG等。因此,讓我們深入了解一下,并向您展示它是多么的簡單!
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
最近Leadtools發布了關于如何將PDF轉換為JPEG和將多頁TIFF轉換為PDF。最近有客戶問到如何將多個圖像添加到PDF中。幸運的是,LEADTOOLS支持150多種光柵、矢量和文檔文件格式,包括SVG、JPEG、PNG等。因此,讓我們深入了解一下,并向您展示它是多么的簡單!
1. 先創建PDF文件
// Create file with first page try { BITMAPHANDLE page1 = { 0 }; L_INT return_code = L_LoadBitmap(page1_file, &page1, sizeof BITMAPHANDLE, 24, ORDER_BGR, NULL, NULL); if(return_code < 1) throw(return_code); page1.XResolution = page1.YResolution = BITMAPHEIGHT(&page1) / 11; //set the DPI to cause 11 inch height. return_code = L_SaveBitmap(outputPdf_file, &page1, FILE_RAS_PDF_LZW, 24, 0, NULL); if(return_code < 1) throw(return_code); L_FreeBitmap(&page1); } catch (L_INT err) { cout << "Error Code: " << err; }如果你想使用L_SaveBitmap()追加或替換頁面,現有的PDF文件必須是基于光柵的PDF,與L_SaveBitmap()本身的輸出相似。L_SaveBitmap()還返回一個成功或錯誤代碼,以幫助調試。
2. 接下來,加載一個圖像并將其作為第二頁附加到同一個PDF文件中。
try { BITMAPHANDLE page2 = { 0 }; L_INT return_code = L_LoadBitmap(page2_file, &page2, sizeof BITMAPHANDLE, 24, ORDER_BGR, NULL, NULL); if(return_code < 1) throw(return_code); SAVEFILEOPTION SaveOptions = { 0 }; return_code = L_GetDefaultSaveFileOption(&SaveOptions, sizeof SAVEFILEOPTION); if(return_code < 1) throw(return_code); SaveOptions.PageNumber = 2; page2.XResolution = page2.YResolution = BITMAPHEIGHT(&page2) / 11; //set the DPI to cause 11 inch height. return_code = L_SaveBitmap(outputPdf_file, &page2, FILE_RAS_PDF_LZW, 24, 0, &SaveOptions); if(return_code < 1) throw(return_code); L_FreeBitmap(&page2); } catch (L_INT err) { cout << "Error Code: " << err; }3. 加載兩張圖片,將其合并為一張圖片,并將第一頁替換為由新加載的兩張圖片合并的圖片。
BITMAPHANDLE page2_1 = { 0 }, page2_2 = { 0 }; // Load 2 images for one page try { L_INT return_code = L_LoadBitmap(page2_1_file, &page2_1, sizeof BITMAPHANDLE, 24, ORDER_BGR, NULL, NULL); if(return_code < 1) throw(return_code); return_code = L_LoadBitmap(page2_2_file, &page2_2, sizeof BITMAPHANDLE, 24, ORDER_BGR, NULL, NULL); if(return_code < 1) throw(return_code); L_UINT w = max(BITMAPWIDTH(&page2_1), BITMAPWIDTH(&page2_2)); L_UINT h = BITMAPHEIGHT(&page2_1) + BITMAPHEIGHT(&page2_2); BITMAPHANDLE combinedPage = { 0 }; // Create empty bitmap return_code = L_CreateBitmap(&combinedPage, sizeof BITMAPHANDLE, TYPE_CONV, w, h, 24, ORDER_BGR, NULL, BOTTOM_LEFT, NULL, 0); if(return_code < 1) throw(return_code); // Copy the first image into the empty bitmap return_code = L_CombineBitmap(&combinedPage, 0, 0, BITMAPWIDTH(&page2_1), BITMAPHEIGHT(&page2_1), &page2_1, 0, 0, CB_DST_0 | CB_OP_ADD | CB_RAWCOMBINE, 0); if(return_code < 1) throw(return_code); L_FreeBitmap(&page2_1); // Copy the second image below the first image return_code = L_CombineBitmap(&combinedPage, 0, BITMAPHEIGHT(&page2_1), BITMAPWIDTH(&page2_2), BITMAPHEIGHT(&page2_2), &page2_2, 0, 0, CB_DST_0 | CB_OP_ADD | CB_RAWCOMBINE, 0); if(return_code < 1) throw(return_code); L_FreeBitmap(&page2_2); SaveOptions.PageNumber = 1; SaveOptions.Flags |= ESO_REPLACEPAGE; // add the replace flag to put the combined image instead of the old page1 combinedPage.XResolution = combinedPage.YResolution = BITMAPHEIGHT(&combinedPage) / 11; //set the DPI to cause 11 inch height. return_code = L_SaveBitmap(outputPdf_file, &combinedPage, FILE_RAS_PDF_LZW, 24, 0, &SaveOptions); if(return_code < 1) throw(return_code); L_FreeBitmap(&combinedPage); } catch (L_INT err) { cout << "Error Code: " << err; }這時候您可能就要說,要是我有很多很多張照片該怎么辦?關注下載LEADTOOLS Recognition Imaging Developer Toolkit試一試吧!
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn