Java 如何创建我自己的PageSize变量使用iTextpdf创建PDF文档

Java 如何创建我自己的PageSize变量使用iTextpdf创建PDF文档,java,swing,netbeans-8,itext7,Java,Swing,Netbeans 8,Itext7,我想使用iTextpdf 7创建pdf文档,但我不想使用任何默认页面大小 我想设置纸张大小的宽度和高度,但当我尝试使用Rectangle()类进行设置时,它会显示错误,我无法创建任何内容。 我以前从未使用过这个库,我不知道如何把它做好 这是我编写的代码的一个示例: String url_file= "C:\\Users\\Mike89\\Documents\\PDFJava\\pdfFiles\\SALES\\SALEINVOICE"+id+".pdf"; PdfWriter writ

我想使用iTextpdf 7创建pdf文档,但我不想使用任何默认页面大小

我想设置纸张大小的宽度和高度,但当我尝试使用
Rectangle()
类进行设置时,它会显示错误,我无法创建任何内容。 我以前从未使用过这个库,我不知道如何把它做好

这是我编写的代码的一个示例:

   String url_file= "C:\\Users\\Mike89\\Documents\\PDFJava\\pdfFiles\\SALES\\SALEINVOICE"+id+".pdf";

 PdfWriter writer = new PdfWriter(url_file);
 PdfDocument pdf = new PdfDocument(writer);            
 Rectangle pagesize = new Rectangle(148, 350);
 Document document = new Document(pdf, pagesize);
 document.setMargins(2, 2, 2, 2);

         Table table1 = new Table(UnitValue.createPercentArray(1)).useAllAvailableWidth().setBorder(Border.NO_BORDER);
    Cell cell1;
    cell1 = new Cell();
    cell1.add(new Paragraph("COMPANY NAME").setTextAlignment(TextAlignment.CENTER).setFontSize(5).setBold()).setBorder(Border.NO_BORDER);
    cell1.add(new Paragraph("DOCUMENT ID").setTextAlignment(TextAlignment.CENTER).setFontSize(5)).setBorder(Border.NO_BORDER);
    cell1.add(new Paragraph("COMPANY ADDRESS").setTextAlignment(TextAlignment.CENTER).setFontSize(5)).setBorder(Border.NO_BORDER);
    cell1.add(new Paragraph("TELEPHONE").setTextAlignment(TextAlignment.CENTER).setFontSize(5)).setBorder(Border.NO_BORDER);
    table1.addCell(cell1);
    document.add(table1);

   document.close();
netbeans向我显示的错误如下:

 incompatible types: Rectangle cannot be converted to PageSize

我不想使用PageSize.A8、A9或A10之类的东西。我只想创建自己的页面大小,但我不知道我的代码出了什么问题。如何解决此问题?

矩形和PageSize是不同的类型,尽管PageSize扩展了矩形,但文档构造函数需要PageSize。在Netbeans中,使用CTRL-SPACE可以在工作时查看更多内容:

请更换这个

Rectangle pagesize = new Rectangle(148, 350);
Document document = new Document(pdf, pagesize);
为此:

PageSize pagesize = new PageSize(148, 350);
Document document = new Document(pdf, pagesize);

Rectangle和PageSize是不同的类型,尽管PageSize扩展了Rectangle,但文档构造函数需要PageSize。在Netbeans中,使用CTRL-SPACE可以在工作时查看更多内容:

请更换这个

Rectangle pagesize = new Rectangle(148, 350);
Document document = new Document(pdf, pagesize);
为此:

PageSize pagesize = new PageSize(148, 350);
Document document = new Document(pdf, pagesize);

谢谢你的回答。我做了您在回答中提交的更改,但没有显示错误,pdf已创建,但当我尝试打开它时,AdobReader会显示错误,如“文件已损坏或损坏”,文件大小为0字节。这可能意味着由于以前的问题,该文件已存在。删除它,然后重试,并观察控制台上的任何消息。我刚刚设法创建了这个文件。我使用的实际代码:(这也包含导入)是的,太完美了。这对我现在有用。我确实删除了现有的文件并再试了一次,问题就解决了。非常感谢。顺便说一句,需要删除现有文件可能表明您在保存pdf时出错,例如附加到现有文件…谢谢您的回答。我做了您在回答中提交的更改,但没有显示错误,pdf已创建,但当我尝试打开它时,AdobReader会显示错误,如“文件已损坏或损坏”,文件大小为0字节。这可能意味着由于以前的问题,该文件已存在。删除它,然后重试,并观察控制台上的任何消息。我刚刚设法创建了这个文件。我使用的实际代码:(这也包含导入)是的,太完美了。这对我现在有用。我确实删除了现有的文件并再试了一次,问题就解决了。非常感谢。顺便说一句,需要删除现有文件可能表明您在保存pdf时出错,例如附加到现有文件。。。