반응형

 

 

Pdf2Image source를 적용하여 많은 page의 pdf file을 변환하다가 문제점이 발견되었다.

메모리가 소모가 지속적으로 증가하는 것이였다.

작은 page의 PDF file을 변환할 때는 메모리가 증가해도 그다지 문제가 되지 않았으나,

많은 page의 PDF file을 변환할 때는 1GB 이상으로 지속적으로 메모리 소모가 증가되었다.

 

그래서 소스를 확인하고 수정을 해 보았다.

여러번의 시행착오 끝에 아래와 같이 수정하니 메모리의 할당과 해제가 반복되면서 메모리의 증가 현상이 해결되었다.

 

ProcessPDF2Filesystem 함수의 내부에서 image를 얻는 부분과 파일로 image를 저장하는 부분을 아래와 같이 수정하였다.

 

GetPDFImage 함수를 호출하지 않고 그 내용을 그대로 가져와서 사용하고,

사용한 후의 image와 pdFiumBitmap을 Dispose 하여

메모리의 증가 현상을 해결하였다.

 

 

참고로 아래는 원래 호출하여 사용하던 GetPDFImage 함수의 내용이다. 

 

 

아래는 많은 pdf page의 데이터를 변환하는 과정에서의 메모리 변화이다.

 

 

아래는 약 3만 page의 변환을 끝내고 난 뒤의 메모리 상태이다. 

구세대 i5, 8GB RAM의 노트북에서 약 79분 걸렸다. ㅡ.ㅡ; 

 

 

이제 이 라이브러리를 어느 정도 사용할 수 있을 정도가 된 것 같다.

 

 

 

 

728x90
반응형

'공부 > C#' 카테고리의 다른 글

210202 C# Barcode reader project (1)  (0) 2021.02.10
210202 OpenCV PictureBoxlpl  (0) 2021.02.09
210126 Pdf2Image winform project (3)  (0) 2021.02.05
210125 Pdf2Image winform project (2)  (0) 2021.02.01
210124 Pdf2Image winform project (1)  (0) 2021.01.31
반응형

 

 

이번에는 Pdf2Image로 이미지 파일을 만들 때 크기를 변경하는 방법

 

Pdf2Image로 이미지를 만들었을 때 이미지의 크기가 그렇게 많이 커지지 않았다.

이미지 편집 프로그램 GIMP 으로 PDF를 열었을 때에는 resolution의 값으로 크기를 조절할 수 있었다.

 

 

Pdf2Image는 scale로 크기를 조절할 수 있다. 

그런데 이 값이 1, 2, 3 밖에 없다.

그래서 이 값을 임의로 바꾸어 보았다. 그랬더니 이미지크기가 더 크게 변했다.

 

 

소스를 따라가 보면, WriteImage에서 Scale 을 파라미터로 준다.

 

 

함수를 계속 따라가 보면 GetPdfImage 에서 Scale의 값이 resolution으로 이미지의 크기에 곱해지는 것을 알 수 있다.

 

 

 

 

 

728x90
반응형

'공부 > C#' 카테고리의 다른 글

210202 OpenCV PictureBoxlpl  (0) 2021.02.09
210128 Pdf2Image winform project (4)  (0) 2021.02.07
210125 Pdf2Image winform project (2)  (0) 2021.02.01
210124 Pdf2Image winform project (1)  (0) 2021.01.31
210122 C# Pdf to Image program source (Pdf2Image)  (0) 2021.01.24
반응형

 

 

Console로 된 Pdf2Image를 winform으로 제작해 보았다.

Winform 프로젝트로 시작한 뒤,  PdfSplitter.cs를 프로젝트에 복사 한다.

 

그랬더니 빨간줄으로 에러가 가득. ^^

 

 

공개 소스의 패키지 목록을 보니 위와 같았다. 그래서 하나씩 설치했다.

 

오른쪽 솔루션 탐색기 창의 프로젝트에서 오른쪽 클릭하여 NuGet 패키지관리... 선택.

PDFium.Windows를 검색하고 선택하여 설치.

 

 

PDFiumSharpV2 를 검색하고 설치. >> 확인.

 

 

라이선스 승인 동의.

 

 

iTextSharp.LGPLv2.Core 검색 및 설치.

 

 

다 설치하고 나니 솔루션 탐색기가 아래와 같다.

 

 

packages.config 내용.

 

 

이와 같이 한 후 winform 에 버튼을 하나 만들고 버튼 클릭했을 때 이벤트 부분에 공개 소스의 ConsoleApp1에 있는 소스를 그대로 복사하여 적용.

 

 

컴파일 하고 실행하니 에러 없이 잘 동작한다. ^^

728x90
반응형

+ Recent posts