在java中预先打印的信纸上打印

在java中预先打印的信纸上打印,java,printing,Java,Printing,在我的基于web的应用程序中,我必须在预先打印的文具中打印报告 JAVA中我可以用来打印的选项有哪些。还有其他要求,例如如果文本不适合一页,则应使用下一页进行打印 此外,我想提出的其他一些问题是: 角色宽度会扮演角色吗?”i'和w'代表例如takes 不同的字符宽度 打印是否也取决于打印机 正在使用哪个 另外,我有一个web应用程序,需要在客户机打印机上的客户机上进行打印。有一个类,该类的方法可以帮助您以像素为单位计算字符串的宽度 您的应用程序应该知道您正在使用的打印分辨率,DPI,每英寸点数

在我的基于web的应用程序中,我必须在预先打印的文具中打印报告

JAVA中我可以用来打印的选项有哪些。还有其他要求,例如如果文本不适合一页,则应使用下一页进行打印

此外,我想提出的其他一些问题是:

  • 角色宽度会扮演角色吗?”i'和w'代表例如takes 不同的字符宽度
  • 打印是否也取决于打印机 正在使用哪个
  • 另外,我有一个web应用程序,需要在客户机打印机上的客户机上进行打印。

    有一个类,该类的方法可以帮助您以像素为单位计算字符串的宽度

    您的应用程序应该知道您正在使用的打印分辨率,DPI,每英寸点数

    因此,您可以通过操作以英寸为单位确定文本的打印宽度

    textsizeinpixels/DPI
    
    其中DPI-是您的打印机分辨率。

    我将使用绝对定位的块容器创建布局模板,该块容器对应于纸张表单上的每个字段。这将允许您精确定位文本并限制文本块的范围(使用overflow=“hidden”)

    然后可以使用从XSL-FO源文件生成PDF文件

    例如,使用此源文件:

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" language="EN">
        <fo:layout-master-set>
            <fo:simple-page-master page-width="21cm" page-height="29.7cm" master-name="A4">
                <fo:region-body margin-bottom="0mm" margin-top="0mm"/>
            </fo:simple-page-master>
        </fo:layout-master-set>
        <fo:page-sequence master-reference="A4">
            <fo:flow reference-orientation="0" border-collapse="collapse" flow-name="xsl-region-body">
                <fo:block-container position="absolute" top="3cm" left="3cm" height="2cm" width="5cm" overflow="hidden">
                    <fo:block font-family="Times" font-size="14pt" color="red">
                        Absolute at top=3cm/left=3cm - Lorem ipsum dolor sit amet, consetetur sadipscing elitr
                    </fo:block>
                </fo:block-container>
                <fo:block-container position="absolute" top="4cm" left="9cm" height="2cm" width="5cm" overflow="hidden">
                    <fo:block font-family="Arial Unicode MS" font-size="14pt" color="blue">
                        Absolute at top=4cm/left=9cm - ನಾಮಪ್ರತ್ಯಯಗಳ ಮೋದಲನೇ ವರ್ಗ
                    </fo:block>
                </fo:block-container>
            </fo:flow>
        </fo:page-sequence>
    </fo:root>
    
    
    顶部绝对高度=3厘米/左侧=3厘米-Lorem ipsum dolor sit amet,Conseteteur sadipscing Eliter
    顶部绝对高度=4厘米/左侧=9厘米-ನಾಮಪ್ರತ್ಯಯಗಳ ಮೋದಲನೇ ವರ್ಗ
    
    将产生以下结果


    打印PDF文件时,必须确保PDF查看器不会尝试缩放输出以适应可用的打印空间(我认为此选项在Adobe Acrobat Reader中默认启用)。

    另一个选项是使用JODReports(免费)或Docmosis(非免费)。由于这些工具基于文档或odt文档作为模板,因此您可以在模板中使用诸如“保留下一页”和“允许跨页换行”等属性,以确保生成文档时,文档会根据需要移动到下一页。请注意,我为创建Docmosis的公司工作


    我希望这会有帮助。

    如果你能使用固定宽度的字体,那就容易多了。这可能吗?为此,请使用单间距字体。使用的字体不受限制。但是报告可能包含英语或卡纳达语数据,或者同时包含英语和卡纳达语数据。卡纳达语有固定宽度字体吗?为什么固定宽度字体会有帮助?任何一种像样的布局引擎都可以在使用比例字体设置文本时自动换行、调整和或多或少地打断单词。然而,可能很难找到一个支持Kannada的可编程布局引擎!我有需要打印的动态内容。我知道我可以使用XML在pdf中动态打印值。然而,我有一个要求,如单元格的高度也不应超过,并移动到下一页,如果情况发生。我将如何使用XSL-FO处理这个问题?@Ankit:如果我的答案解决了您最初的问题,请投票并/或接受它。如果你有一个新问题,你应该问一个新问题,而不是在这里发表评论。这是原始问题的一部分。请把问题再读一遍。