我正试图通过Google将多个Google文件导出为Pdf格式,并使用iText7将它们合并为一个文件,但是它抛出了异常的 'PDF头找不到‘。是因为谷歌导出的奇怪的PDF格式。
Google磁盘生成的PDF内容(与记事本一起阅读)无效。
文件内容开始时类似于这个倥䙄ㄭ㐮┊ㄊ,而不是像%PDF-1.4这样的东西。
PDF上传的文件可以从Google磁盘读取,没有任何问题,即使我直接将Stream导出到磁盘,它也是可读的。当我通过Google .手动下载文件时,文件内容完全相同。
下面是我通过API导出文件的代码:
var mimeType = "application/pdf";
var file = GetFile(sourceFile);
var pdfRequest = _driveService.Files.Export(sourceFile, mimeType);
var stream = pdfRequest.ExecuteAsStream();然后我通过API将PDF上传回Google
var newFile = new Google.Apis.Drive.v3.Data.File();
newFile.MimeType = mimeType;
newFile.Parents = new List<string>() { targetFolder };
var createRequest = _driveService.Files.Create(newFile, stream, mimeType);
createRequest.SupportsAllDrives = true;
var createResult = createRequest.Upload();奇怪的是,当我使用var text = pdfRequest.Execute();而不是pdfRequest.ExecuteAsStream时,导出的PDF格式是可以的(它以%PDF-1.7开头)。但是Execute()返回字符串而不是流。
是否有任何方法从Google获得标准PDF格式或以任何可能的方式转换它?
发布于 2022-03-09 22:54:57
问题在于iText7本身。它认为PDF无效,但它可能只是不支持iso8859_2编码中的PDF。我试着用PDFSharp代替,一切都很顺利。
我使用了Google中的ExecuteAsStream()来获得PDF,没有任何问题,所以它不是错误的。
谢谢你所有的建议。
https://stackoverflow.com/questions/71402905
复制相似问题