【问题标题】:JavaFX: save TextArea content to PDF?JavaFX:将 TextArea 内容保存为 PDF?
【发布时间】:2014-03-15 23:48:12
【问题描述】:

我正在尝试找到一种将 TextArea 的内容保存为 PDF 的方法。你有什么建议?

【问题讨论】:

  • 谢谢!这似乎是唯一的选择。
  • 如果 iText 似乎是唯一的选择,那么您并没有用 Google 搜索很多,因为还有更多 ways to create PDFs using Java
  • 谢谢!我对谷歌搜索词真的很不好。我会看看生成的链接。

标签: javafx-2 javafx-8 java-8


【解决方案1】:

您需要来自https://pdfbox.apache.org/download.cgi#20x 的 pdfbox-app-2.0.8.jar 来运行此代码。它将创建一个包含 areatext 内容的 pdf。

 import java.io.IOException;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 import javafx.application.Application;
 import javafx.event.ActionEvent;
 import javafx.event.EventHandler;
 import javafx.scene.Scene;
 import javafx.scene.control.Button;
 import javafx.scene.control.TextArea;
 import javafx.scene.layout.AnchorPane;
 import javafx.scene.layout.Pane;
 import javafx.scene.layout.StackPane;
 import javafx.stage.Stage;
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.apache.pdfbox.pdmodel.PDPage;
 import org.apache.pdfbox.pdmodel.PDPageContentStream;
 import org.apache.pdfbox.pdmodel.font.PDFont;
 import org.apache.pdfbox.pdmodel.font.PDType1Font;


 public class JavaFXApplication5 extends Application {

@Override
public void start(Stage primaryStage) {

    TextArea textarea = new TextArea();
    Pane pane = new AnchorPane(textarea);

    textarea.setPrefSize(100, 100);
    Button btn = new Button();
    btn.setText("To pdf");
    btn.setTranslateX(100);
    String text = textarea.getText();
    pane.getChildren().add(btn);

    btn.setOnAction(new EventHandler<ActionEvent>() {

        @Override
        public void handle(ActionEvent event) {
            System.out.println(text);

            PDFont font =  PDType1Font.HELVETICA_BOLD ; 
             PDDocument doc    = new PDDocument();
             PDPage page = new PDPage();
             PDPageContentStream content;
            try {
                content = new PDPageContentStream(doc, page);
                content.beginText();
                content.moveTextPositionByAmount(300, 400);
                content.setFont(font, 40);
                content.drawString(textarea.getText());

               content.endText();
                content.close();
                doc.addPage(page);
                doc.save("example.pdf");
               } catch (IOException ex) {
                Logger.getLogger(JavaFXApplication5.class.getName()).log(Level.SEVERE, null, ex);
            }


        }
    });

    StackPane root = new StackPane();
    root.getChildren().addAll(pane);

    Scene scene = new Scene(root, 300, 250);

    primaryStage.setTitle("Text to pdf example");
    primaryStage.setScene(scene);
    primaryStage.show();
}

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    launch(args);
}

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-29
    • 1970-01-01
    • 2022-11-14
    • 1970-01-01
    • 2018-03-01
    • 2013-12-20
    • 2016-02-29
    • 1970-01-01
    相关资源
    最近更新 更多