Существует два метода удобства, названных getPageSize()
и getPageSizeWithRotation()
.
Давайте посмотрим на пример:
PdfReader reader =
new PdfReader("src/main/resources/pages.pdf");
show(reader.getPageSize(1));
show(reader.getPageSize(3));
show(reader.getPageSizeWithRotation(3));
show(reader.getPageSize(4));
show(reader.getPageSizeWithRotation(4));
В этом примере show()
выглядит следующим образом:
public static void show(Rectangle rect) {
System.out.print("llx: ");
System.out.print(rect.getLeft());
System.out.print(", lly: ");
System.out.print(rect.getBottom());
System.out.print(", urx: ");
System.out.print(rect.getRight());
System.out.print(", lly: ");
System.out.print(rect.getTop());
System.out.print(", rotation: ");
System.out.println(rect.getRotation());
}
Это вывод:
llx: 0.0, lly: 0.0, urx: 595.0, lly: 842.0, rotation: 0
llx: 0.0, lly: 0.0, urx: 595.0, lly: 842.0, rotation: 0
llx: 0.0, lly: 0.0, urx: 842.0, lly: 595.0, rotation: 90
llx: 0.0, lly: 0.0, urx: 842.0, lly: 595.0, rotation: 0
llx: 0.0, lly: 0.0, urx: 842.0, lly: 595.0, rotation: 0
Page 3 (см. строку 4 в примере кода 3.8) является страницей A4, как страница 1 , но он ориентирован в ландшафте. Запись /MediaBox
идентична записи, используемой для первой страницы [0 0 595 842]
, и поэтому getPageSize()
возвращает тот же результат.
Страница находится в альбомной ориентации, потому что запись \Rotate
в для словаря страницы установлено значение 90
. Возможные значения для этой записи: 0
(это значение по умолчанию, если запись отсутствует), 90
, 180
и 270
.
Метод getPageSizeWithRotation()
принимает это значение в Счет. Он меняет ширину и высоту, чтобы вы знали о различии. Он также дает вам значение записи /Rotate
.
Page 4 также имеет ландшафтную ориентацию, но в этом случае вращение имитируется путем адаптации записи /MediaBox
. В этом случае значение /MediaBox
равно [0 0 842 595]
, и если есть запись /Rotate
, его значение равно 0
.
Это объясняет, почему вывод метода getPageSizeWithRotation()
идентичен к выходу метода getPageSize()
.
Когда я прочитал ваш вопрос, я вижу, что вы ищете поворот. Это можно сделать с помощью метода getRotation()
.
Примечание: Этот текст скопирован из моей книги «ABC of PDF» (книга находится в разработке, вы можете скачать первые главы бесплатно). Образец кода можно найти здесь здесь .
Для вашего текущего кода вы объединяете MVC Controller
и Razor Page
в одном проекте, но вы не настроили какой-либо маршрут для MVC Controller
.
Во-первых, проверьте сгенерированный html для формы Logout
, убедитесь, что он генерирует, как показано ниже:
<form method="post" id="logoutForm" action="/Logout/Logout">
<button type="submit">Logout</button>
<input name="__RequestVerificationToken" type="hidden" value="xxx"></form>
Если нет, настройте свой маршрут MVC как
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
[1110 ] Вот рабочая демонстрация TestCookiesAuth
Не совсем то, что вы просите, но, возможно, этот подход поможет.
Я использую Asp.Net Core 2.2 и у меня есть метод Logout () ниже в контроллере учетных записей. Я использую сервис Identity и иду по этому пути для выхода из системы, а не HttpContext. Для меня это решение работает и удаляет файл cookie для входа в систему - по крайней мере, он работал, когда я проверял его несколько минут назад.
Он отличается от вашего кода тем, что я использую объект signInManager, а не объект HttpContext, и этот SignOutAsync () не принимает параметров.
Попробуйте, если хотите, и посмотрите, что вы получите. Обязательно вызовите AddIdentity () или его варианты в вашем методе startup.cs ConfigureServices.