我目前正在编写一个pdf api。有一种方法可以将具有不同方向的选定页面合并到一个文档中。在运行时,如果所选页面是横向的,我想像那样合并,但目前显示的所有内容都有纵向。
我在网上查看了几个帖子,但没有一个有帮助。
这是我目前拥有的:
public static void MergePDF(string source, string destination, PageCollection pages) {
try {
PdfReader reader = new PdfReader(new RandomAccessFileOrArray(source), null);
Document doc = new Document();
PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(destination, FileMode.Create));
doc.Open();
PdfContentByte contentByte = writer.DirectContent;
foreach (Page page in pages) {
float width = reader.GetPageSize(page.Number).Width;
float height = reader.GetPageSize(page.Number).Height;
PdfImportedPage pdfImportedPagepage = writer.GetImportedPage(reader, page.Number);
doc.NewPage();
if (width > height) {
doc.SetPageSize(PageSize.A4.Rotate());
} else {
doc.SetPageSize(PageSize.A4);
}
iTextSharp.text.Rectangle psize = reader.GetPageSizeWithRotation(page.Number);
switch (psize.Rotation) {
case 0:
contentByte.AddTemplate(pdfImportedPagepage, 1f, 0, 0, 1f, 0, 0);
break;
case 90:
contentByte.AddTemplate(pdfImportedPagepage, 0, -1f, 1f, 0, 0, reader.GetPageSizeWithRotation(page.Number).Height);
break;
case 180:
contentByte.AddTemplate(pdfImportedPagepage, -1f, 0, 0, -1f, 0, 0);
break;
case 270:
contentByte.AddTemplate(pdfImportedPagepage, 0, 1.0F, -1.0F, 0, reader.GetPageSizeWithRotation(page.Number).Width, 0);
break;
default:
break;
}
}
doc.Close();
} catch (Exception ex) {
}
}
谢谢您的帮助。