vue.base64转pdf加载太慢
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue.base64转pdf加载太慢相关的知识,希望对你有一定的参考价值。
参考技术A vue.base64转pdf加载太慢是因为pdf加载需要一定的时间,可以通过插件加载快一点,首先先下载一个插件即可。 参考技术B 使用base64传输pdf文件在pdf文件比较小的时候加载速度能够接收如果pdf文件太大,加载速度会特别慢
建议还是使用对象存储服务 参考技术C VUE项目加载速度慢,加载资源量大,带宽占用多,解决方案基于提高用户的访问体验
如何在已加载到 PDFView 的 PDF 上实现文本到语音
【中文标题】如何在已加载到 PDFView 的 PDF 上实现文本到语音【英文标题】:How do I implement text to speech on a PDF that's already loaded to PDFView 【发布时间】:2018-08-20 14:28:32 【问题描述】:我正在尝试在我的应用程序中实现文本转语音。首先,我实现了 PDFview,它允许我从我的设备中选择 PDF 文件并加载它。我想要实现的是,在将此 PDF 加载到 PDFview 后,我想将文本读出来。我如何实现这一目标?
使用传入我的 PDFView 库的相同 Uri 来加载 pdf,以便我可以查看它
public String getRealPathFromURI(Context context, Uri contentURI)
String result;
Cursor cursor = context.getContentResolver().query(uri, null, null, null, null);
if(cursor == null)
result = contentURI.getPath();
else
cursor.moveToFirst();
int idx = cursor.getColumnIndex(MediaStore.Files.FileColumns.DATA);
result = cursor.getString(idx);
cursor.close();
return result;
btnSpeak.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View view)
String parsedText = "";
try
PdfReader pdfReader = new PdfReader(getRealPathFromURI(getContext(), uri));
int n = pdfReader.getNumberOfPages();
for (int i = 0; i < n; i++)
parsedText = parsedText + PdfTextExtractor.getTextFromPage(pdfReader, i + 1).trim() + "\n";
pdfReader.close();
textToSpeech.speak(parsedText, TextToSpeech.QUEUE_FLUSH, null);
catch (Exception ex)
);
上面的代码是我试图做的。
【问题讨论】:
你会 1) 创建一个 TextToSpeech 对象,tts,2) 将 pdf 文件中的所有 txt 从头到尾解析成一个长字符串,以及 3) tts.speak(string)。如果这是您想要做的更具体的事情,那么可以用更精确的要求编辑问题。 我试图将 PDF 中的所有文本解析为一个长字符串。我尝试使用 IText PDFReader 库来做到这一点,但它不起作用,因此 tts 无法读出文本 您可以使用 Log 和 logcat 来确定您是否遇到异常,如果是,是什么。如果您没有收到异常,请通过记录它来检查您是否实际上在 parseText 字符串中获取了任何文本。如果你得到正确的文本,那么问题出在 textToSpeech (可疑)。 实际上我没有从 parsedText 中得到任何文本。我认为这就是问题所在。我尝试了正常的文本,并且 tts 工作正常。它从 PDF 中提取文本有点问题 我真的没有使用 URI 或 PDFReader 类的经验...但是如果您在代码的不同位置应用使用 Log.i(...) 的相同方法来验证事情正在按照你所期望的方式发生,那么你就会发现问题所在。例如,您可以记录 getRealPath() 给出的结果以确保它是正确的......或者您可以在 for 循环中记录以确保它甚至被执行。 【参考方案1】:试试这个:
btnSpeak.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View view)
String parsedText = "We did not get any text from the PDF. You will have to examine why.";
try
PdfReader pdfReader = new PdfReader(getRealPathFromURI(getContext(), uri));
int n = pdfReader.getNumberOfPages();
for (int i = 0; i < n; i++)
parsedText = parsedText + PdfTextExtractor.getTextFromPage(pdfReader, i + 1).trim() + "\n";
pdfReader.close();
catch (Exception ex)
Log.i("XXX", "There was an exception: " + ex);
textToSpeech.speak(parsedText, TextToSpeech.QUEUE_FLUSH, null);
);
【讨论】:
以上是关于vue.base64转pdf加载太慢的主要内容,如果未能解决你的问题,请参考以下文章
Base64 字符串编码的图像未加载到输出 PDF (TuesPechkin / Wkhtmltopdf)