如何打印 TextArea 的内容?

Posted

技术标签:

【中文标题】如何打印 TextArea 的内容?【英文标题】:How do I print the content of a TextArea? 【发布时间】:2019-08-29 09:12:19 【问题描述】:

所以目前我正在尝试为我的记事本应用程序制作打印功能。我已经有一种工作打印功能,但它打印完整的 TextArea 不仅是写入其中的字符串。

我已经尝试让它只打印一个字符串,但 PrintJob 无法处理它,因为它需要实际的 TextArea,文本写入的地方。

我目前的打印资料:

public void doPrint() 
        String toPrint = writeArea.getText();
        printSetup(writeArea, Main.primaryStage);
    

    private final Label jobStatus = new Label();

    private void printSetup(Node node, Stage owner)
    
        // Create the PrinterJob
        PrinterJob job = PrinterJob.createPrinterJob();

        if (job == null)
        
            return;
        

        // Show the print setup dialog
        boolean proceed = job.showPrintDialog(owner);

        if (proceed)
        
            print(job, node);
        
    

    private void print(PrinterJob job, Node node)
    
        // Set the Job Status Message
        jobStatus.textProperty().bind(job.jobStatusProperty().asString());

        // Print the node
        boolean printed = job.printPage(node);

        if (printed)
        
            job.endJob();
        
    

我想要的: 仅显示字符串的打印,就像您尝试打印某些内容时任何其他记事本应用程序一样

我目前得到的: 带框架的全文区域。

【问题讨论】:

您可以将TextArea的文本包装成一个Text并打印出来。喜欢:printSetup(new Text(writeArea), Main.primaryStage); 我注意到的一个问题,第一行不可见,IDK 为什么。也许你也可以尝试一下,找出原因。 您好,感谢您的建议。但不知何故,我无法将 new Text 应用到我的写作区域......我只是迟钝还是根本不起作用? 【参考方案1】:

正如我在评论中提到的,您可以将其包装成文本,但由于某种原因第一行显示不正确。

解决方案是使用标签,例如:

printSetup(new Label(toPrint), Main.primaryStage);

【讨论】:

您好!谢谢您的帮助!它确实有效,至少有点。我不得不进一步调整它,但这是我使用的解决方案:String toPrint = writeArea.getText(); printSetup(new Label(toPrint), Main.primaryStage); 这是 janky af,但它有效。再次感谢。 我看不出有什么不同,但我很高兴能帮到你 ;)

以上是关于如何打印 TextArea 的内容?的主要内容,如果未能解决你的问题,请参考以下文章

vue使用textare如何正确统计输入字符个数

尝试在 textarea 控件中显示 HTML 文本

textArea打印时,内容不显示

textarea 的内容到打印机

jqPrint 无法打印textArea

textarea输入文字限制个数