下面的代码创建了一个横向的新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。比如第一页将是肖像,第二页将是风景。
由于
答案 0 :(得分:0)
您可以这样做,或使用“AddImageDoc”方法,插入修改过的页面......
但是
Abcpdf不允许覆盖源文件。从“保存方法文档”:
ABCpdf运行智能即时对象加载方案 这确保只加载那些所需的对象 进入记忆。这意味着如果您正在修改大型文档 服务器负载将保持在最低限度。原始PDF文档必须 只要正在使用Doc对象就可以使用。
因此您无法在阅读时修改或覆盖PDF文件 进入Doc对象。您需要将PDF保存到其他位置 然后在Doc对象使用之后交换两个文件 PDF结束(通过调用Clear,Dispose或Read with another PDF 文件)。
所以你需要一个“新的pdf”。