2017-12-11 10 views
0

私はAsposeを初めて使うので、私は以下の場合に助けが必要です。
私はAsposeを使用して複数のPDFを1つのPDFにマージしようとしていますが、簡単にすることはできますが、問題はPDFサイズを200MBに制限したいのです。
つまり、私の統合PDFサイズが200MBを超える場合、PDFを複数のPDFに分割する必要があります。たとえば、結合したPDFが300MBの場合、最初のPDFは200MB、2番目のPDFは100MBにする必要があります。Asposeを使用してサイズに基づいてPDFをマージする

主な問題は、私は以下のコードで文書のサイズを見つけることができません。私は以下のコードを使用しています。

Document destinationPdfDocument = new Document(); 
       Document sourcePdfDocument = new Document(); 

      //Merge PDF one by one 
      for (int i = 0; i < filesFromDirectory.Count(); i++) 
      { 
       if (i == 0) 
       { 
        destinationPdfDocument = new Document(filesFromDirectory[i].FullName); 
       } 
       else 
       { 
        // Open second document 
        sourcePdfDocument = new Document(filesFromDirectory[i].FullName); 

        // Add pages of second document to the first 
        destinationPdfDocument.Pages.Add(sourcePdfDocument.Pages); 


        //** I need to check size of destinationPdfDocument over here to limit the size of resultant PDF** 

       } 
      } 

      // Encrypt PDF 
      destinationPdfDocument.Encrypt("userP", "ownerP", 0, CryptoAlgorithm.AESx128); 

      string finalPdfPath = Path.Combine(destinationSourceDirectory, destinatedPdfPath); 

      // Save concatenated output file 
      destinationPdfDocument.Save(finalPdfPath); 

サイズに基づいてPDFをマージする他の方法もあります。
おかげでアドバンス

答えて

0

に私は物理的にそれを保存する前に、PDFファイルのサイズを決定する直接的な方法がないことを恐れています。したがって、問題追跡システムにPDFNET-43073という機能要求を既に記録しており、製品チームはこの機能の実現可能性を調査しています。この機能の利用可能性に関するいくつかの重要な更新が行われるとすぐに、私たちは間違いなくあなたに通知します。ちょっと時間を惜しまないでください。

しかし、回避策として、ドキュメントをメモリストリームに保存し、そのメモリストリームのサイズが目的のPDFサイズを超えているかどうかに関係なく、そのメモリストリームのサイズを確認することができます。前述の方法で200MBの希望サイズのPDFを生成した次のコードスニペットを確認してください。

//Instantiate document objects 
Document destinationPdfDocument = new Document(); 
Document sourcePdfDocument = new Document(); 

//Load source files which are to be merged 
var filesFromDirectory = Directory.GetFiles(dataDir, "*.pdf"); 

for (int i = 0; i < filesFromDirectory.Count(); i++) 
{  
if (i == 0) 
{ 
destinationPdfDocument = new Document(filesFromDirectory[i]); 
} 
else 
{ 
// Open second document 
sourcePdfDocument = new Document(filesFromDirectory[i]); 
// Add pages of second document to the first 
destinationPdfDocument.Pages.Add(sourcePdfDocument.Pages); 
//** I need to check size of destinationPdfDocument over here to limit the size of resultant PDF** 
MemoryStream ms = new MemoryStream(); 
destinationPdfDocument.Save(ms); 
long filesize = ms.Length; 
ms.Flush(); 
// Compare the filesize in MBs 
if (i == filesFromDirectory.Count() - 1) 
{ 
    destinationPdfDocument.Save(dataDir + "PDFOutput_" + i + ".pdf"); 
} 
else if ((filesize/(1024 * 1024)) < 200) 
continue; 
else 
{ 
    destinationPdfDocument.Save(dataDir + "PDFOutput_" + i.ToString() + ".pdf"); 
    destinationPdfDocument = new Document(); 
} 
} 
} 

私はこれが役に立ちそうです。さらなる支援が必要な場合はお知らせください。

私は開発者エバンジェリストとしてAsposeを使用しています。

関連する問題