私は現在pdf APIを書いています。選択した向きの異なるページを1つの文書に結合する方法があります。実行時に、選択したページが横向きの場合、そのようにマージしたいのですが、現在、すべてが縦向きに表示されています。
オンラインでいくつかの投稿を見ましたが、どれも役に立ちませんでした。
これは私が現在持っているものです:
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) {
}
}
助けてくれてありがとう。