【发布时间】:2017-10-16 17:09:10
【问题描述】:
我在使用 Aspose.Pdf-Cloud v1.0.9 将 pdf 转换为 html 时遇到问题。
代码:
public byte[] ConvertPdfToHtml(byte[] doc, string fileName)
{
var pdfApi = new PdfApi(ConfigurationManager.AppSettings["AsposeKey"],
ConfigurationManager.AppSettings["AsposeSID"], ConfigurationManager.AppSettings["AsposeUrl"]);
try
{
var apiResponse = pdfApi.PutConvertDocument("html", null,
Path.GetFileNameWithoutExtension(fileName) + ".html", doc);
if (apiResponse != null && apiResponse.Status.Equals("Ok"))
{
return apiResponse.ResponseStream;
}
throw new Exception("Couldn't convert pdf - " + fileName + " to HTML...");
}
catch (Exception ex)
{
NLogger.LogError("ConvertPdfToHtml - " + ex);
throw;
}
}
似乎无论我上传什么(Adobe,selectPdf),我都会收到 400 错误请求。任何人都有运气让它工作吗?
到目前为止,Aspose.Words 对我来说非常适合 doc / docx to html。
更新:登录帐户后,似乎在后台生成错误:
错误:方法或操作未实现。方法:将文档转换为在线指定的格式。参数:format 'html',url '',outPath 'testadobe.html'
这可能是 aspose sdk 问题,我会尝试与他们联系,因为该方法已在 sdk 上公开,并且完全符合我对文档的需要,只需要它也可以与 pdf 一起使用。
更新代码:
public byte[] ConvertPdfToHtml(byte[] doc, string fileName)
{
var pdfApi = new PdfApi(ConfigurationManager.AppSettings["AsposeKey"],
ConfigurationManager.AppSettings["AsposeSID"], ConfigurationManager.AppSettings["AsposeUrl"]);
var storageApi = new StorageApi(ConfigurationManager.AppSettings["AsposeKey"],
ConfigurationManager.AppSettings["AsposeSID"], ConfigurationManager.AppSettings["AsposeUrl"]);
try
{
storageApi.PutCreate(fileName, "", "", doc);
var apiResponse = pdfApi.GetDocumentWithFormat(fileName, "html", "", "", Path.GetFileNameWithoutExtension(fileName) + ".html");
if (apiResponse != null && apiResponse.Status.Equals("Ok"))
{
var storageRes = storageApi.GetDownload(Path.GetFileNameWithoutExtension(fileName) + ".html", null, "");
var htmlDoc = ZipExtractor.ExtractHtmlFromZip(storageRes.ResponseStream,
Path.GetFileNameWithoutExtension(fileName) + ".html");
return htmlDoc;
}
throw new Exception("Couldn't convert pdf - " + fileName + " to HTML...");
}
catch (Exception ex)
{
NLogger.LogError("ConvertPdfToHtml - " + ex);
throw;
}
}
后人的解压功能:
public static byte[] ExtractHtmlFromZip(byte[] zipBytes, string fileName)
{
var zipStream = new MemoryStream(zipBytes);
if(zipStream == null) throw new NullReferenceException("zipStream doesn't contain any bytes...");
var archive = new ZipArchive(zipStream);
foreach (var zipEntry in archive.Entries)
{
if (zipEntry.FullName == fileName)
{
var fileStream = zipEntry.Open();
using (var ms = new MemoryStream())
{
fileStream.CopyTo(ms);
var bytes = ms.ToArray();
return bytes;
}
}
throw new FileNotFoundException("Couldn't find " + fileName + " in zip archive...");
}
throw new Exception("Oops... looks like this should've never been reached in ExtractHtmlFromZip");
}
【问题讨论】:
-
我自己从未使用过它,所以我可能不会提供太多帮助,但可能值得包括如何构造作为 doc 传入的对象、任何处理以及然后转换为字节数组(感觉很明显,但可能并非如此)。就个人而言,我遇到过类似的问题,并且有一个处理步骤损坏了 tiff 文件。
-
@Robert 实际上,我已经完成了获取文档的所有过程,因此我可以保证字节流是纯的;)我更新了我的问题,看起来这可能是他们的 api 的问题sdk.
-
@Erik Philips,我们正在调查错误请求错误,并在修复后通知您。我与 Aspose 合作,担任开发人员宣传员。
-
@ImranRafique 我编辑了这个问题。你的 cmets 应该指向 RandomUs1r :)
标签: c# pdf aspose aspose.pdf