0

クリックするとファイルが開く既存の PDF にハイパーリンクを提供しようとしています。これはどのように行うことができますか?

http://www.google.comのような外部ハイパーリンクでは正常に動作しますが、 D:/intro.pdf のようなローカルファイルのハイパーリンクでは動作しません。

私はitext pdfライブラリを使用しています。

コード :

        String in = "D:/introduction.pdf";
        String out = "D:/introduction.pdf";

        try {
            PdfReader reader = new PdfReader(in);

            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            PdfStamper stamper = new PdfStamper(reader, baos);


            PdfContentByte canvas=stamper.getOverContent(6);
            Chunk imdb = new Chunk("Local Link");
            imdb.setAnchor("http://www.google.com"); // this work
         // imdb.setAnchor("D://intro.pdf");  // this does not work

            ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, new Phrase(imdb), 100, 10, 0);



            stamper.close();
            FileOutputStream fileOutputStream = new FileOutputStream(out);


            IOUtils.write(baos.toByteArray(), fileOutputStream);
        } catch (Exception e) {

        }

私はまた、以下のように注釈を使用してみました:

                PdfAnnotation annotation;

                PdfName aa=new PdfName("test test");
                annotation = PdfAnnotation.createLink(stamper.getWriter(),
                        new Rectangle(50f, 750f, 180f, 800f),aa,PdfAction.gotoRemotePage("file:///D:/intro.pdf","1", false, true));


                annotation.setTitle("Click Here");

                stamper.addAnnotation(annotation, 1);

@ Bruno Lowagie下の画像を参照してください
による以下のコード コメントも試してみました 。 pdf ページ番号-2 )

                PdfReader reader1 = new PdfReader("D://introduction.pdf");
                PdfStamper stamper1 = new PdfStamper(reader1, new FileOutputStream("D://intro.pdf"));
                PdfAnnotation link1 = PdfAnnotation.createLink(stamper1.getWriter(),
                    new Rectangle(136, 780, 559, 806), PdfAnnotation.HIGHLIGHT_INVERT,
                    new PdfAction("D://introduction.pdf", 1));
                link1.setTitle("Click Here");
                stamper1.addAnnotation(link1, 2);
                stamper1.close();

前もって感謝します。

4

1 に答える 1

2

プロトコルを指定する必要があります。Web ページの場合、URI はhttp://;で始まります。ファイルの場合、URI は で始まる必要がありますfile://

ただし、リンク先のファイルも PDF ファイルであるため、おそらくこの方法は使用したくないでしょうsetAnchor()setRemoteGoto()代わりにメソッドを使用する必要があります。MovieLinks2の例を参照してください。

既存のドキュメントへのリンクを追加する場合は、次のようにします。

PdfReader reader = new PdfReader("hello.pdf");
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("hello_link.pdf"));
PdfAnnotation link = PdfAnnotation.createLink(stamper.getWriter(),
    new Rectangle(36, 790, 559, 806), PdfAnnotation.HIGHLIGHT_INVERT,
    new PdfAction("hello.pdf", 1));
stamper.addAnnotation(link, 1);
stamper.close();

PDF ドキュメント内を見ると、hello_link.pdf という名前の新しいファイルに、古いファイル hello.pdf を参照するリンク アノテーションが含まれていることがわかります。

ここに画像の説明を入力

于 2013-08-05T08:14:21.043 に答える