Java 没有被复制的书签

Java 没有被复制的书签,java,pdf,pdf-generation,itext,bookmarks,Java,Pdf,Pdf Generation,Itext,Bookmarks,在你提问之前,是的,我已经读了另一篇SO文章,加上iText创始人布鲁诺·洛瓦吉(Bruno Lowagie)关于如何做到这一点的文章。事实仍然是我无法让它工作。通过eclipse跟踪执行使其看起来像是在工作,但使用此代码实际上不会复制任何书签 我可能错过了一些非常愚蠢的事情,请别人给我指出正确的方向: void resize (String pdfIn, String pdfOut, float x, float y, float scale) { PdfReader reader = new

在你提问之前,是的,我已经读了另一篇SO文章,加上iText创始人布鲁诺·洛瓦吉(Bruno Lowagie)关于如何做到这一点的文章。事实仍然是我无法让它工作。通过eclipse跟踪执行使其看起来像是在工作,但使用此代码实际上不会复制任何书签

我可能错过了一些非常愚蠢的事情,请别人给我指出正确的方向:

void resize (String pdfIn, String pdfOut, float x, float y, float scale) {
PdfReader reader = new PdfReader(pdfIn);
List <HashMap <String, Object>> bookmarks = SimpleBookmark.getBookmark ( reader ) ;
// landscape letter:
Document doc = new Document(new RectangleReadOnly(792, 612), 0, 0, 0, 0);
PdfWriter writer = PdfWriter.getInstance(doc, new FileOutputStream(pdfOut));
doc.open();
PdfContentByte cb = writer.getDirectContent();
for(int i=1; i<=reader.getNumberOfPages(); i++){
    doc.newPage();
    PdfImportedPage page = writer.getImportedPage(reader, i);
    // page rescaling, mandatory:
    cb.addTemplate(page, scale, 0, 0, scale, x, y);
}
writer.setOutlines ( bookmarks ) ;
doc.close();
void resize(字符串pdfIn、字符串pdfOut、浮点x、浮点y、浮点比例){
PdfReader读取器=新PdfReader(pdfIn);
List bookmarks=SimpleBookmark.getBookmark(阅读器);
//风景信:
文档文档=新文档(新矩形只读(792612)、0、0、0、0);
PdfWriter writer=PdfWriter.getInstance(doc,新文件输出流(pdfOut));
doc.open();
PdfContentByte cb=writer.getDirectContent();

对于(inti=1;i我不是很确定,但是

写这行

List <HashMap <String, Object>> bookmarks = SimpleBookmark.getBookmark ( reader ) ;

谢谢,但这并没有起作用。文档对象属于作者,而不是读者。但我还是检查了没有用。但是你已经先打开文档来阅读内容,所以看看你在哪里打开文档来阅读你打开文档是为了写作,而不是阅读。我检查了你建议的解决方案以防万一,但它不起作用。你正在使用
PdfWriter
而不是
PdfCopy
,也许你的书签使用了命名目的地。你试过第7章的例子吗?什么不起作用?你检查了链接是否使用了命名目的地吗?在我写这篇文章之前,我确实读过第7章的例子。我曾经用PdfCopy替换过PdfWriter,没有当我说“它不工作”时,我的意思是当复制PDF时,缩放是我代码的主要目的,但新文档中没有书签。
doc.open();