现有PDF文档页面旋转为空怎么办?
What to do when the page rotation is null in an existing PDF document?
您好,我需要将 pdf 从水平视图旋转到垂直视图。我使用 iText 模板将页面旋转 90 度。这是代码片段:
PdfReader reader = new PdfReader(pdfContent);
decryptReader(reader);
int n = reader.getNumberOfPages();
PdfImportedPage page;
for (int i = 1; i <= n; i++) {
PdfDictionary pageDict = reader.getPageN(i);
PdfNumber pageRotation = pageDict.getAsNumber(PdfName.ROTATE); //this part always gets me null so it doesn't pass the if requirement.
page = writer.getImportedPage(reader, i);
Image image = Image.getInstance(page);
if(pageRotation != null) {
decryptReader 函数:
private void decryptReader(PdfReader reader) {
try{
Field f = reader.getClass().getDeclaredField("encrypted");
f.setAccessible(true);
f.set(reader, false);
}catch(Exception e){
LOG.error("Error descrypting pdf document", e);
}
}
如何修复 pageRotation 中的 null?
这来自 iText Example for rotating PDF:(根据您的变量名称改编)
PdfNumber pageRotation = pageDict.getAsNumber(PdfName.ROTATE);
if (pageRotation == null) {
pageDict.put(PdfName.ROTATE, new PdfNumber(90));
}
else {
pageDict.put(PdfName.ROTATE, new PdfNumber((pageRotation .intValue() + 90) % 360));
}
如您所见,完全可以作为该调用的结果得到 null,这只是因为该页面上没有任何旋转效果(目前)。如果 有 旋转,您将收到该旋转并简单地添加 90°。
您好,我需要将 pdf 从水平视图旋转到垂直视图。我使用 iText 模板将页面旋转 90 度。这是代码片段:
PdfReader reader = new PdfReader(pdfContent);
decryptReader(reader);
int n = reader.getNumberOfPages();
PdfImportedPage page;
for (int i = 1; i <= n; i++) {
PdfDictionary pageDict = reader.getPageN(i);
PdfNumber pageRotation = pageDict.getAsNumber(PdfName.ROTATE); //this part always gets me null so it doesn't pass the if requirement.
page = writer.getImportedPage(reader, i);
Image image = Image.getInstance(page);
if(pageRotation != null) {
decryptReader 函数:
private void decryptReader(PdfReader reader) {
try{
Field f = reader.getClass().getDeclaredField("encrypted");
f.setAccessible(true);
f.set(reader, false);
}catch(Exception e){
LOG.error("Error descrypting pdf document", e);
}
}
如何修复 pageRotation 中的 null?
这来自 iText Example for rotating PDF:(根据您的变量名称改编)
PdfNumber pageRotation = pageDict.getAsNumber(PdfName.ROTATE);
if (pageRotation == null) {
pageDict.put(PdfName.ROTATE, new PdfNumber(90));
}
else {
pageDict.put(PdfName.ROTATE, new PdfNumber((pageRotation .intValue() + 90) % 360));
}
如您所见,完全可以作为该调用的结果得到 null,这只是因为该页面上没有任何旋转效果(目前)。如果 有 旋转,您将收到该旋转并简单地添加 90°。