파일 관리 - 이미지 처리 - pdf

img2pdf, os.path

나도초딩 2022. 10. 8.

https://pypi.org/project/img2pdf/

경로 파악


글로벌 변수 __file__
해당 코드가 저장된 파일의 이름을 반환한다.
ex) code.py

os.path.realpath("code.py")
파일 이름을 인자로 주면 해당 파일의 절대 경로를 반환하여 준다.
ex) C:\Users\code.py

os.path.dirname("C:\Users\code.py")
파일의 경로를 인자로 주면 해당 파일이 속한 디렉터리의 경로를 반환하여 준다.
ex) C:\Users

os.listdir("C:\Users")
디렉터리 경로를 인자로 주면 해당 디렉터리 내에 존재하는 모든 파일 및 디렉터리를 리스트로 반환한다.
ex)["code.py","qwe.jpg","asd.jpg","zxc.jpg"]

convert(이미지 리스트)

# code.py
import os
from img2pdf import convert

# 현재 코드의 파일이름과 위치 outpath
# sys.argv[0]
# '__file__'
# os.getcwd() 

outpath = os.path.dirname(os.path.realpath('__file__'))

with open("out.pdf", "wb") as f:
	pdf_list = []

	for file in os.listdir(outpath):
		if file.endswith(".jpg"): # jpg만
			pdf_list.append(file)

	pdf = convert(pdf_list)
	f.write(pdf)
 
 

png로서 선명하고 깨끗합니다. PDF로 변환하면 같은 크기 일지라도 흐릿하게 보입니다.

기본 해상도는 인치당 72 도트입니다. 그래서 같은 것을 시도하십시오 -density 300.

JPEG 및 JPEG2000 파일을 불필요하게 다시 인코딩하지 않고 이미지를 PDF로 무손실 변환합니다. 따라서 품질 손실 및 불필요한 대용량 출력 파일이 없습니다.

명확히하기 위해 : PDF는 손실없는 JPEG 2000 이미지를 포함 할 수 있습니다 

convert sample.png -quality 0 sample.jp2
img2pdf -o sample.pdf sample.jp2

(물론 JP2 델리게이트를 사용할 수 있다고 가정하십시오 : check identify -list format | grep JP2.)


답변

PDF에서 품질의 손실로 인식하는 것은 PDF 뷰어  앤티 앨리어싱 기능 의 영향 일뿐 입니다.

PDF 구조 / 리더를 준수하려면 png에서 lossless jp2로 변환해야합니다 (제 생각에).

$ convert sample.png -quality 0 sample.jp2
$ img2pdf -o sample.pdf sample.jp2

그러나 .png 파일을 다음과 같이 img2pdf에 직접 제공 할 수 있습니다.

$ img2pdf -o sample.pdf sample-page1.png <sample-page2.png ...>

이렇게하면 가장 작은 pdf 파일이 생성되고 png의 원시 16 진수가 pdf 내의 객체에 손실없이 삽입됩니다 *.

png-to-pdf -density매개 변수의 경우 큰 것이 아니라 작은 것이 좋습니다. 당신은 같은 것을 시도 할 수 있습니다convert -quality 100 -density 50

 

댓글