You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java用PDF2DOM转PDF为HTML后,如何删除带r类的div或r样式?

解决PDF2DOM转换后含r类div的显示问题

在JAX-RS Web服务中使用PDF2DOM库实现PDF转HTML时,转换后的HTML中带r类的div会导致显示效果不佳,可通过以下两种方式解决:

原转换代码

Document dom = null;
try {
    // load the PDF file using PDFBox
    PDDocument pdf = PDDocument.load(tempFile);
    // create the DOM parser
    PDFDomTree parser = new PDFDomTree();
    // parse the file and get the DOM Document
    dom = parser.createDOM(pdf);

} catch (Exception e) {
    e.printStackTrace();
}

return dom;

方案一:删除所有带r类的div

在获取到DOM文档后,遍历并移除所有class属性为r的div元素:

// 处理DOM文档,删除带r类的div
if (dom != null) {
    // 使用XPath查找所有class包含r的div
    XPath xpath = XPathFactory.newInstance().newXPath();
    NodeList divs = (NodeList) xpath.evaluate("//div[contains(@class, 'r')]", dom, XPathConstants.NODESET);
    
    // 逆序遍历删除,避免索引错乱
    for (int i = divs.getLength() - 1; i >= 0; i--) {
        Node div = divs.item(i);
        div.getParentNode().removeChild(div);
    }
}

方案二:移除头部的r样式规则

如果r类的样式定义在HTML头部的style标签中,可直接删除对应的样式规则:

if (dom != null) {
    // 获取head标签下的所有style元素
    NodeList styleNodes = dom.getElementsByTagName("style");
    for (int i = 0; i < styleNodes.getLength(); i++) {
        Element style = (Element) styleNodes.item(i);
        String cssContent = style.getTextContent();
        // 移除所有.r相关的样式规则
        String cleanedCss = cssContent.replaceAll("\\.r\\s*\\{[^}]+\\}", "");
        style.setTextContent(cleanedCss);
    }
}

内容的提问来源于stack exchange,提问作者Liliymas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 18:35:51