0

我不想将一段文本显示为 pdf 下载链接,而是将 pdf 的迷你截图显示为下载链接。

我应该怎么做(从哪里开始)?我的linkedin个人资料截图示例:

http://s.wordpress.com/mshots/v1/http%3A%2F%2Fwww.linkedin.com%2Fin%2Fedbras?w=115

然后可以将其作为前端链接的背景/图像包含在内。这是怎么做到的?这是来自网页,但想法是对后端生成的 pdf 执行相同的操作。我正在通过 Javascript 进行后端调用,并且我有一个 Java 后端,我没有使用 wordpress。

4

3 回答 3

5

使用Apache PDFBox并在上传 PDF 文件后使用此方法从路径加载上传的文档,获取第一页,将其转换为图像并将其保存到您选择的路径中。将此路径保存在您的数据库记录中。

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.List;

import javax.imageio.ImageIO;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;

public class PDFUtil {

    public static void saveFirstPageThumbnail() throws IOException {
        PDDocument document = PDDocument.load("C:\\testbook.pdf");
        List<PDPage> pages = document.getDocumentCatalog().getAllPages();
        PDPage page = pages.get(0); //first one
        BufferedImage bufferedImage = page.convertToImage();
        File outputFile = new File( "C:\\image.jpg");
        ImageIO.write(bufferedImage, "jpg", outputFile);
    }

}

稍后当您需要打印链接时,只需在回调中返回您创建的图像的路径并在普通 html 中形成您的链接:

<a href="path/to/document.pdf"><img src="path/to/image.jpg" /></a>

如果您使用的是 maven,这里是库依赖项

<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>1.8.2</version>
</dependency>
于 2013-11-09T16:05:13.563 回答
0

如果我正确理解了这个问题,如果你有 PDF 和截图图像,你就写

<a href="yourPDFlink.pdf"><img src="http://s.wordpress.com/mshots/v1/http%3A%2F%2Fwww.linkedin.com%2Fin%2Fedbras?w=115" alt="Name of your PDF"/></a>
于 2013-11-09T14:44:38.030 回答
0

在 ABCPdf .NET 下,您只需编写:

Doc doc = new Doc();
doc.Read(@"c:\mydoc.pdf");
doc.Rendering.Save(@"c:\mydoc.jpg");

很简单吧?

请注意,内部 PDF 渲染非常复杂,许多解决方案都跳过了透明组和混合等重要功能。

因此,在选择您的渲染解决方案时,请考虑您的文档来自哪里。

如果它们来自统一的来源,您可能不需要太担心会出现问题。如果它适用于一个人,它很可能适用于所有人。

但是,如果您的文档来自真实世界的来源,您需要确保您的渲染解决方案功能齐全,以便它可以处理所有文档,而不仅仅是普通文档。

我的回复可能包含基于 ABCpdf .NET 的概念。这是我的工作 - 这是我所知道的。:-)

于 2013-11-11T13:32:48.653 回答