标签: pdfrenderer

如何提高PDF渲染器中图像的分辨率?

我想提高图像的分辨率.我用过PDFRenderer-0.9.0 jar.它从java.net 下载,用于将PDF页面转换为图像.

我想将46_2.pdf PDF文件转换为图像.转换后的46_2.png图片尺寸较小612 x 792 [ width x height ],

所以我想将图像尺寸增加到1200 x 1400 [ width x height].

我以前试过PdfBox将PDF页面转换成PNG图像文件.有一个问题only page is converted but text is missing.所以我尝试了PdfRenderer进行图像转换.

码:

package com.pdfrenderer.examples;

import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

import javax.imageio.ImageIO;

import com.sun.pdfview.PDFFile;
import com.sun.pdfview.PDFPage;

public class ConvertPdfPagesToImage {
    public static void main(String[] args) {
        try {
            String …
Run Code Online (Sandbox Code Playgroud)

java pdf myeclipse bufferedimage pdfrenderer

6
推荐指数
1
解决办法
2万
查看次数

PDF PrinterJob获取工作状态

我有一个问题是使用java打印PDF.我知道Java本身不支持print PDF,因为java没有PDF渲染器.所以为了解决这个问题,我使用的是PDFRenderer库,下面是一个用它打印的例子:

 File f = new File("myfile.pdf");
 FileInputStream fis = new FileInputStream(f);
 FileChannel fc = fis.getChannel();
 ByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0,
 fc.size());
 PDFFile pdfFile = new PDFFile(bb); 
 PDFPrintPage pages = new PDFPrintPage(pdfFile);
 PrinterJob pjob = PrinterJob.getPrinterJob();
 PageFormat pf = PrinterJob.getPrinterJob().defaultPage();
 pjob.setJobName(f.getName());
 pjob.setPrintService(mPrintService);
 Book book = new Book();
 book.append(pages, pf, pdfFile.getNumPages());
 pjob.setPageable(book);
 pjob.print();
Run Code Online (Sandbox Code Playgroud)

它工作正常,但我需要一些方法来获取我的打印机工作的状态.我需要知道我的打印机工作何时完成,我可以启动另一个.Java API与DocPrintJob和PrintJobListener有很好的解决方案,但我需要使用PrinterJob进行PDF打印.那么我怎么能像在DocPrintJob中那样从我的PrinterJob中听取工作状态呢?

java printing pdf pdfrenderer

6
推荐指数
1
解决办法
1015
查看次数

PDFRenderer缩放和翻转

我的PDF渲染器有以下问题 -

  1. 当我缩放图像视图时,页面会随着页面移动到下一页或上一页而缩放..页面未被保留..
  2. 我已经使用xml实现了翻转,并且使用手势监听器的缩放似乎都是重写......任何建议都可以吗?

public boolean onTouchEvent(MotionEvent touchevent){

int actionId = touchevent.getPointerCount();

if (actionId == 1 && touchevent.getPointerCount() == 2) {
    switch (touchevent.getAction()) {
    case MotionEvent.ACTION_DOWN:
    // when user first touches the screen to swap
    {
        flag = 0;
        System.out.println("ACTION_DOWN - "
                + touchevent.getPointerCount());
        lastX = touchevent.getX();
        break;
    }

    // Finger went up
    case MotionEvent.ACTION_UP: {
        flag = 0;
        float currentX = touchevent.getX();
        System.out.println("ACTION_UP - "
                + touchevent.getPointerCount());
        // if left to right swipe on screen - previous page
        if …
Run Code Online (Sandbox Code Playgroud)

android gesture imageview pdfrenderer

5
推荐指数
0
解决办法
1501
查看次数

Android Studio - PDFRendererBasic - 无法替换sample.pdf?

每次我编辑PDFRendererBasicFragment java代码

mFileDescriptor = context.getAssets().openFd("sample.pdf").getParcelFileDescriptor();
Run Code Online (Sandbox Code Playgroud)

对于放在assets文件夹中的不同pdf,应用程序崩溃了..

Logcat报告:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.android.pdfrendererbasic/com.example.android.pdfrendererbasic.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.graphics.pdf.PdfRenderer.getPageCount()' on a null object reference
Run Code Online (Sandbox Code Playgroud)

为什么会这样?我甚至尝试在构建之前将我的PDF重命名为sample.pdf并且它仍然崩溃..一切都与原始代码一起正常工作,只是不让我替换PDF.

堆栈跟踪:

02-11 11:11:50.130 18201-18201/com.example.android.pdfrendererbasic I/art: Not late-enabling -Xcheck:jni (already on)
02-11 11:11:50.130 18201-18201/com.example.android.pdfrendererbasic I/art: Late-enabling JIT
02-11 11:11:50.132 18201-18201/com.example.android.pdfrendererbasic I/art: JIT created with code_cache_capacity=2MB compile_threshold=1000
02-11 11:11:50.201 18201-18201/com.example.android.pdfrendererbasic W/System: ClassLoader referenced unknown path: /data/app/com.example.android.pdfrendererbasic-1/lib/x86
02-11 11:11:50.252 18201-18201/com.example.android.pdfrendererbasic W/System.err: java.io.IOException: cannot create document. Error: 3
02-11 11:11:50.253 18201-18201/com.example.android.pdfrendererbasic W/System.err:     at android.graphics.pdf.PdfRenderer.nativeCreate(Native Method)
02-11 11:11:50.253 …
Run Code Online (Sandbox Code Playgroud)

pdf android pdfrenderer

5
推荐指数
1
解决办法
2248
查看次数

PDFRenderer无法显示文件

我正在使用API​​ Level 21,我正在尝试显示从Internet下载并存储在缓存目录中的PDF.

   private void openRenderer(Context context) throws IOException {
    Log.d("NoiPA", "Opening PDF File: " + pdfPath);
    // In this sample, we read a PDF from the assets directory.
    mFileDescriptor = ParcelFileDescriptor.open(new File(pdfPath),ParcelFileDescriptor.MODE_READ_ONLY);
    //mFileDescriptor = context.getAssets().openFd(pdfPath).getParcelFileDescriptor();
    // This is the PdfRenderer we use to render the PDF.
    mPdfRenderer = new PdfRenderer(mFileDescriptor);
}
Run Code Online (Sandbox Code Playgroud)

上面的代码使应用程序崩溃,并显示以下堆栈跟踪:

Download: Completed -> Showing PDF
onAttach -> pdfPath: /data/data/com.vitobellini.noipa/cache/MAG 2016.pdf
Opening PDF File: /data/data/com.vitobellini.noipa/cache/MAG 2016.pdf
java.io.IOException: not create document. Error:
     at android.graphics.pdf.PdfRenderer.nativeCreate(Native Method)
     at android.graphics.pdf.PdfRenderer.<init>(PdfRenderer.java:149)
     at com.vitobellini.noipa.PdfRendererFragment.openRenderer(PdfRendererFragment.java:151) …
Run Code Online (Sandbox Code Playgroud)

android pdfrenderer

5
推荐指数
1
解决办法
1851
查看次数

Android PdfRenderer 抛出 SecurityException - 无法创建错误 4 的文档

我正在尝试使用 PdfRenderer android api 呈现一些页面。我的一些用户开始看到此错误:

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1337, result=-1, data=Intent { dat=file:///storage/emulated/0/Download/Jul-Aug-2016statement.pdf }} to activity {converter.dassem.com.fileconverter/converter.dassem.com.fileconverter.MainActivity}: java.lang.SecurityException: cannot create document. Error: 4
    at android.app.ActivityThread.deliverResults(ActivityThread.java:3949)
    at android.app.ActivityThread.handleSendResult(ActivityThread.java:3992)
    at android.app.ActivityThread.-wrap16(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1543)
    at android.os.Handler.dispatchMessage(Handler.java:111)
    at android.os.Looper.loop(Looper.java:207)
    at android.app.ActivityThread.main(ActivityThread.java:5776)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)
Caused by: java.lang.SecurityException: cannot create document. Error: 4
    at android.graphics.pdf.PdfRenderer.nativeCreate(Native Method)
    at android.graphics.pdf.PdfRenderer.<init>(PdfRenderer.java:153)
Run Code Online (Sandbox Code Playgroud)

文档中没有关于错误 4 的任何内容,尽管它确实说如果使用密码加密 pdf,则会引发安全异常。从 uri 创建 PdfRenderer 时发生错误。

那么有人知道错误 4 的确切含义吗?

谢谢

android pdfrenderer runtimeexception android-securityexception

5
推荐指数
0
解决办法
568
查看次数

Android PdfRenderer 抛出 IOException

我的应用程序列出了 PDF 文件,当用户选择一个 PDF 时,应用程序会打开它。如果用户选择损坏的 PDF 文件,PdfRenderer 将抛出IOException(这很好,因为我捕获了该异常并通知用户该文件已损坏)。

但问题是,在发生这种情况后,IOException用户尝试打开的所有 PDF 文件都会被抛出(即使对于未损坏的文件)

相关代码

File file = new File(filePath);
mFileDescriptor = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY);
if (mFileDescriptor != null) {
     mPdfRenderer = new PdfRenderer(mFileDescriptor);
}
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪

openRenderer: java.io.IOException: file not in PDF format or corrupted
    at android.graphics.pdf.PdfRenderer.nativeCreate(Native Method)
    at android.graphics.pdf.PdfRenderer.<init>(PdfRenderer.java:166)
    at ****.****.****.PdfUtil.openRenderer(PdfUtil.java:63)
    at ****.****.****.PdfUtil.getMaxPages(PdfUtil.java:46)
    at ****.****.****.PdfViewActivity.init(PdfViewActivity.java:166)
    at ****.****.****.ui.PdfViewActivity.onCreate(PdfViewActivity.java:58)
    at android.app.Activity.performCreate(Activity.java:7023)
    at android.app.Activity.performCreate(Activity.java:7014)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1215)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2745)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2870)
    at android.app.ActivityThread.-wrap11(Unknown Source:0)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1601)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:172)
    at android.app.ActivityThread.main(ActivityThread.java:6590) …
