2016-08-31 10 views
0

私は作物pdfを作成してページを回転しようとしています(すべてのページの横が横になっているはずです)。これは切り取られたページの向きを取得します

私は最初の収穫にこの機能を使用します。

public void obreziPDF(string fileName) 
{ 
    f (System.IO.File.Exists(fileName)) 
    { 
     string putanja = System.IO.Path.GetDirectoryName(fileName); 
     PdfReader pdfReader = new PdfReader(System.IO.File.ReadAllBytes(fileName)); 
     PdfStamper stamper = new PdfStamper(pdfReader, new System.IO.FileStream(fileName, FileMode.Create, FileAccess.Write)); 
     for (int p = 1; p <= pdfReader.NumberOfPages; p++) 
     { 
      PdfDictionary page = pdfReader.GetPageN(1); 
      Rectangle rect = getOutputPageSize(pdfReader, 1); 
      float[] flo = { rect.Left, rect.Bottom, rect.Right, rect.Top }; 
      PdfArray pdfa = new PdfArray(flo); 
      page.Put(PdfName.MEDIABOX, pdfa); 
      stamper.MarkUsed(page); 
     } 
     stamper.Close(); 
     pdfReader.Close(); 
    } 
} 

と、この回転していることを確認し、必要に応じて回転させます。

public void okreniPDF(string fileName) 
{ 
      if (System.IO.File.Exists(fileName)) 
      { 
       string putanja = System.IO.Path.GetDirectoryName(fileName); 
       PdfReader pdfReader1 = new PdfReader(System.IO.File.ReadAllBytes(fileName)); 
       // PdfStamper stamper = new PdfStamper(pdfReader, ms); 
       PdfStamper stamper1 = new PdfStamper(pdfReader1, new System.IO.FileStream(fileName, FileMode.Create, FileAccess.Write)); 
       for (int p = 1; p <= pdfReader1.NumberOfPages; p++) 
       { 
        Rectangle mediabox = pdfReader1.GetPageSize(1); 
        Rectangle cropbox = pdfReader1.GetCropBox(1); 
        Rectangle r1 = pdfReader1.GetBoxSize(1, "media"); 
        PdfDictionary page1 = pdfReader1.GetPageN(1); 
        Rectangle pagesize = pdfReader1.GetPageSizeWithRotation(page1); 
        if (arotiraj.IsChecked == true) 
        { 
         if (pagesize.Left - pagesize.Right > 300) 
         { 
          if (pagesize.Left - pagesize.Right < pagesize.Top - pagesize.Bottom) 
          { 
           page1.Put(PdfName.ROTATE, new PdfNumber(90)); 
          } 
         } 
        } 
     } 
       stamper1.Close(); 
     pdfReader1.Close(); 
    } 
     } 

問題は、長方形のページサイズが未切断サイズになるということです。私は何をしていますか?

答えて

0

次のFAQのトピックをご覧ください:私はあなたの質問の主題を読んだとき

を、私はあなたがクロップボックスを定義したと仮定しました。あなたのコードを読んだとき、あなたは何も変更していないことがわかります。

すべてのページにアクセスするはずのループを作成しますが、常に最初のページのページ辞書を取得します。

あなたが持っている:

PdfDictionary page = pdfReader.GetPageN(1); 

しかし、私は期待:

PdfDictionary page = pdfReader.GetPageN(p); 

を私はgetOutputPageSize()方法が何であるか知らないが、あなたはまた、私が期待するパラメータとして1を渡しますp。それは正しいとは思わない。

​​の方法で同じ誤りがあります。最初のページと最初のページのみをに変更すると、ドキュメント内のページ数が変更されます。それは非常に効果がありません。

更新:

どうやら、あなたはあなたの間違いを知っていた、とあなたは今、あなたが経験している問題は異なるものであると主張しています。しかし、問題の性質を説明するわけではありません。多分あなたが見ているものに対するあなたの解釈はすべて間違っています。

詳細はhttps://stackoverflow.com/a/23356772/1622493をご覧ください。

+0

ブルーノは答えてくれてありがとう。私は今、ループミスについて、テスト目的でattencionalyに作られました。 obreziPDF()は仕事と作物のページを行います(acrobatでは白い余白を取り除いています) - 私はAcrobat Readerでそれを見ました。しかし、okreniPDF()がディメンションを要求するとき、obreziPDF()が切り抜かれたものではなくオリジナルのディメンションを取得します。 – Krkec

+0

質問を整理してください。ループ内のページで行ったエラーは、間違いであり、最初の答えとして期待していたはずです。また、 'mediabox'や' cropbox'のような変数は 'okreniPDF()'では使われません。また、元の寸法が取得されたことをどのように知っていますか?あなたは決してそれらをチェックしない。私は、あなたの問題はあなたのコードがうんざりしていると思う。それをきれいにして、あなたの質問を改善してください:なぜあなたは間違った次元が取り出されたと思いますか?あなたの質問からは分かりません。 –

+0

get page sizeメソッドが返すものの解釈が間違っていると思います。 http:// stackoverflowを読んだことがありますか?com/a/23356772/1622493 –

関連する問題