2

PDFファイルのすべてのページの向きを検出する方法はありますか?

PDF ファイルに透かし (テキスト) を追加するアプリケーションを作成しています。これらのファイルには、縦向き、横向き、または両方の組み合わせのページを含めることができます。

doc.MediaBox プロパティを使用して、以下のロジックを使用します。

portrait = box.Height > box.Width

私の問題は、横向きのドキュメントでも常に真の値を返すことです。

4

3 に答える 3

2

Doc は、1 ページごとに異なる MediaBox を持つことができます。ページ N の Mediabox を調べるには:

doc.PageNumber = n
portrait = doc.Mediabox.Height > doc.Mediabox.Width
于 2013-06-05T14:29:44.347 に答える
1

横向きのページは 2 つの方法で作成できます。縦向きのページでは、高さよりも大きな幅を設定するか、ページの回転を 90 度または 270 度に設定します。ページが縦向きか横向きかを判断する擬似コードは次のようになります。

bool isPortrait = width < height;
if ((rotation == 90) || (rotation == -90) || (rotation == 270))
{
 isPortrait = !isPortrait;
}

ABCPDF には詳しくありませんが、ページの回転にアクセスできると思います。

于 2013-03-22T15:04:30.947 に答える
1

PDF 内でオリエンテーションを実装するには、2 つの方法があります。

正しい方法は、ページの回転角度を指定することです。次の形式のコードを使用して、現在のページの回転を取得できます。

 string GetRotate(Doc doc) {
         return GetInheritedValue(doc, doc.Page, "/Rotate*:Num");
  }

#

  string GetInheritedValue(Doc doc, int id, string name) {
   string val = "";
   for (int i = 1; i < doc.PageCount * 2; i++) { // avoid overflow if doc corrupt
    val = doc.GetInfo(id, name);
    if (val.Length > 0)
     break;
    id = doc.GetInfoInt(id, "/Parent:Ref");
    if (id == 0)
     break;
   }
   return val;
  }

ただし、MediaBox を高いページサイズではなく広いページサイズに設定することで、ページの向きが実装されることがあります。Doc.MediaBox プロパティを使用して、現在の MediaBox を確認できます。

于 2013-06-20T10:57:17.193 に答える