LibHaru
PDF 문서용 오픈소스 C++ 라이브러리
오픈 소스 C++ API를 통해 PDF 파일을 생성, 편집, 조작 및 변환합니다.
LibHaru는 소프트웨어 개발자가 PDF 파일 형식을 생성할 수 있도록 하는 오픈 소스 C++ 라이브러리입니다. 현재 API는 기존 PDF 문서를 읽거나 편집하는 것을 허용하지 않습니다. API를 사용하여 PDF 파일을 생성할 수 있습니다. 텍스트, 라인 및 주석을 추가할 수 있습니다. 또한 문서에 PNG 및 JPEG 형식의 이미지를 추가할 수도 있습니다. LibHaru는 또한 deflate-decode 형식으로 PDF 문서를 압축하고 암호화된 PDF 문서를 생성할 수 있습니다.
LibHaru는 ANSI-C로 작성되었으며 정적 라이브러리와 공유 라이브러리로 모두 작동할 수 있습니다. C++ 프로그램과 함께 사용하려면 C++ 컴파일러로 컴파일하고 정적 라이브러리로 사용할 수 있습니다.
LibHaru 시작하기
LibHaru는 ANSI-C로 작성되었으며 C++와 함께 사용하려면 호환되는 모든 C++ 컴파일러로 컴파일할 수 있습니다. 먼저 최신 버전의 API를 다운로드하여 추출할 수 있습니다. 스크립트 디렉토리에는 모든 컴파일러에 대해 여러 종류의 makefile이 있습니다. 적절한 makefile로 라이브러리를 빌드하십시오.
스크립트 디렉토리에는 모든 컴파일러에 대해 여러 종류의 makefile이 있습니다. 적절한 makefile로 라이브러리를 빌드하십시오.
컴파일러용 라이브러리 빌드
//Microsoft VC++ Compiler
NMAKE -f script/Makefile.msvc
//Borland C++ Compiler
make -f script/Makefile.BCC
PDF 파일 형식을 생성하는 C++ 라이브러리
LibHaru는 소프트웨어 개발자가 PDF 파일 형식을 생성할 수 있도록 하는 일련의 기능을 제공했습니다. API를 사용하여 새 PDF 문서를 만들고, 문서 개체 속성을 설정하고, 새 페이지를 만들고, 페이지 개체를 설정하고, 페이지 설명을 설정하고, 문서를 파일 또는 메모리 스트림에 저장할 수 있습니다.
C++를 사용하여 PDF에 이미지 포함
LibHaru를 사용하면 소프트웨어 개발자가 PDF 문서에 JPEG 및 PNG 이미지를 포함할 수 있습니다. API를 사용하여 이미지 크기, 너비, 높이, 구성요소당 비트 수 및 색상 공간을 얻을 수 있습니다. 또한 포함된 이미지에 대해 컬러 마스크 및 마스크 이미지를 설정할 수 있습니다.
C++ API를 사용하여 암호화된 PDF 파일 생성
암호화는 정보를 정보의 진정한 의미를 숨기는 비밀 코드로 인코딩할 수 있는 매우 유용한 메커니즘입니다. 오픈 소스 라이브러리 LibHaru를 사용하면 소프트웨어 개발자가 외부 종속성 없이 암호화된 PDF 파일을 만들 수 있습니다.
C++를 통해 암호화된 PDF 파일 생성
const static char* text = "This is an encrypt document example.";
const static char* owner_passwd = "owner";
const static char* user_passwd = "user";
jmp_buf env;
#ifdef HPDF_DLL
void __stdcall
#else
void
#endif
error_handler (HPDF_STATUS error_no,
HPDF_STATUS detail_no,
void *user_data)
{
printf ("ERROR: error_no=%04X, detail_no=%u\n", (HPDF_UINT)error_no,
(HPDF_UINT)detail_no);
longjmp(env, 1);
}
int
main (int argc, char **argv)
{
HPDF_Doc pdf;
HPDF_Font font;
HPDF_Page page;
char fname[256];
HPDF_REAL tw;
strcpy (fname, argv[0]);
strcat (fname, ".pdf");
pdf = HPDF_New (error_handler, NULL);
if (!pdf) {
printf ("error: cannot create PdfDoc object\n");
return 1;
}
if (setjmp(env)) {
HPDF_Free (pdf);
return 1;
}
/* create default-font */
font = HPDF_GetFont (pdf, "Helvetica", NULL);
/* add a new page object. */
page = HPDF_AddPage (pdf);
HPDF_Page_SetSize (page, HPDF_PAGE_SIZE_B5, HPDF_PAGE_LANDSCAPE);
HPDF_Page_BeginText (page);
HPDF_Page_SetFontAndSize (page, font, 20);
tw = HPDF_Page_TextWidth (page, text);
HPDF_Page_MoveTextPos (page, (HPDF_Page_GetWidth (page) - tw) / 2,
(HPDF_Page_GetHeight (page) - 20) / 2);
HPDF_Page_ShowText (page, text);
HPDF_Page_EndText (page);
HPDF_SetPassword (pdf, owner_passwd, user_passwd);
/* save the document to a file */
HPDF_SaveToFile (pdf, fname);
/* clean up */
HPDF_Free (pdf);
return 0;
}