c# - 修剪 Base64 字符串以仅显示 C# 中的前 X 个页面
问题描述
不知道这是否可能,但我有一个大约 50 页长的 Base64 字符串。为了显示这一点,我在控制器中将其转换为 PDF,然后在前端使用 PDF 将其显示为 PDF。
我想知道是否有办法在 C# 中修剪 Base64 字符串以仅显示前 15 页?
解决方案
这样做可能会使 Base64 字符串或底层二进制数据不可读:
- 您只能每 4 个字符精确地切割 Base64,它代表原始二进制文件的 3 个字节。其他任何地方都使字符串在最后一个字符上不可解码(大多数解码器会完全折叠,因为它们假定 Base64 字符串已损坏)。
- 并且取决于放入 Base64 的二进制文件所代表的 wich(文件)格式,部分二进制文件很可能无法被解释。
Base64 是专门为跨媒体获取随机二进制数据而发明的,它只可靠地支持 ASCII 字符。例如,电子邮件和 HTML 内联。它基本上是 6/8 编码。
你说这个数据代表 PDF。老实说,大文件一开始就存储在 Base64 中,这确实很奇怪。但是 PDF 确实对此有支持:https ://helpx.adobe.com/premiere-pro/using/interlacing-field-order.html
假设这些是用于在线分发的,那么这些 PDF 很有可能确实启用了隔行扫描。所以它们可以被部分读取——文本在前面,然后隔行扫描的图像在二进制文件的其余部分“涂抹”。
但通常最好只制作预览图像,将其存储在数据库中并保留它。
推荐阅读
- r - 当这些数据帧不等长时,如何匹配两个数据帧之间的奇异值?
- java - 在activityforresult android 8中打开文件的路径文件
- android - 如何用按钮替换文本视图?
- bash - 用于填充 sqlite 表的 Bash 脚本未按预期工作
- jenkins - GCP windows VM 将突然停止允许连接
- java - 基于执行结果返回替代数据结构的方法
- python - 如何将sqlalchemy中列的默认值设置为关系中列的值?
- tfs - vs2008无法连接到tfs2013
- microsoft-graph-api - 创建事件时出错 - 属性“地址”不存在
- javascript - 扩展运算符是否可优化为 O(N)