Run Code Online (Sandbox Code Playgroud)

pdf android ioexception pdfrenderer pdf-rendering

5
推荐指数
0
解决办法
760
查看次数

ImageView 不显示来自 Android API 29 上 PDFRenderer 创建的位图的图像

我有一个要在 ImageView 中显示的 PDF。它在 API 24-28 上显示,但在 API 29 上没有显示图像。我认为问题可能是 PDFRenderer 创建的位图。

我在该.render方法之后放置了一个断点,并(在调试器中)在此处单击“查看位图”: 点击“查看位图

在 API 29 上,有时会得到图像,有时会出现以下错误:

评估表达式时出错,已收集对象

位图预览

在 API 24-28 上,我没有收到此错误。我总是得到图像。

下面是示例代码:

        File file = new File(getExternalFilesDir(null), "fileName.pdf");
        PdfRenderer renderer = new PdfRenderer(ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY));
        if (currentPage < 0) {
            currentPage = 0;
        } else if (currentPage > renderer.getPageCount()) {
            currentPage = renderer.getPageCount() - 1;
        }
        Bitmap bitmap = Bitmap.createBitmap(800, 1000, Bitmap.Config.ARGB_8888);
        Rect rect = new Rect(0, 0, 800, 1000);
        PdfRenderer.Page page = renderer.openPage(currentPage);
        page.render(bitmap, rect, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY); …
