gpt4 book ai didi

java - Appengine 转换 Api (java)

转载 作者:行者123 更新时间:2023-12-02 07:41:36 26 4
gpt4 key购买 nike

我想在 appengine 中将 pdf 转换为图像文件。理想情况下,我会将 pdf 作为 blob 上传并存储 pdf 和 pdf 的图像。转换也可以在不同的时间(任务队列)完成。

我还没有找到任何工作示例或良好的文档。
官方文档是here 。这是我的上传 servlet 的实现。

@SuppressWarnings("serial")
public class UploadBlobServlet extends HttpServlet {

private static final Logger log = Logger.getLogger(UploadBlobServlet.class.getName());

public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws IOException {

BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
Map<String, BlobKey> blobs = blobstoreService.getUploadedBlobs(req);
BlobKey blobKey = blobs.get("data");
log.log(Level.WARNING,"blobKey: "+blobKey.getKeyString());



if (blobKey != null) {
resp.getWriter().println(blobKey.getKeyString());

BlobstoreInputStream in=new BlobstoreInputStream(blobKey);
byte[] b = IOUtils.toByteArray(is);
// try{
in.read(b);
Asset asset = new Asset(
"application/pdf", b, "testfile.pdf");
Document document = new Document(asset);
Conversion conversion = new Conversion(document, "image/png");

ConversionService service =
ConversionServiceFactory.getConversionService();
ConversionResult result = service.convert(conversion);

if (result.success()) {
// Note: in most cases, we will return data all in one asset,
// except that we return multiple assets for multi-page images.
FileService fileService=FileServiceFactory.getFileService();
for (Asset ass : result.getOutputDoc().getAssets()) {
AppEngineFile file=fileService.createNewBlobFile("image/png", "testfile.png");
FileWriteChannel writeChannel=fileService.openWriteChannel(file, false);
writeChannel.write(ByteBuffer.wrap(b));
writeChannel.closeFinally();
}
} else {
log.log(Level.WARNING,"error");

}

更新:添加了 byte[]=IOUtils.toByteArray(is);并且仍然获得 NPE...

如果有人有经验,我也很好奇转换的质量。

最佳答案

要转换文档,您首先必须创建 Assets 。通过将字节传递给构造函数来创建 Assets ,如示例所示。在您的情况下,您需要使用类 BlobstoreInputStream读取 PDF 的字节。

BlobKey blobKey = new BlobKey("your-pdf-blobkey");
InputStream is = new BlobstoreInputStream(blobkey);

然后您需要从此输入流中读取所有字节。

转换后,您可以使用asset.getData()访问转换后图像的字节,然后按照this doc将图像写入 blobstore。

关于java - Appengine 转换 Api (java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11513841/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com