有没有办法检测pdf文件中每个页面的方向?
我正在创建一个将水印(文本)添加到pdf文件的应用程序。 这些文件可以包含纵向,横向或两者的组合。
使用doc.MediaBox属性,我使用以下逻辑:
portrait = box.Height > box.Width
我的问题是,即使在横向文档上也总会返回一个真正的值。
答案 0 :(得分:2)
Doc可以在每个页面上使用不同的MediaBox。要检查Mediabox页面N:
doc.PageNumber = n
portrait = doc.Mediabox.Height > doc.Mediabox.Width
答案 1 :(得分:1)
可以通过两种方式创建横向页面:设置宽度大于高度或将页面旋转设置为纵向页面的90或270度。用于确定页面是纵向还是横向的伪代码如下所示:
bool isPortrait = width < height;
if ((rotation == 90) || (rotation == -90) || (rotation == 270))
{
isPortrait = !isPortrait;
}
我不熟悉ABCPDF,但我认为你可以访问页面轮换。
答案 2 :(得分:0)
有两种方法可以在PDF中实现方向。
正确的方法是指定页面的旋转角度。您可以使用以下格式的代码获取当前页面的旋转。
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。