天道酬勤,学无止境

使用 itextpdf 时,PDF 的页面大小在横向和纵向之间始终相同(PageSize of PDF always the same between landscape and portrait with itextpdf)

问题

我有一个 PDFReader,其中包含一些横向模式的页面和其他纵向模式的页面。

我需要区分它们以进行一些处理...但是,如果我调用 getOrientation 或 getPageSize,则该值始终相同(页面大小为 595,方向为 0)。

为什么横向页面的值没有不同?

我试图找到其他方法来检索页面宽度/方向,但没有任何效果。

这是我的代码:

for(int i = 0; i < pdfreader.getNumberOfPages(); i++)
{
    document = PdfStamper.getOverContent(i).getPdfDocument();

    document.getPageSize().getWidth; //this will always be the same
}

谢谢 !

回答1

有两种方便的方法,名为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

第 3 页(参见代码示例 3.8 中的第 4 行)与第 1 页一样是一个 A4 页面,但它是横向的。 /MediaBox条目与用于第一页[0 0 595 842]条目相同,这就是getPageSize()返回相同结果的原因。

该页面处于横向,因为页面字典中的\Rotate条目设置为90 。 此条目的可能值为0 (如果条目丢失,则为默认值)、 90180270

getPageSizeWithRotation()方法考虑了这个值。 它交换宽度和高度,以便您了解差异。 它还为您提供/Rotate条目的值。

第 4 页也有横向方向,但在这种情况下,通过调整/MediaBox条目来模拟旋转。 在这种情况下, /MediaBox值为[0 0 842 595] ,如果有/Rotate条目,则其值为0

这解释了为什么getPageSizeWithRotation()方法的输出与getPageSize()方法的输出相同。

当我阅读您的问题时,我看到您正在寻找轮换。 这可以通过getRotation()方法来完成。

备注:本文复制自我的书《PDF的基础知识》(书正在建设中,第一章可以免费下载)。 代码示例可以在这里找到。

回答2

使固定 :

PdfStamper.getImportedPage(pdfReader, pagenumber).getBoundingBox().getWidth()

代替

