C#

2016-05-31 6 views
-5

의 작은 크기 (예 : 1MB ~ 300kb)로 PDF 압축 pdf 파일이 5MB 이상이면 데이터베이스를 저장하려고합니다. 그러면 데이터베이스가 더 많은 no.of 파일로 인해 무겁거나 부담이됩니다. 가능한 한 적게 PDF 파일의 크기를 줄이십시오 .... 나는 다음 크기의 코드를 시도했지만 크기가 작 으면 큰 PDF를 압축하는 데 도움이되지 않습니다. 예를 들어 PDF 크기가 2MB라면 700Kb로 압축됩니다. 나는 많은 예제를 시도했지만 결과물을 얻지 못했습니다. 그래서 lossless compression와 ..C#

 PdfReader reader = new PdfReader("D:/User Guid for Artificial Skin.pdf"); 
     PdfStamper stamper = new PdfStamper(reader, new FileStream("d:/pdfdoccompressed.pdf", FileMode.Create), PdfWriter.VERSION_1_5); 
     reader.SetPageContent(1, reader.GetPageContent(1)); 
     int pageNum = reader.NumberOfPages; 
     for (int i = 1; i <= pageNum; i++) 
     { 
      reader.SetPageContent(i, reader.GetPageContent(i)); 
     } 
     stamper.FormFlattening = true; 
     stamper.Writer.CompressionLevel = PdfStream.BEST_COMPRESSION; 
     stamper.SetFullCompression(); 
     stamper.Close(); 
+3

PDF를 압축 할 수 있다고 생각되는 이유가 무엇입니까? – CodeCaster

+0

죄송합니다, 내가 무슨 말을했는지 이해할 수 없다. –

+1

1MB의 예제 파일이 있고이 파일을 300KB로 압축하려고한다고 가정 해보십시오. 왜 이것이 가능할 것이라는 기대를 가지고 있습니까? 다른 소프트웨어가 동일한 파일에서 동일한 작업을 수행합니까? 압축이 어떻게 작동하는지 알고 있습니까? – CodeCaster

답변

0

점 도와주세요 당신이 데이터를 압축 할 수있는 금액에 끝이 있다는 것입니다. 파일을 컨테이너로보고 해당 파일에 일반 압축 알고리즘을 적용하면 파일이 기본적으로 매우 최적으로 저장되므로 파일을 많이 압축하지 않습니다.

매우 단순화 : 일반적으로 PDF 파일은 글꼴 및 양식 필드와 같은 사용되지 않은 (포함 된) 객체가 많이 포함되어 있고 최적화되지 않은 이미지가 많이 포함되어있을 때만 상당히 작게 만들 수 있습니다. 옵티 마이저를 사용하면 사용되지 않는 오브젝트가 삭제되고, 이미지를 인치당 작은 도트 ("더 작은 해상도"), 픽셀 당 비트 수 ("더 작은 비트 수") 또는 둘 다에 저장함으로써 이미지를 축소 할 수 있습니다.

따라서 PdfStream.BEST_COMPRESSION을 PdfStamper에 전달하면 이미 할 수있는 모든 작업을 수행하고있는 것입니다. PdfStamper가 이미하는 것보다 훨씬 간단하게 PDF를 압축 할 수는 없습니다.

그러나 귀하의 의견과 편집을 통해 향후 데이터가 손상 될 수 있으며 데이터를 많이 포함하도록 고안 되었더라도 귀하의 데이터베이스가 손상 될 것을 두려워하는 것 같습니다. 그러나 그 우려는 우리가 당신을 도울 정도로 구체적이지 않습니다.

을 :

그래서 당신이 실제로 그런 식으로 데이터를 저장할지 여부에 많은 이전 논의의 참조

그리고 많은, 많은 다른 사람.