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
相关产品推荐
相关产品推荐

