我目前正在編寫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) {
}
}
感謝您的幫助。
是否有一個特殊的原因,你爲什麼使用'PdfWriter'而不是'PdfCopy'? 'PdfCopy'只是簡單地使用該頁面,包括其尺寸和方向... – mkl
謝謝你的工作。 – sinestro