我想检查一个 pdf 文件是否包含一个长字符串,它是一个完整的 XML 文档的字符串。
我可以打开这两个文件并提取文本。我已经用以下代码做到了:
File temp = File.createTempFile("temp-pdf", ".tmp");
OutputStream out = new FileOutputStream(temp);
out.write(Base64.decodeBase64(testObject.getPdfAsDoc().getContent()));
out.close();
PDDocument document = PDDocument.load(temp);
PDFTextStripper pdfStripper = new PDFTextStripper();
String pdfText = pdfStripper.getText(document);
Integer posS =pdfText.indexOf("<?xml version");
Integer posE = pdfText.lastIndexOf("</ServiceSpecificationSchema:serviceSpecification>")+"</ServiceSpecificationSchema:serviceSpecification>".length();
pdfText =pdfText.substring( posS,posE );
String xmlText = testObject.getXmlAsDoc().getContent();
现在我遇到了问题,即两个文档的行不匹配,这是导致 pdf 文件中出现换行符等格式的原因。
XML 文件的 TXT 输出示例行:
<?xml version="1.0" encoding="UTF-8"?><ServiceSpecificationSchema:serviceSpecification xmlns:xs=" ..... >
PDF 文件的 TXT 输出示例行:
<?xml version="1.0" encoding="UTF-8"?><ServiceSpecificationSchema:serviceSpecification
xmlns:xs=" ..... >
其次,我在 PDF 的 XML 标签之间有页码。你知道删除这条线的好方法吗?
</operations>
Page 51 of 52
</consumerInterface>
检查 pdf 是否包含 XML 的最佳方法是什么?
我已经尝试从文件中删除所有换行符和空格并进行比较。但是如果我这样做,我就找不到区别的线。最后不一定是有效的 XML 文件。
如果其他人需要,只想发布我的解决方案。
我的代码有点大,把它贴在这里。
基本上,我从 pdf 中提取文本并从中删除第 x 页和标题等字符串。之后,我删除了上面指出的所有空格。最后,我逐个字符地比较提取的字符串,以通知我的用户他们在文本中做错了什么。这种方法效果很好,即使作者不关心格式,只是复制和粘贴整个 xml 文档。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句