如何解决如何在Kotlin上使用iText以更高的分辨率或质量打印pdf
当我打印使用iText制作的pdf时,分辨率太低。 我尝试通过设置compress来提高质量: pdfWritter.compressionLevel = 0,但不走运。 我正在寻找要打印的pdf更好的质量。实际上只有它有字母,并且不会改变。
CreatePDF.kt
org.eclipse.birt.runtime
ViewPDFActivity.kt
val folder = File(context.externalCacheDir?.absolutePath.toString())
if (!folder.exists()) folder.mkdirs()
pdfFile = File(folder,"$fileName.pdf")
document = Document(PageSize.LETTER,0F,0F)
pdfWritter.compressionLevel = 0
pdfWritter = PdfWriter.getInstance(document,FileOutputStream(pdfFile))
document.open()
document.add(Paragraph("Dra. Mariana Castro",DefaultFont)
document.close()
val intent = Intent(context,ViewPDFActivity::class.java)
intent.putExtra("path",pdfFile.absolutePath)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
context.startActivity(intent)
activity_view_pdf.xml
class ViewPDFActivity : AppCompatActivity() {
private lateinit var file:File
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_view_pdf)
val bundle: Bundle? = intent.extras
if(bundle != null){
file = File(bundle.getString("path",""))
}
pdfViewAct.fromFile(file)
.enableSwipe(true)
.swipeHorizontal(false)
.enableDoubletap(true)
.enableAntialiasing(true)
.load()
printPDF.setOnClickListener {
val v: View = pdfViewAct
val bmp =
Bitmap.createBitmap(v.getWidth(),v.getHeight(),Bitmap.Config.ARGB_8888)
val c = Canvas(bmp)
v.draw(c)
val photoPrinter = PrintHelper(this)
photoPrinter.scaleMode = PrintHelper.SCALE_MODE_FIT
if (bundle != null) {
bundle.getString("path")?.let { it1 -> photoPrinter.printBitmap(it1,bmp) }
}
}
backButton.setOnClickListener {
finish()
}
}
创建的pdf文件是这样的:PDF Result。即使使用pageSize.A0增加页面大小,质量也很差。
解决此问题的一些想法?我已经尝试了一切。预先感谢。
解决方法
感谢@AndréLemos的回答,我找到了答案。 当我尝试像这样的BitMap图像打印文档时会出现问题:
val v: View = pdfViewAct
val bmp =
Bitmap.createBitmap(v.getWidth(),v.getHeight(),Bitmap.Config.ARGB_8888)
val c = Canvas(bmp)
v.draw(c)
val photoPrinter = PrintHelper(this)
photoPrinter.scaleMode = PrintHelper.SCALE_MODE_FIT
if (bundle != null) {
bundle.getString("path")?.let { it1 -> photoPrinter.printBitmap(it1,bmp) }
}
当我使用此功能打印文件时,段落已转换为图像,并且分辨率也发生了变化(根据pdf中的图像转换)。
仅更改上面2 & 3 answers helps me的代码。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。