我想将 PDF 转换为图像,但我只想要包含所有图像和矢量图形的单个输出图像。我不要文字
I Want to Convert PDF TO IMAGE but I only want single output image which contain all the images and Vector graphics only. I do not want text
请建议我如何使用 pdfbox 实现此目的?
我尝试了以下代码:
try {
PDDocument document = PDDocument.load(new File(inputFilePath));
PDFRenderer pdfRenderer = new PDFRenderer(document);
for (int page = 0; page < document.getNumberOfPages(); ++page)
{
BufferedImage bim = pdfRenderer.renderImageWithDPI(page, 300, ImageType.RGB);
ImageIOUtil.writeImage(bim, outputFilePath + "-" + (page+1) + ".png", 300);
}
document.close();
} catch (Exception e) {
e.printStackTrace();
}
我附上了我得到的输出
看到这张照片我不想要内容:
[![看到这张照片我不想要内容][1]][1]
我期待下面的输出,看这张照片:
[![看这张图][2]][2]
第一步,您可以从 PDF 中删除文本。如果 PDF 中的文本存储在页面内容流中(而不是某些引用形式的 XObjects 或某些注释),您可以使用 中的 PdfContentStreamEditor
,例如像这样:
PDDocument document = ...;
for (PDPage page : document.getDocumentCatalog().getPages()) {
PdfContentStreamEditor identity = new PdfContentStreamEditor(document, page) {
@Override
protected void write(ContentStreamWriter contentStreamWriter, Operator operator, List<COSBase> operands) throws IOException {
String operatorString = operator.getName();
if (TEXT_SHOWING_OPERATORS.contains(operatorString))
{
return;
}
super.write(contentStreamWriter, operator, operands);
}
final List<String> TEXT_SHOWING_OPERATORS = Arrays.asList("Tj", "'", "\"", "TJ");
};
identity.processPage(page);
}
(EditPageContent 测试 testRemoveTextDocument
)
如果您希望结果为位图图像,您现在可以像以前一样渲染此文档。
请建议我如何使用 pdfbox 实现此目的?
我尝试了以下代码:
try {
PDDocument document = PDDocument.load(new File(inputFilePath));
PDFRenderer pdfRenderer = new PDFRenderer(document);
for (int page = 0; page < document.getNumberOfPages(); ++page)
{
BufferedImage bim = pdfRenderer.renderImageWithDPI(page, 300, ImageType.RGB);
ImageIOUtil.writeImage(bim, outputFilePath + "-" + (page+1) + ".png", 300);
}
document.close();
} catch (Exception e) {
e.printStackTrace();
}
我附上了我得到的输出
看到这张照片我不想要内容:
[![看到这张照片我不想要内容][1]][1]
我期待下面的输出,看这张照片:
[![看这张图][2]][2]
第一步,您可以从 PDF 中删除文本。如果 PDF 中的文本存储在页面内容流中(而不是某些引用形式的 XObjects 或某些注释),您可以使用 PdfContentStreamEditor
,例如像这样:
PDDocument document = ...;
for (PDPage page : document.getDocumentCatalog().getPages()) {
PdfContentStreamEditor identity = new PdfContentStreamEditor(document, page) {
@Override
protected void write(ContentStreamWriter contentStreamWriter, Operator operator, List<COSBase> operands) throws IOException {
String operatorString = operator.getName();
if (TEXT_SHOWING_OPERATORS.contains(operatorString))
{
return;
}
super.write(contentStreamWriter, operator, operands);
}
final List<String> TEXT_SHOWING_OPERATORS = Arrays.asList("Tj", "'", "\"", "TJ");
};
identity.processPage(page);
}
(EditPageContent 测试 testRemoveTextDocument
)
如果您希望结果为位图图像,您现在可以像以前一样渲染此文档。