2016-10-30 1 views
0

私はitextPdfの最新バージョンで動作します。そして、すべてはうまく動作するために使用された私はそれがトラブルに始まったとき私は知らない。GradientPaintはitextPdfで動作しません

私はその方法をpdfに変換するにはGraphePinSceneオブジェクトがあります。

public void toPdf(Scene scene, float clipWidth, float clipHeight, String path) 
{ 
    float pageWidth = (float) scene.getView().getWidth(); 
    float pageHeight = (float) scene.getView().getHeight(); 

    double xScale = 1.0; 
    double yScale = 1.0; 
    Document d = new Document(); 
     PdfWriter writer = PdfWriter.getInstance(d, new FileOutputStream(new File(path))); 
     d.open(); 
     PdfContentByte cb = writer.getDirectContent(); 

     //scaling 
     if (pageWidth > PDF_MAX_WIDTH) { 
      xScale = (double) (pageWidth/PDF_MAX_WIDTH); 
      pageWidth = PDF_MAX_WIDTH; 
     } 
     if (pageHeight > PDF_MAX_HEIGHT) { 
      xScale = (double) (pageHeight/PDF_MAX_HEIGHT); 
      pageHeight = PDF_MAX_HEIGHT; 
     } 

     Graphics2D g2d = new PdfGraphics2D(cb, pageWidth + clipWidth, pageHeight + clipHeight); 
     g2d.scale(xScale, yScale); 
     scene.paint(g2d); 

     g2d.dispose(); 
     d.close(); 
} 

シーンオブジェクトにはウィジェットがいくつか含まれています。 のGradientPaintで作成されたものだけが、これはウィジェットの一つであり、PDFファイルに画像化されていないすべてのウィジェットをPDFに含まれています:

public final class SecondaryStationWidget extends IconNodeWidget { 

    //Staff 

    @Override 
    protected void paintWidget() { 
     Graphics2D g = getGraphics(); 
     RenderingHints rh = new RenderingHints(
       RenderingHints.KEY_ANTIALIASING, 
       RenderingHints.VALUE_ANTIALIAS_ON); 
     rh.put(RenderingHints.KEY_RENDERING, 
       RenderingHints.VALUE_RENDER_QUALITY); 
     g.setRenderingHints(rh); 
      g.setPaint(new GradientPaint(44, 29, new Color(154, 191, 239), 88, 58, new Color(17, 74, 148), true)); 
      g.fill(new RoundRectangle2D.Double(1, 2, 
        88, 
        58, 
        10, 10)); 

    } 
} 

答えて

0

problemeは(強制的に)変更することで解決されましたそのような種類のウィジェットの背景(コンストラクタ内)

setBackground(new Color(0, 0, 0, 1)); //Remove 
setBackground(Color.WHITE); //Add 
関連する問題