반응형

 

 

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
반응형
반응형

 

PDF file을 image 파일로 변환할 일이 있어서 무료 소스를 검색.

 

아래 링크의 소스가 있어서 한번 해 보았다. MIT license 인 무료 소스 이다.

 

Kabindas/Pdf2Image

Contribute to Kabindas/Pdf2Image development by creating an account on GitHub.

github.com

 

소스 용량도 작아서 다운로드 한 소스를 첨부하였다.

 

Pdf2Image-master.zip
0.01MB

 

Visual studio에서 .sln 파일을 열고 컴파일 한 후 생성된 console 프로그램을 실행시키면 된다.

 

 

사용방법은 위 소스에 나와있는데로 변환을 원하는 PDF file을 "C:\tmp\test.pdf" 와 같이.

C:\tmp 위치에 test.pdf 파일명으로 두고 컴파일 후 생성된 ConsoleApp1.exe 파일을 실행하면 된다.

 

 

실행하면 pdf 파일의 모든 내용이 같은 위치에 하나의 페이지에 하나의 이미지 파일이 생성된다.

 

 

기본적으로 jpg 파일로 출력되도록 소스가 코딩되어 있다.

그러나 아래와 같이 출력되는 파일 형식을 변경할 수도 있다. 

아래는 png 파일로 출력 파일 형식을 변경한 것이다.

 

 

간단히 동작되는 것을 확인했으니 이제 이것을 조금 응용하면 원하는 작업을 할 수 있을 것 같다.

 

 

 

728x90
반응형

+ Recent posts