stamper.getOverContent(i).getPdfDocument().getPageSize().getWidth();
标签

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 如何使用文本或图像给PDF加水印?(How to watermark PDFs using text or images?)
    问题 我的文件夹中有一堆PDF文档,我想给它们加上水印。 在Java服务器端上下文中,我有哪些选择? 优选地,水印将支持透明性。 矢量和栅格都是可取的。 回答1 请看一下TransparentWatermark2示例。 它会在现有PDF文档的每个奇数页上添加透明文本,并在每个偶数页上添加透明图像。 这是这样做的: public void manipulatePdf(String src, String dest) throws IOException, DocumentException { PdfReader reader = new PdfReader(src); int n = reader.getNumberOfPages(); PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest)); // text watermark Font f = new Font(FontFamily.HELVETICA, 30); Phrase p = new Phrase("My watermark (text)", f); // image watermark Image img = Image.getInstance(IMG); float w = img.getScaledWidth(); float
  • HTML5 Boilerplate:元视口和width = device-width(HTML5 Boilerplate: Meta viewport and width=device-width)
    问题 我正在建立一个自适应/响应式网站。 关于最近对HTML5BP所做的更改: “移动/ iOS CSS修订” 我已经开始使用: <meta name="viewport" content="width=device-width"> ...而我的CSS中有这个: html { -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; } 当包括initial-scale=1时,从垂直旋转到水平(在iPad / iPhone上)导致布局从2列(例如)更改为3列(由于meida查询, initial-scale=1和JS修复)视口比例错误)。 总结一下,在横向模式下,此页面会缩放: <meta name="viewport" content="width=device-width"> ...而这不是: <meta name="viewport" content="width=device-width, initial-scale=1"> 注意:在iPad / iPhone上查看HTML5BP网站时,您可以看到这种缩放效果。 我的问题: 这是否成为新的标准(即在横向模式下缩放)? 我花了点时间向我的同事和老板们解释这种变化。他们习惯于在水平模式下看到不同的布局。 现在页面缩放并且布局保持不变(除了更大)。
  • 如何查找PDF是横向还是纵向(How to find whether PDF has landscape orientation or portrait)
    问题 是否有工具可以确定 PDF 是横向还是纵向? 我目前为此查看了pdfbox和Itext ,但似乎找不到它。 请告诉他们是否支持这一点。 使用Origami提取 PDF 页面信息提供了 pdf 页面具有一定程度旋转的信息。 这是折纸报告的内容: {:Parent=>#<PDF::Reader::Reference:0x872349c @id=8, @gen=0>, :Type=>:Page, :Contents=>#<PDF::Reader::Reference:0x8722f24 @id=4, @gen=0>, :Resources=># <PDF::Reader::Reference:0x870dbd8 @id=2, @gen=0>, :MediaBox=>[0, 0, 612, 792], :Rotate=>270} 旋转:270 “旋转”究竟是什么意思? 回答1 pdfinfo命令行实用程序有一种方法可以让您查看每个页面的页面大小信息和 MediumBox、CropBox、BleedBox、ArtBox 和 TrimBox 值。 在这里,我询问特定文档第 2 页到第 4 页的值: pdfinfo -box -f 2 -l 4 sample.pdf Creator: FrameMaker 6.0 Producer: Acrobat Distiller 5.0.5
  • Rstudio rmarkdown:单个PDF中的纵向和横向布局(Rstudio rmarkdown: both portrait and landscape layout in a single PDF)
    问题 我想知道如何使用rmarkdown生成在同一文档中同时具有纵向和横向布局的pdf。 如果有一个纯rmarkdown选项,它将比使用乳胶更好。 这是一个小巧的示例。 首先,在RStudio中渲染此.Rmd (按“编织PDF”按钮)将导致pdf的所有页面均采用横向布局: --- title: "All pages landscape" output: pdf_document classoption: landscape --- ```{r} summary(cars) ``` \newpage ```{r} summary(cars) ``` 然后尝试创建混合纵向和横向布局的文档。 YAML的基本设置是根据此处的“包含”部分完成的。 in_header文件'header.tex'仅包含\usepackage{lscape} ,这里是建议用于knitr横向布局的软件包。 该.tex文件在同一目录中.Rmd文件。 --- title: "Mixing portrait and landscape" output: pdf_document: includes: in_header: header.tex --- Portrait: ```{r} summary(cars) ``` \newpage \begin{landscape} Landscape: ```{r}
  • 从HTML进行横向打印(Landscape printing from HTML)
    问题 我有一个HTML报告,由于列很多,因此需要横向打印。 是否有一种方法可以执行此操作,而无需用户更改文档设置? 在浏览器中有哪些选项。 回答1 在CSS中,您可以设置@page属性,如下所示。 @media print{@page {size: landscape}} @page是CSS 2.1规范的一部分,但是,此问题的答案并未突出显示此size {size:landscape}是否已过时?: CSS 2.1不再指定size属性。 CSS3 Paged Media模块的当前工作草案确实指定了它(但这不是标准的或不可接受的)。 如前所述,大小选项来自CSS 3草案规范。 从理论上讲,可以将其设置为页面大小和方向,尽管在我的示例中省略了页面大小。 该支持与在Firefox中开始提交的错误报告非常混杂,大多数浏览器不支持该报告。 在IE7中似乎可以使用,但这是因为IE7会记住用户在打印预览中最后选择的风景或肖像(仅重新启动浏览器)。 本文确实提出了一些建议的解决方法,使用JavaScript或ActiveX将密钥发送到用户浏览器,尽管它们不是理想选择,并且依赖于更改浏览器的安全设置。 或者,您可以旋转内容而不是页面方向。 这可以通过创建样式并将其应用于包含这两行的主体来完成,但这也存在一些缺点,从而造成许多对齐和布局问题。 <style type="text/css" media=
  • 确定主屏幕的 appwidgets 空间网格大小(Determine the homescreen's appwidgets space grid size)
    问题 我为平板电脑开发了一个可重新调整大小的应用程序小部件。 应用程序小部件在大多数具有大多数启动器的设备上运行良好,但是方向存在一些问题,尤其是在纵向模式下的 GO-HD 启动器上。 app-widget 的高度太大,不好看。 为了解决这个问题,我创建了一个方法来允许用户设置任何额外的边距,在应用程序小部件空间中,他想让它看起来不错。 例如,当设备处于纵向模式时,他可以设置额外的 20 像素上边距,而在横向模式下仅设置 5 像素等。 现在我正在创建一个活动以允许用户设置边距。 我想制作一个小的预览区域(它将是具有相同背景可绘制应用小部件的线性布局),以便用户了解应用小部件在具有这些边距的主屏幕上的外观. 其实我也这样做过,但结果与现实相去甚远。 所以我的问题是: 有没有办法获得启动器应用程序用来将应用程序小部件放置在主屏幕上的网格单元的大小(或接近它)? 请注意,我知道并非所有启动器都遵循 Android 公式,但我想要的是找到一种方法来计算它的近似值。 - - 编辑 - - 为了更好地理解我的问题,我创建了一个屏幕截图: 首先,app-widget 的背景是一个形状 xml 文件,根本没有图形或尺寸。 由 Android 在可用空间中绘制它。 在我看来,这是最好的 GUI 设计(至少有背景)。 现在在屏幕 1 中,您可以在默认的 Android 启动器中看到纵向模式下的小部件
  • 文字大小和不同的Android屏幕大小(Text size and different android screen sizes)
    问题 我知道,已经讨论了1000次,但是我无法针对不同的屏幕尺寸调整文本大小。 我尝试使用“ sp”作为我的自定义样式的尺寸单位: <style name="CustumButtonStyle" parent="@android:style/Widget.Button"> ... <item name="android:textSize">30sp</item> ... </style> 在2.7 QVGA中,看起来不错: 但是在7英寸WSVGA中,它看起来像这样: 我试图同时使用'sp'和'dp'并获得相同的结果。 您能否解释一下如何使这些按钮在任何屏幕上看起来都一样? 完整的自定义按钮样式 <style name="CustumButtonStyle" parent="@android:style/Widget.Button"> <item name="android:background">@drawable/custom_button</item> <item name="android:layout_width">fill_parent</item> <item name="android:layout_height">wrap_content</item> <item name="android:layout_margin">3dp</item> <item name=
  • background-size:cover和background-size:contain之间的区别(Difference between background-size:cover and background-size:contain)
    问题 从视觉上我可以体会到两者之间的区别,但是在哪种情况下我应该优先选择另一种呢? 有没有一点用完它们,或者可以用百分比代替它们吗? 目前,使用这些属性时,我似乎无法超越尝试错误的方法,这是我的专长。 另外,我只能找到非常模糊的解释,尤其是我发现W3C文档非常令人困惑。 值具有以下含义: '包含' 将图像缩放,同时保留其固有的宽高比(如果有),使其达到最大尺寸,以使其宽度和高度都可以适合背景定位区域。 '覆盖' 在保留图像固有长宽比(如果有)的情况下,将图像缩放到最小尺寸,以使其宽度和高度都可以完全覆盖背景定位区域。 我可能有点胖了,但是有人可以给我简单的英语解释和相关示例吗? 请用这个小提琴。 谢谢。 的CSS body{ width:500px; height:500px; background:url(http://upload.wikimedia.org/wikipedia/commons/1/1a/Bachalpseeflowers.jpg); background-size:contain; background-repeat:no-repeat; } 笔记 可接受的答案是我目前认为最简洁,最完整的答案。 感谢大家的帮助。 回答1 您可以考虑查看控制输出的伪代码。 分配给图像尺寸的值直接取决于容器的纵横比和背景图像的纵横比。 注意: Aspect ratio =
  • 如何正确合并文件?(How to merge documents correctly?)
    问题 合并后打印pdf文件时出现以下问题,pdf文档被切断。 有时会发生这种情况,因为文档不是8.5 x 11,可能像11 x 17。 我们可以让它检测页面大小,然后对那些文档使用相同的页面大小吗? 否则,是否有可能使其适合页面? 以下是代码: package com.sumit.program; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import com.itextpdf.text.Document; import com.itextpdf.text.PageSize; import com.itextpdf.text.Rectangle; import com.itextpdf.text.pdf.BaseFont; import com.itextpdf.text.pdf.PdfContentByte; import com.itextpdf.text.pdf
  • 如何正确设计多方位iPad应用程序(How to properly design multi-orientation iPad application)
    问题 如今设计多方位iPad应用程序的正确方法是什么? 我已经阅读了许多Apple文档,Web资源和一些SO Q&A。 这是我的初始要求: 这必须在iOS 5及更高版本上运行。 无需与iOS的previos版本建立向后兼容性。 我希望在不同的NIB文件中定义纵向和横向UI。 对于相同的UI元素,我的NIB文件在不同的方向上将具有不同的图像(例如,我将具有header.png和header-landscape.png UIImageView。 应用程序将有几个屏幕,我需要能够在每个屏幕上切换方向。 那我该怎么办? 每个屏幕创建一个VC,并替换willRotate处理程序中的基础视图? 为每个方向创建一个VC? 但是,您如何正确切换它们呢? 简单地重新排列元素是行不通的(我认为),因为我必须重新加载图像。 用代码编写所有内容(我真的很讨厌这个想法)? 到今天为止,有什么适当的方法来解决这个问题? 回答1 实际上,我认为这是一个非常复杂的主题,就像大多数建筑问题一样。 我认为您不应该尝试仅使用一种技术来解决问题。 为了避免排挤此页面上的所有其他答案,我还在博客上发布了完整文章以及指向一些示例代码的链接。 概括 应该首选以.xib文件表示UI,尽管您允许自己与之脱离的程度部分取决于将来将要修改应用程序的人员的技能水平。 可能不只是程序员! 首选选项 强烈建议使用一个
  • 在iPad / iPhone的纵向和横向之间切换时,响应站点会放大(Responsive site is zoomed in when flipping between Portrait and Landscape on iPad/iPhone)
    问题 我在这里使用Twitter Bootstrap构建了一个响应式网站:http://zarin.me/cce/ 自适应设计在iPad和iPhone上效果很好,但是当我将设备从纵向翻转为横向时,该站点将被放大而不是适应屏幕(捏合屏幕效果)。 我想念什么? 这是视口问题吗? 这是我唯一的视口代码: <meta content="width=device-width, initial-scale=1.0" name="viewport"> 提前致谢! 回答1 您还想添加最大比例 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> 更新我同意一些评论,声明不应该限制用户的缩放比例,因为这是一种不好的做法。 以下是一种更好的方法,我相信缩放错误早已由Apple修复。 <meta name="viewport" content="width=device-width, initial-scale=1"> 回答2 虽然将最大比例设置为“ 1”确实有效,但它限制了用户放大网站内的任何内容。 对于用户体验而言并不理想。 尝试使用此Javascript,iOS方向更改修复 回答3 在meta中设置initial-scale=1.0 : <meta name="viewport"
  • Windows计算机上的iText-PDF中的中文字体问题(Problems with Chinese Fonts in iText-PDF on Windows Machines)
    问题 我正在使用Ubuntu-PC用iText创建PDF(部分中文)。 要阅读它们,我使用了Evince。 到目前为止,几乎没有任何问题 在我的PC上,我尝试了以下三个BaseFonts,它们成功地工作了: bf = BaseFont.createFont("MSungStd-Light", "UniCNS-UCS2-H", BaseFont.NOT_EMBEDDED); bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); bf = BaseFont.createFont("MSung-Light","UniCNS-UCS2-H", BaseFont.NOT_EMBEDDED); 不幸的是,当使用Acrobat-Reader在Windows上打开最终PDF时,该文档无法再正确显示。 在我搜索了Fonts以获取解决方案之后,我来到了该论坛,该问题以一种可以理解的方式进行了解释(使用了MSung-Light):http://community.jaspersoft.com/questions/531457/chinese-font-看不见 您正在使用PDF中的内置中文字体。 我不确定该字体是否支持英语和中文,或同时支持混合语言。 使用Acrobat Reader内置字体的优点是
  • 检测视口方向(如果方向为纵向显示警报消息,建议用户进行说明)(Detect viewport orientation, if orientation is Portrait display alert message advising user of instructions)
    问题 我正在建立一个专门针对移动设备的网站。 特别是一页,最好在横向模式下查看。 有没有一种方法可以检测访问该页面的用户是否正在以“纵向”模式查看该页面,如果显示,则显示一条消息,通知用户该页面在横向模式下的浏览效果最佳? 如果用户已经在横向模式下查看它,则不会出现任何消​​息。 因此,基本上,我希望站点检测视口的方向,如果方向为纵向,则显示一条警告消息,告知用户该页面最好在横向模式下查看。 回答1 if(window.innerHeight > window.innerWidth){ alert("Please use Landscape!"); } jQuery Mobile有一个处理此属性更改的事件...如果您想在以后有人旋转时发出警告-OrientationChange 另外,在进行一些谷歌搜索之后,检查window.orientation (我相信以度为单位...) 编辑:在移动设备上,如果您打开键盘,则上述操作可能会失败,因此可以使用screen.availHeight和screen.availWidth ,即使打开键盘后也可以提供适当的高度和宽度。 if(screen.availHeight > screen.availWidth){ alert("Please use Landscape!"); } 回答2 您还可以使用window.matchMedia
  • 在 Itextsharp 中旋转,同时保留评论位置和方向(Rotating in Itextsharp while preserving comment location & orientation)
    问题 总而言之,我正在使用 Itextsharp 从 PDF 导入特定页面,可能会旋转、调整大小或以其他方式更改该页面,然后将其导出为新的 PDF。 为此,我使用了 Itext 的 PDFWriter 类。 我遇到的问题是,在使用 writer 类时,它似乎没有在输出页面中包含出现在源页面(在我的情况下是注释)上的可见注释。 有趣的是,它确实包括嵌入式 OCR,没有问题。 此外,当使用 Itext PDFcopy 类时,它确实按照我的意愿工作(将注释正确复制到源代码),不幸的是,PDFcopy 没有很多易于访问的功能来处理我需要对页面做的事情(例如调整页面大小)。 所以我正在寻找两种解决方案之一: - 最好我想继续使用 writer 类,但需要它从源页面复制/复制任何可见的注释等,并将它们包含在输出中。 - 需要一些使用 PDFCopy 类调整页面大小的示例代码。 有一个 pdfcopy.Setpagesize 函数(它不起作用,我怀疑这意味着我做错了),但我基本上不知道如何在需要调整大小时正确缩放源页面。 下面是一些伪代码,让您了解我在使用 PDFWriter 类方面所处的位置: '... Dim MS As New MemoryStream() Dim document As New Document Dim WriterPDF As PdfWriter = PdfWriter
  • 在哪里更改 jspdf.debug.js 中的默认 pdf 页面宽度和字体大小?(Where to change default pdf page width and font size in jspdf.debug.js?)
    问题 我需要在 jspdf.debug.js 中更改默认的 pdf 页面宽度和字体大小。 在哪里以及如何更改 jspdf.debug.js 中的默认值? 回答1 除了使用一种默认格式之外,您还可以在您指定的单位中指定您想要的任何大小。 例如: // Document of 210mm wide and 297mm high new jsPDF('p', 'mm', [297, 210]); // Document of 297mm wide and 210mm high new jsPDF('l', 'mm', [297, 210]); // Document of 5 inch width and 3 inch high new jsPDF('l', 'in', [3, 5]); 构造函数的第三个参数可以采用维度数组。 然而,它们不对应于宽度和高度,而是长边和短边(或翻转)。 您的第一个参数( landscape或portrait )决定了宽度和高度。 在 GitHub 上的源代码中,您可以看到支持的单位(与 pt 的相对比例),您还可以看到默认页面格式(以 pt 为单位的大小)。 回答2 从文档页面 要设置页面类型,请在构造函数中传递值 jsPDF(orientation, unit, format)创建新的 jsPDF 文档对象实例参数: 方向“纵向”或“横向”之¸
  • 片段设计:通过在单个Activity中显示/隐藏片段来适应多种屏幕布局?(Fragment design: Adapting to multiple screen layouts by showing/hiding fragments within a single Activity?)
    问题 我试图了解如何使用Fragments创建可以很好地适应多个屏幕和布局的应用程序。 我研究了一些示例: 《 Android开发人员指南》中的Fragments文档。 Google IO应用片段来自ActionBar Sherlock。 所有这些都倡导多种Activity方法: 在大屏幕上,显示带有多个Fragment的单个Activity 在较小的屏幕上,将Fragment拆分为多个Activity 。 我想到了另一种方法-一个Activity : 具有一个包含所有Fragment的Activity 。 根据屏幕大小和方向,显示/隐藏适当的Fragment (使用FragmentTransaction.show() / FragmentTransaction.hide() )。 为了与Android开发人员指南使用相同的“新闻文章列表/文章内容”示例进行说明,请执行以下操作: 具有同时包含ArticleListFragment和ArticleReaderFragment的News活动。 在选项卡上,两个片段都始终显示。 在电话上, ArticleReaderFragment最初是隐藏的。 从列表中选择文章时, ArticleListFragment被隐藏,并显示ArticleReaderFragment 。 有人使用过类似的方法吗? 这种方法可能有实际的缺点吗?
  • 联邦学习算法综述
    点击上方蓝字关注我们 联邦学习算法综述 王健宗1 ,孔令炜1 ,黄章成1 ,陈霖捷1 ,刘懿1 ,何安珣1 ,肖京2 1. 平安科技(深圳)有限公司,广东 深圳 518063 2. 中国平安保险(集团)股份有限公司,广东 深圳 518031 摘要:近年来,联邦学习作为解决数据孤岛问题的技术被广泛关注,已经开始被应用于金融、医疗健康以及智慧城市等领域。从3个层面系统阐述联邦学习算法。首先通过联邦学习的定义、架构、分类以及与传统分布式学习的对比来阐述联邦学习的概念;然后基于机器学习和深度学习对目前各类联邦学习算法进行分类比较和深入分析;最后分别从通信成本、客户端选择、聚合方式优化的角度对联邦学习优化算法进行分类,总结了联邦学习的研究现状,并提出了联邦学习面临的通信、系统异构、数据异构三大难题和解决方案,以及对未来的期望。 关键词:联邦学习, 算法优化, 大数据, 数据隐私 论文引用格式: 王健宗,孔令炜,黄章成, 等. 联邦学习算法综述[J]. 大数据, 2020, 6(6): 64-82. WANG J Z, KONG L W, HUANG Z C, et al. Research review of federated learning algorithms[J]. Big Data Research, 2020, 6(6): 64-82. 1 引言随着数字化技术进入高速发展期
  • 有记录的方式设置iPhone方向吗?(Is there a documented way to set the iPhone orientation?)
    问题 我有一个应用,希望在某些视图中支持设备旋转,但是在横向模式下,其他应用尤其没有意义,因此当我换掉视图时,我想强制将旋转设置为纵向。 UIDevice上有一个未记录的属性设置器,可以完成此操作,但显然会生成编译器警告,并且可能在以后的SDK版本中消失。 [[UIDevice currentDevice] setOrientation:UIInterfaceOrientationPortrait]; 是否有任何记录的方式来强制定位? 更新:我以为我将提供一个示例,因为我已经实现了该示例,因此我没有寻找shouldAutorotateToInterfaceOrientation。 我希望我的应用在View 1中支持横向和纵向,但在View 2中仅支持纵向。我已经为所有视图实现了shouldAutorotateToInterfaceOrientation,但是如果用户在View 1中处于横向模式,然后切换到View 2,我想强制手机旋转回人像。 回答1 在更高版本的iPhone 3.1.2 SDK上,这不再是问题。 现在看来,它符合将视图推回堆栈时所要求的方向。 这可能意味着您将需要检测较旧的iPhone OS版本,并且仅在setOrientation早于最新版本时才应用它。 目前尚不清楚Apple的静态分析是否可以理解您是否在解决旧的SDK限制。 苹果本人曾告诉我
  • 是否有控制输出页面方向的选项(使用 knitr->pander->pandoc->docx)(Is there an option to control output page orientation (using knitr->pander->pandoc->docx))
    问题 我正在玩 Tal 的介绍,以在现实世界的情况下以尽可能少的开销生成单词表。 (请参阅那里的可重现示例 - 谢谢,Tal!)在实际应用中,表格很宽,无法在纵向页面上打印,但您可能不想拆分它们。 抱歉,如果我在 pandoc 或 pander 文档中忽略了这一点,但是从 R 写入 Word .docx 文件时如何控制页面方向(纵向/横向)? 我也许应该补充一下,我开始使用 knitr+markdown,而且我还不熟悉 LaTex 语法。 但是我正在尝试在完成我的工作的同时尽可能多地接受。 回答1 我很确定 docx --reference-docx没有实现分节符,据我所知--reference-docx允许自定义样式而不是页面布局(但我在这里也可能是错的),这是来自 pandocs 指南--reference-docx : --reference-docx=文件使用指定的文件作为生成 docx 文件的样式参考。 为了获得最佳效果,参考 docx 应该是使用 pandoc 生成的 docx 文件的修改版本。 参考 docx 的内容被忽略,但它的样式表在新的 docx 中使用。 如果在命令行上没有指定引用 docx,pandoc 将在用户数据目录中查找文件 reference.docx(请参阅 --data-dir)。 如果也没有找到,将使用合理的默认值。 pandoc 使用以下样式
  • 在iOS 8中处理方向更改的“正确”方法是什么?(What is the “right” way to handle orientation changes in iOS 8?)
    问题 有人可以告诉我在iOS 8中使用纵向和横向界面方向的“正确”或“最佳”方法吗? 似乎我要用于此目的的所有功能在iOS 8中均已弃用,而我的研究却没有找到清晰,优雅的替代方法。 我真的应该看一下宽度和高度来确定自己是纵向还是横向模式吗? 例如,在我的视图控制器中,应如何实现以下伪代码? if we are rotating from portrait to landscape then do portrait things else if we are rotating from landscape to portrait then do landscape things 回答1 Apple建议使用大小类作为可用屏幕空间的粗略度量,以便您的UI可以显着更改其布局和外观。 考虑到纵向的iPad与横向的iPad具有相同的尺寸级别(常规宽度,常规高度)。 这意味着两个方向之间的UI应该或多或少相似。 但是,在iPad中从纵向更改为横向的意义非常重大,即使尺寸类别未更改,您也可能需要对UI进行一些较小的调整。 由于不赞成使用UIViewController上与界面方向有关的方法,因此Apple现在建议在UIViewController实现以下新方法作为替代: - (void)viewWillTransitionToSize:(CGSize)size