ABCPdf更改特定页面的方向

时间:2018-03-14 09:18:44

标签: c# abcpdf

下面的代码创建了一个横向的新PDF。它使用ABCPdf组件。

static void Main(string[] args)
{
    var filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "da.pdf");

    var theDoc = new Doc();
    //theDoc.Read(filePath);

    // apply a rotation transform
    theDoc.MediaBox.String = "Legal";
    double w = theDoc.MediaBox.Width;
    double h = theDoc.MediaBox.Height;
    double l = theDoc.MediaBox.Left;
    double b = theDoc.MediaBox.Bottom;
    theDoc.Transform.Rotate(90, l, b);
    theDoc.Transform.Translate(w, 0);

    // rotate our rectangle
    theDoc.Rect.Width = h;
    theDoc.Rect.Height = w;

    // add some text
    theDoc.Rect.Inset(50, 50);
    theDoc.FontSize = 96;
    theDoc.AddText("Landscape Orientation");
    theDoc.AddPage();
    theDoc.PageNumber = theDoc.PageCount;
    theDoc.AddText("Page 2");

    // adjust the default rotation and save
    int theID = theDoc.GetInfoInt(theDoc.Root, "Pages");
    theDoc.SetInfo(theID, "/Rotate", "90");
    theDoc.Save(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "out.pdf"));
    theDoc.Clear();
}

我想打开现有的PDF并使用ABCPdf将特定页面的方向更改为横向,而不是创建新的pdf。比如第一页将是肖像,第二页将是风景。

由于

1 个答案:

答案 0 :(得分:0)

您可以这样做,或使用“AddImageDoc”方法,插入修改过的页面......

但是

Abcpdf不允许覆盖源文件。从“保存方法文档”:

  

ABCpdf运行智能即时对象加载方案   这确保只加载那些所需的对象   进入记忆。这意味着如果您正在修改大型文档   服务器负载将保持在最低限度。原始PDF文档必须   只要正在使用Doc对象就可以使用。

     

因此您无法在阅读时修改或覆盖PDF文件   进入Doc对象。您需要将PDF保存到其他位置   然后在Doc对象使用之后交换两个文件   PDF结束(通过调用Clear,Dispose或Read with another PDF   文件)。

所以你需要一个“新的pdf”。