将字符串转换回 PDF
Convert String back to PDF
我从我们的 RPC 服务器收到了一个包含 String
的响应。此 String
是 PDF
转换为 String
。在我的应用程序中,我需要将此字符串转换回 PDF
文件。我在 Stack 上尝试了几个解决方案,但它们对我不起作用。
问题是我的函数一直抛出错误,因为它无法将我的字符串转换为 CGPDFDocument
。我在这里做错了什么?
这是我目前拥有的代码。
final class PdfGenerator: PdfGeneratorInterface {
// MARK: PdfGeneratorProtocol
func generatePdf(string: String) throws -> CGPDFDocument {
guard let
data = string.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false),
cfData = CFDataCreate(kCFAllocatorDefault, UnsafePointer<UInt8>(data.bytes), data.length)
else {
throw PdfGeneratorException.UnsupportedFormatException
}
let cgDataProvider = CGDataProviderCreateWithCFData(cfData)
guard let cgPDFDocument = CGPDFDocumentCreateWithProvider(cgDataProvider) else {
throw PdfGeneratorException.UnsupportedFormatException
}
return cgPDFDocument
}
}
PDF 字符串内容:
https://gist.github.com/Combidi/fa53f2d74e7ae177bb3885d5d640c13c
谢谢
看起来您链接的字符串是 base64 编码的。如果你解码它,结果应该是一个你可以使用的“%PDF”字符串。
我从我们的 RPC 服务器收到了一个包含 String
的响应。此 String
是 PDF
转换为 String
。在我的应用程序中,我需要将此字符串转换回 PDF
文件。我在 Stack 上尝试了几个解决方案,但它们对我不起作用。
问题是我的函数一直抛出错误,因为它无法将我的字符串转换为 CGPDFDocument
。我在这里做错了什么?
这是我目前拥有的代码。
final class PdfGenerator: PdfGeneratorInterface {
// MARK: PdfGeneratorProtocol
func generatePdf(string: String) throws -> CGPDFDocument {
guard let
data = string.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false),
cfData = CFDataCreate(kCFAllocatorDefault, UnsafePointer<UInt8>(data.bytes), data.length)
else {
throw PdfGeneratorException.UnsupportedFormatException
}
let cgDataProvider = CGDataProviderCreateWithCFData(cfData)
guard let cgPDFDocument = CGPDFDocumentCreateWithProvider(cgDataProvider) else {
throw PdfGeneratorException.UnsupportedFormatException
}
return cgPDFDocument
}
}
PDF 字符串内容:
https://gist.github.com/Combidi/fa53f2d74e7ae177bb3885d5d640c13c
谢谢
看起来您链接的字符串是 base64 编码的。如果你解码它,结果应该是一个你可以使用的“%PDF”字符串。