Java 如何使用特定页面的书签调整PDF页面的大小?
如何调整特定PDF页面的页面大小?我是否必须使用book标记来选择要调整大小的特定页面?如果是,我怎么做 下面是我试图调整大小并使用ApachePDF框的代码Java 如何使用特定页面的书签调整PDF页面的大小?,java,apache,pdfbox,Java,Apache,Pdfbox,如何调整特定PDF页面的页面大小?我是否必须使用book标记来选择要调整大小的特定页面?如果是,我怎么做 下面是我试图调整大小并使用ApachePDF框的代码 import java.awt.print.PrinterException; import java.io.File; import java.io.IOException; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDP
import java.awt.print.PrinterException;
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.encryption.InvalidPasswordException;
import org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDDocumentOutline;
import org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDOutlineItem;
import org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDOutlineNode;
public class PDFLoader {
public static void main(String[] args) throws InvalidPasswordException, IOException, PrinterException {
//Loading an existing document
File file = new File("d:\\pdf\\source.pdf");
PDDocument document = PDDocument.load(file);
PDPage page1 = document.getDocumentCatalog().getPages().get(0);
PDPage page2 = document.getDocumentCatalog().getPages().get(1);
//PDRectangle mediaBox = page1.getMediaBox();
//if (mediaBox.getWidth() == 6 * 72 && mediaBox.getHeight() == 8 * 72)
PDDocumentOutline outline = document.getDocumentCatalog().getDocumentOutline();
PDRectangle mediaBox = new PDRectangle(8.0f * 72, 13.5f * 72);
PDRectangle mediaBox1 = new PDRectangle(8.5f * 72, 11.5f * 72);
page1.setMediaBox(mediaBox1);
if(getBookmark(outline, "")){
page2.setMediaBox(mediaBox);
}
PDDocument doc = new PDDocument();
doc.addPage(page1);
doc.addPage(page2);
doc.save("d:\\pdf\\newDocument.pdf");
doc.close();
}
public static boolean getBookmark(PDOutlineNode bookmark, String indentation) throws IOException
{
PDOutlineItem current = bookmark.getFirstChild();
while (current != null)
{
System.out.println(indentation + current.getTitle());
if(current.getTitle().equals("2016 Users Kit Final 9")){
System.out.println("Returning as true as the book mark is found");
return true;
}
getBookmark(current, indentation + " ");
current = current.getNextSibling();
}
System.out.println("Returning as false as the book mark is not found");
return false;
}
}
首先选择一种产品,然后明确你想要什么。要调整页面大小,还是要在有人单击书签时缩放页面显示?我已重新表述了我的问题,并在上面发布了我的代码。很抱歉,这没有意义,或者我不明白你的意思。如果您只想调整第2页的大小,请仅调用第2页。(基于0,因此调用
document.getPage(1)
来获取您的PDPage对象)。您只需通过调用document.getPage(69)
或其他方法来检索所需的页面。如果因为书签名为“ID卡”而获取页面,则通过书签检索页面。。。请看,但也请阅读评论。很高兴它起了作用。请删除问题或自己回答,以避免“孤儿”。