2011-02-28 11 views
2

Apache Fop 1.0을 사용하여 PDF 문서를 만듭니다. 기본적으로 FlateFilter를 사용하여 내용을 압축합니다. FOP는 커버 아래에 DeflaterOutputStream DEFAULT_COMPRESSION을 사용합니다. BEST_COMPRESSION으로 설정할 가능성을 찾지 못했습니다.PDF, Java with barcode4j 압축

pdf에는 Barcode4j 2.1에서 생성 된 일부 바코드가 포함되어 있습니다. 내가 생성 된 이미지가 매우 거대하고 보는 바와 같이 나는 그것을 압축 방법 어떤 정보를 발견하지 않았습니다 : 나는 (위의 기록 된 바코드 주사를 맵시 꾼에 flate를 사용하여 사용) PDF를 생성 할 경우

<fo:instream-foreign-object height="25pt" width="101pt"> 
    <barcode:barcode xmlns:barcode="http://barcode4j.krysalis.org/ns" message="xxxxxxxx"> 
    <barcode:code128> 
     <barcode:height>37pt</barcode:height> 
     <barcode:module-width>0.9pt</barcode:module-width> 
     <barcode:human-readable> 
     <barcode:placement>none</barcode:placement> 
     </barcode:human-readable> 
    </barcode:code128> 
    </barcode:barcode> 
</fo:instream-foreign-object> 

, 그때 내가 줄 수 단순한 winzip으로 pdf 크기를 30 퍼센트 늘릴 수 있습니다.

내 프로세스에서 더 나은 압축 알고리즘을 사용할 수있는 방법이 있습니까? pdf는 Acrobat Reader에서 열 수 있어야하므로 서버 쪽에서 압축하여 클라이언트 쪽에서 압축을 푸는 옵션이 아닙니다.

나는 이미지를 생성 할 수있는 barcode4j를 생성 할 수 있다고 생각하지만 어떻게해야하는지 알 수 없다.

업데이트 1 : 생성 된 바코드가 너무 큰 것 같습니다. pdf에는 3 페이지와 3 개의 바코드가 있습니다. 3 개의 바코드는 전체 pdf 크기의 약 50 %입니다.

감사

졸탄 기본 압축 설정과 최대 사이에 큰 차이가 없습니다

+1

PDF의 바코드는 벡터 그래픽으로 표현할 수 있으므로 매우 작아야합니다. Barcode4j는 EPS를 생성 할 수 있습니다. PDF로 변환 할 수있는 방법이 있습니다. 그것은 많은 공간을 절약해야합니다. –

+0

감사합니다. 문제는 barcode4j 때문일 수 있습니다. 3 개의 바코드는 15 킬로바이트입니다. – HamoriZ

답변

1

. ZLib에 대해 알고 있다면 테스트 코드를 작성하여 예상보다 훨씬 적은 수의 코드를 작성할 수 있습니다. 크기가 30 % 작아지는 이유는 전체 파일에 압축이 적용된다는 것입니다. PDF의 경우에만 스트림이 압축됩니다.

압축 된 개체 스트림을 사용하면 크기를 크게 줄일 수 있습니다. FOP는이를 지원하지 않지만 많은 도구가이를 지원합니다. 자세한 내용은 here을 참조하십시오.