Run Code Online (Sandbox Code Playgroud)

android bitmap imageview pdfrenderer

5
推荐指数
1
解决办法
220
查看次数

android转换后的图像中的Pdf渲染器是透明背景

我是Android开发的新手.我正在努力将Pdf转换为Image并将其存储在一个位置.我已经使用PdfRenderer(API级别21)将PDF转换为位图Image.转换后的图像是透明背景.请指导我转换图像与白色背景.这样我就可以将它转换为二进制数字.

PdfRenderer renderer = new PdfRenderer(ParcelFileDescriptor.open(pdfFile, ParcelFileDescriptor.MODE_READ_ONLY));

        Bitmap bitmap;
        final int pageCount = renderer.getPageCount();
        System.out.println("pageCount"+pageCount);
        for (int i = 0; i < pageCount; i++) {
            PdfRenderer.Page page = renderer.openPage(i);

            int width = getResources().getDisplayMetrics().densityDpi / 72 * page.getWidth();
            int height = getResources().getDisplayMetrics().densityDpi / 72 * page.getHeight();
            bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
page.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_PRINT);
            storeImage(bitmap,"test.bmp");//I have wrote a function here to save the image
Run Code Online (Sandbox Code Playgroud)

这是转换后得到的透明图像

提前致谢.

android image pdfrenderer

2
推荐指数
2
解决办法
1097
查看次数

如何下载JDK 1.8.0_191

我正在尝试使用PDFRendererfrom PDFBox并且效果很好,但是它给了我一个警告:

Aug 31, 2019 11:46:48 PM org.apache.pdfbox.rendering.PDFRenderer suggestKCMS
INFO: Your current java version is: 1.8.0_171
Aug 31, 2019 11:46:48 PM org.apache.pdfbox.rendering.PDFRenderer suggestKCMS
INFO: To get higher rendering speed on old java 1.8 or 9 versions,
Aug 31, 2019 11:46:48 PM org.apache.pdfbox.rendering.PDFRenderer suggestKCMS
INFO:   update to the latest 1.8 or 9 version (>= 1.8.0_191 or >= 9.0.4),
Aug 31, 2019 11:46:48 PM org.apache.pdfbox.rendering.PDFRenderer suggestKCMS
INFO:   or
Aug 31, 2019 11:46:48 PM org.apache.pdfbox.rendering.PDFRenderer suggestKCMS
INFO:   use the option …
Run Code Online (Sandbox Code Playgroud)

java pdfbox pdfrenderer java-8

0
推荐指数
1
解决办法
1408
查看次数