Android-将附加pdf页面附加到打印的pdf文档
在我的应用程序中,我将一些部分打印成pdf供用户使用。我使用打印的PDF文档来实现这一点 代码简而言之如下所示:Android-将附加pdf页面附加到打印的pdf文档,android,pdf,pdfdocument,Android,Pdf,Pdfdocument,在我的应用程序中,我将一些部分打印成pdf供用户使用。我使用打印的PDF文档来实现这一点 代码简而言之如下所示: // create a new document val printAttributes = PrintAttributes.Builder() .setMediaSize(mediaSize) .setColorMode(PrintAttributes.COLOR_MODE_COLOR) .se
// create a new document
val printAttributes = PrintAttributes.Builder()
.setMediaSize(mediaSize)
.setColorMode(PrintAttributes.COLOR_MODE_COLOR)
.setMinMargins(PrintAttributes.Margins.NO_MARGINS)
.build()
val document = PrintedPdfDocument(context, printAttributes)
// add pages
for ((n, pdfPageView) in pdfPages.withIndex()) {
val page = document.startPage(n)
Timber.d("Printing page " + (n + 1))
pdfPageView.draw(page.canvas)
document.finishPage(page)
}
// write the document content
try {
val out: OutputStream = FileOutputStream(outputFile)
document.writeTo(out)
out.close()
Timber.d("PDF written to $outputFile")
} catch (e: IOException) {
return
}
一切都很好。但是现在我想在末尾添加另一个页面。唯一的例外是,这将是从资产中预生成的pdf文件我只需要附加它,因此不需要额外的渲染等
有没有办法通过Android SDK中的PdfDocument类实现这一点
我想这可能是一个类似的问题:
但这是真的吗?答案没有被接受,只有3岁。有什么建议吗?好的,我在这里回答我自己的问题 看起来没有太多的选择。至少我找不到任何本地的东西。Android框架中有一些pdf库,但它们似乎都只支持创建新页面,而不支持对现有文档的操作 这就是我所做的: 首先,似乎没有任何好的Android库。我在这里找到了一个为Android准备ApachePDF文件盒的文件。将此项添加到Gradle文件:
implementation 'com.tom_roush:pdfbox-android:1.8.10.3'
在代码中,您现在可以导入
import com.tom_roush.pdfbox.multipdf.PDFMergerUtility
在这里我添加了一个方法
val ut = PDFMergerUtility()
ut.addSource(file)
val assetManager: AssetManager = context.assets
var inputStream: InputStream? = null
try {
inputStream = assetManager.open("appendix.pdf")
ut.addSource(inputStream)
} catch (e: IOException) {
...
}
// Write the destination file over the original document
ut.destinationFileName = file.absolutePath
ut.mergeDocuments(true)
通过这种方式,从资产中加载附录页面,并将其附加到文档末尾。
然后,它会被写回与以前相同的文件