java - itext 5.5 纵向方向无法在新页面上工作

标签 java pdf itext

我为带有表格的 HTML 文件运行以下代码。
我能够将首页的 HTML 转换为 PDF,四边都有边距。
但正如我所做的那样 document.newPage(); 并应用 document.setPageSize(); 它不起作用。不存在边距。
PDF 无边框,没有边距。
请指导。

代码:

public class Potrait_ParseHtmlObjects {

public static final String HTML = "C:/h.html";
public static final String DEST = "C:/test33.pdf";

public void createPdf(String file)  {

    // Parse HTML into Element list

    try{ 
    XMLWorkerHelper helper = XMLWorkerHelper.getInstance();
    // CSS
    CSSResolver cssResolver = helper.getDefaultCssResolver(true);

    CssFile cssFile = helper.getCSS(new FileInputStream("D:\\Itext_Test\\Test\\src\\test.css"));
    cssResolver.addCss(cssFile);

    // HTML
    HtmlPipelineContext htmlContext = new HtmlPipelineContext(null);
    htmlContext.setTagFactory(Tags.getHtmlTagProcessorFactory());
    htmlContext.autoBookmark(false);

    //mycode starts
    FontFactory.registerDirectories();
    //mycode ends


    // Pipelines
    ElementList elements = new ElementList();
    ElementHandlerPipeline end = new ElementHandlerPipeline(elements, null);
    HtmlPipeline html = new HtmlPipeline(htmlContext, end);
    CssResolverPipeline css = new CssResolverPipeline(cssResolver, html);

    // XML Worker
    XMLWorker worker = new XMLWorker(css, true);
    XMLParser p = new XMLParser(worker);


    //mycode starts        

    p.parse(new FileInputStream(HTML),Charset.forName("UTF-8"));//changed for Charset Encoding

    // step 1


    Document document = new Document();

    // step 2
    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(file));
    writer.setInitialLeading(12.5f);

    // step 3
    document.open();

    // step 4

    Rectangle left =  new Rectangle(33,33,550,770); 

    document.setPageSize(left);
    System.out.println("1"+document.getPageSize());



    ColumnText column = new ColumnText(writer.getDirectContent());
    column.setSimpleColumn(left);

    int runDirection = PdfWriter.RUN_DIRECTION_LTR;

    column.setRunDirection(runDirection);

    int status = ColumnText.START_COLUMN;
    for (Element e : elements) {

        if (e instanceof PdfPTable) {

            PdfPTable table = (PdfPTable) e;
            for (PdfPRow row : table.getRows()) {
                for (PdfPCell cell : row.getCells()) {
                    if(cell!=null)
                    cell.setRunDirection(runDirection);
                }
            }
        }


        if (ColumnText.isAllowedElement(e)) {
            column.addElement(e);
            status = column.go();

            while (ColumnText.hasMoreText(status)) {
                Rectangle left1 = new Rectangle(50,50,500,700); 
                    document.newPage();
                    document.setPageSize(left1);
                    column.setSimpleColumn(left1);
                status = column.go();
            }

        }
    }



    // step 5
    document.close();
}catch(Exception ex)
{ex.printStackTrace();}
}

/**
 * Main method
 */
public static void main(String[] args) throws IOException, DocumentException {
    File file = new File(DEST);
    file.getParentFile().mkdirs();
    new Potrait_ParseHtmlObjects().createPdf(DEST);
}
}  

最佳答案

在执行 document.newPage() 时会初始化所有页面参数,因此在触发 document 后更改页面大小或边距没有任何意义。 newPage()。如果您想要不同的页面大小(或方向或边距),则需要在调用 document.newPage() 之前设置页面大小、方向和边距的值(如果您想更改第一页,则在 document.open() 之前)。

例如:在您的情况下,您应该像这样创建文档:

Document document = new Document(new Rectangle(33,33,550,770));

您应该像这样更改页面大小:

document.setPageSize(left1);
document.newPage();
column.setSimpleColumn(left1);

您没有任何边距,因为您对页面大小和列使用相同的矩形。您正在创建一个 PDF,其左下角坐标不等于 (0, 0)。这并不违法,但很不寻常。我的猜测是你想做这样的事情:

document.setPageSize(new Rectangle(0, 0, 550, 750););
document.newPage();
column.setSimpleColumn(new Rectangle(50,50,500,700));

这将导致页面尺寸为 7.64 x 10.42 英寸(550 x 750 pt),页边距为 0 每边 69 英寸(50 磅)。

关于java - itext 5.5 纵向方向无法在新页面上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23992797/

相关文章:

java - 如何在 iText PDF 中使用字体

java - JOptionPane YES_NO_OPTION 不理解异常

java - 通过java压缩带有大图像的pdf

pdf - 多个 pdf.js 实例

pdf - 转换 PDF 文档中所有链接的缩放级别

c# - 使用 itextsharp 突出显示 PDF 文件时出现数字超出范围错误

java - 表格单元格中的列表项未设置格式

JAVA:方法,一个字符串在另一个字符串中出现了多少次

java - 如何使用 FatJar (Gradle) 创建单个 jar

javascript - 无法向下滚动对话框并双击文件夹