1

Java、Jasper Reports、および JSF を使用しています。PDF形式でレポートを生成したいのですがiframe、同じページにレポートなどにフィルターを配置できるため、このようなもので表示できます..レポートを貼り付けても一時ファイルとして正しく生成されますブラウザのパスは正しく表示されます。しかし、そのルートを iframe に入れると、次のエラーが発生します。

Not allowed to load the local resource: file :/ / / C :/ Users / Juanes ~ 1/AppData/Local/Temp/reportePedidosTemporal1922509630584311367.pdf

これは私のコードです:

public void prueba(AjaxBehaviorEvent evento)
{
    try
    {   
         Map<String, Object> parametros = new HashMap<String, Object>();
         parametros.put("autor", "Juan Esteban");
         parametros.put("titulo", "Reporte de Pedidos");

         List<PedidosVO> listaPedidos = new ArrayList<PedidosVO>();

         for (int i = 1; i <= 10; i++) 
         { 
              PedidosVO pedido = new PedidosVO(""+i,"Cliente:"+i,(i+1));
              pedido.setPuntos(i);
              listaPedidos.add(pedido); 
         }

        JasperDesign design = JRXmlLoader.load("C:\\Reportes\\Reporte2Pedidos.jrxml");

        JasperReport reporte = JasperCompileManager.compileReport(design);

        //-**-**-/*-/ 

        JasperPrint jasperPrint = JasperFillManager.fillReport(reporte, parametros,new JRBeanCollectionDataSource(listaPedidos));

        byte[] flujo  = JasperExportManager.exportReportToPdf(jasperPrint);
        File tempFile = File.createTempFile("reportePedidosTemporal",".pdf");
        System.out.println(tempFile.setReadable(true));
        escribirByte(tempFile,flujo);
        tempFile.deleteOnExit();

        if(tempFile.exists())
        {
            System.out.println("RUTA : "+tempFile.getPath());
            url = tempFile.getPath();
        }
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }

}

任意のアイデア、提案は非常に感謝しています

4

1 に答える 1

1

iframe に読み込む PDF を指すURLが必要です。現状では、ファイルシステムから直接ファイルをロードしようとしています。これは、サイトがエンド ユーザーのファイル システムからファイルを直接ロードしようとすることを意味しますが、これは明らかな理由で許可されていません。

サーバーで PDF を生成し、それを指す URL を生成します。次に、それを iframe ソースとして設定します。

于 2013-01-07T19:43:04.273 に答える