我正在尝试使用Apache的PDFBox读取PDF内容,并将其编码为base64以便流式传输到其他地方。为了进行编码,我使用Apache Commons Base64OutputStream类。代码如下:
ByteArrayOutputStream byteOutput = new ByteArrayOutputStream();
Base64OutputStream base64Output = new Base64OutputStream(byteOutput);
List pages = pdfDocument.getDocumentCatalog().getAllPages();
Iterator iter = pages.iterator();
while (iter.hasNext()) {
PDPage page = (PDPage) iter.next();
PDResources resources = page.getResources();
Map<String, PDXObjectImage> pageImages = resources.getImages();
if (pageImages != null) {
Iterator imageIter = pageImages.keySet().iterator();
while (imageIter.hasNext()) {
String key = (String) imageIter.next();
PDXObjectImage image = (PDXObjectImage) pageImages
.get(key);
image.write2OutputStream(base64Output);
}
}
}
String base64 = new String(byteOutput.toByteArray());
看起来是在进行编码,但我需要编写一个Junit测试来验证base64字符串。以下内容似乎无法通过测试。有什么想法吗?
assertTrue(content
.matches("^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$"));
Thanks in advance
=
的填充?可能在 HTTP 传输中,+
被翻译为空格。 - Joop Eggen