2016-08-30 15 views
0

this exampleを使用してHTMLヘッダーとHTMLフッターを表示しています。ColumnTextとHTML with Image Base64タグ

しかし、htmlにイメージ要素がある場合(base64)は機能しません。

私はanother exampleを試しました。しかし、これはColumnTextを使用しません。

私は

htmlContext.setImageProvider(new Base64ImageProvider()); 

または

TagProcessorFactory htmlTagProcessorFactory = Tags.getHtmlTagProcessorFactory(); 
htmlTagProcessorFactory.removeProcessor(HTML.Tag.IMG); 
htmlTagProcessorFactory.addProcessor(new ImageTagProcessor(), HTML.Tag.IMG); 

を追加しようとした。しかし試みのどれもが成功しません。

答えて

1

私はそれを動作させることができました。しかし、テーブル。 base64で画像をあなたがした同じ例を使用してPDF文書

//CSS 
    CSSResolver cssResolver = XMLWorkerHelper.getInstance().getDefaultCssResolver(true); 

    // HTML 
    TagProcessorFactory htmlTagProcessorFactory = Tags.getHtmlTagProcessorFactory(); 
    //htmlTagProcessorFactory.removeProcessor(HTML.Tag.IMG); 
    //htmlTagProcessorFactory.addProcessor(new ImageTagProcessor(), HTML.Tag.IMG); 

    HtmlPipelineContext htmlContext = new HtmlPipelineContext(null); 
    htmlContext.setTagFactory(htmlTagProcessorFactory); 
    htmlContext.setImageProvider(new Base64ImageProvider()); 

    // Pipelines 
    ElementList elements = new ElementList(); 
    ElementHandlerPipeline end = new ElementHandlerPipeline(elements, (Pipeline) null); 

    HtmlPipeline htmlPipeline = new HtmlPipeline(htmlContext, end); 
    CssResolverPipeline css = new CssResolverPipeline(cssResolver, htmlPipeline); 

    // XML Worker 
    XMLWorker worker = new XMLWorker(css, true); 
    XMLParser p = new XMLParser(worker); 
    p.parse(new ByteArrayInputStream(html.getBytes())); 

    PdfPTable table = new PdfPTable(1); 

    PdfPCell cell = new PdfPCell(); 
    cell.setPadding(0); 
    cell.setUseBorderPadding(false); 
    cell.setBorder(0); 

    for (Element e : elements) { 
     cell.addElement(e); 
    } 

    table.addCell(cell); 

    // Adding a table at an absolute position 
    table.writeSelectedRows(0, -1, x, y, writer.getDirectContent()); 
0

に表示されるように、私はそれだけでColumnText、テーブルを必要とせずに作業しました。それぞれの要素をColumnTextオブジェクトに追加するだけで、下部に表示されます。

// step 3 
    document.open(); 
    // step 4 
    PdfContentByte canvas = writer.getDirectContent(); 
    ColumnText ct = new ColumnText(canvas); 
    int side_of_the_page = 0; 
    ct.setSimpleColumn(COLUMNS[side_of_the_page]); 
    ct.setIgnoreSpacingBefore(false); 

    // CSS 
    CSSResolver cssResolver = XMLWorkerHelper.getInstance().getDefaultCssResolver(true); 

    // ELEMENT 
    ElementList elements = new ElementList(); 
    ElementHandlerPipeline end = new ElementHandlerPipeline(elements, (Pipeline) null); 

    // HTML 
    HtmlPipelineContext htmlContext = new HtmlPipelineContext(null); 
    htmlContext.setTagFactory(Tags.getHtmlTagProcessorFactory()); 
    htmlContext.setImageProvider(new Base64ImageProvider()); 

    // Pipelines 
    HtmlPipeline html = new HtmlPipeline(htmlContext, end); 
    CssResolverPipeline css = new CssResolverPipeline(cssResolver, html); 

    // XML Worker 
    XMLWorker worker = new XMLWorker(css, true); 
    XMLParser p = new XMLParser(worker); 
    p.parse(new ByteArrayInputStream(HTML.getBytes())); 

    for (Element element : elements) { 
     ct.addElement(element); 
    } 

    // step 5 
    document.close();