标签: pdfrenderer

Android的PdfRenderer类生成低质量图像

我正在使用PdfRenderer上面的api 21在我的应用程序中显示pdf,我注意到页面的质量非常差.我也跟着谷歌样本使用PdfRenderer,这就是我Bitmap为页面创建的方式:

//mCurrentPage is a PdfRenderer.Page and mImageView is an ImageView
Bitmap bitmap = Bitmap.createBitmap(mCurrentPage.getWidth(), 
                    mCurrentPage.getHeight(),
                    Bitmap.Config.ARGB_8888);
mCurrentPage.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
mImageView.setImageBitmap(bitmap);
Run Code Online (Sandbox Code Playgroud)

我用过,ARGB_8888因为据我所知,它是显示位图的最佳质量.难道我做错了什么?

编辑

这是PdfRenderer类和经典Pdf阅读器之间的巨大差异:

在此输入图像描述 在此输入图像描述

pdf android bitmap pdfrenderer

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

适用于Android的PDF库 - PDFBox?

存在用于在Android上绘制PDF文件的库吗?

我找到了PDFBox,这是一个JSE库,想知道它是否可以用来在Android上绘制PDF.

我知道Android将标准字节码转换为Dalvik Bytecodes,但它如何将类似BufferedImage的类转换为框架可以将PDF文件转换为?

即使对于付费图书馆,任何建议都是有帮助的.

pdf android renderer pdfbox pdfrenderer

14
推荐指数
2
解决办法
4万
查看次数

CGPDFDocument无法读取pdf

我按照以下示例在我的应用程序(Xamarin.iOS)中查看pdf.一切正常,直到最近我才开始注意到使用这种方法无法读取一些pdf文件.

我打开并获取了我的mac信息,我注意到以下内容:

  • 如果我使用Mac查看器将文档导出为pdf,它可以很好地读取,但尺寸会增加.
  • 如果我尝试按原样打开文件,则无法查看任何内容,只能查看白页.
  • 这仅适用于我的iOS应用,我的Android上的查看器工作得很好.

我可以使用Mac的查看器将每个文件导出为pdf,但这比我需要的更多.我该怎么做才能解决这个问题?

原始编码:Adobe Acrobat 10.1.16中的PDFScanLib v1.2.2

导出编码:Mac OS X 10.10.5 Quartz PDFContext


我对该程序运行了额外的测试,我可以得出结论问题是在pdf文件上使用了压缩.CGPDFDocument有没有办法删除或忽略压缩,所以我可以查看pdf?我将pdf上传到我分割页面的移动后端.我正在使用Pdfsharp来实现这一目标,如果可能的话有没有办法在保存到服务器之前清理文件?(此问题仅影响我的应用程序的iOS版本).


经过额外的测试后,我遇到了以下错误:这里 看起来使用的JBIG2压缩有一个已知的错误,当在pdf中读取jpg时会导致错误.(我将继续进一步测试,直到找到解决方案.)


更正:pdf压缩不是JBIG2,而是FlateDecode.在测试并读取二进制数据之后,我注意到原始数据和导出数据都具有相同类型的压缩.(当我尝试解决这个问题时,会更新更多信息.)

c# xamarin.ios pdfrenderer ios cgpdf

11
推荐指数
1
解决办法
460
查看次数

html-pdf npm库在windows和ubuntu上提供不同的输出

我正在使用https://www.npmjs.com/package/html-pdf库,该库基于Phantom JS,内部使用webkit.我正在粘贴虚拟HTML和JS代码(将这些文件保存在1个文件夹中)并附加输出屏幕截图.

我面临的问题是在Windows上生成的PDF顶部有一些额外的空间(红色以上的空白区域),我无法摆脱它.

这是一个讨论类似问题的论坛(过时),https://groups.google.com/forum/#!topic /phantomjs/YQIyxLWhmr0.

input.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
</head>

<body>
    <div id="pageHeader" style="border-style: solid;border-width: 2px;color:red;">
        header   <br/> header       <br/> header   <br/> header
    </div>
<div id="pageContent" style="border-style: solid;border-width: 2px;color:green;">
    <div>
        body    <br/> body    <br/> body
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

JS (你需要路径,fs,把手,html-pdf npm包)

var path = require('path');
var fs = require('fs');
var handlebars = require('handlebars');
var pdf = require('html-pdf');

saveHtml();

function saveHtml() {

fs.readFile('input.html', 'utf-8', {
    flag: …
Run Code Online (Sandbox Code Playgroud)

webkit node.js pdfrenderer pdf-rendering phantomjs

9
推荐指数
1
解决办法
3242
查看次数

CGContextDrawPDFPage内存泄漏 - 应用程序崩溃

当我用Instruments分析我的应用程序时,我发现分配的数据CGContextDrawPDFPage不会立即释放.应用程序因为崩溃而崩溃CGContextDrawPDFPage.

在此输入图像描述

在此输入图像描述

你好,这是我在CATiledlayer中绘制pdf的代码

      - (void)drawLayer:(CATiledLayer *)layer inContext:(CGContextRef)context
    {
    if (_PDFPageRef == nil) {
        return;
    }
    CGPDFPageRef drawPDFPageRef = NULL;
    CGPDFDocumentRef drawPDFDocRef = NULL;

    @synchronized(self) // Briefly block main thread
    {
        drawPDFDocRef = CGPDFDocumentRetain(_PDFDocRef);
        if( _PDFPageRef != (__bridge CGPDFPageRef)([NSNull null]) )
            drawPDFPageRef = CGPDFPageRetain(_PDFPageRef);
        else
            return;
    }

    //CGContextSetRGBFillColor(context, 0.0f, 0.0f, 0.0f, 0.0f);
    //CGContextFillRect(context, CGContextGetClipBoundingBox(context));

    if (drawPDFPageRef != NULL) // Render the page into the context
    {
        CGFloat boundsHeight = viewBounds.size.height;

        if (CGPDFPageGetRotationAngle(drawPDFPageRef) == 0)
        {
            CGFloat boundsWidth = …
Run Code Online (Sandbox Code Playgroud)

iphone xcode pdfrenderer ios pdf-rendering

9
推荐指数
1
解决办法
853
查看次数

ITextRenderer:将页面高度调整为内容

我正在使用ITextRenderer从HTML生成PDF,我需要做的是收银机收据.此收据具有动态宽度,当然还有动态内容.这就是说,内容的高度总是不同的,现在我正在努力寻找一种方法来调整PDF页面的高度到内容.如果它太大,收据最后会有一个很长的白色部分,如果要缩短PDF的分页,我需要它只在一个页面中.

我正在使用@page {size: Wpx Hpx;}设置页面大小,但根据宽度和数据计算内容高度几乎是不可能的(非常痛苦).

这是生成PDF的代码:

ITextRenderer renderer = new ITextRenderer();

byte[] bytes = htmlDocumentString.toString().getBytes("UTF-8");
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
InputSource is = new InputSource(bais);
Document doc = builder.parse(is);

renderer.setDocument(doc, null);

renderer.layout();
renderer.createPDF(outputStream);
outputStream.flush();
outputStream.close();
Run Code Online (Sandbox Code Playgroud)

我也试过了renderer.getSharedContext().setPrint(false);,但这会引发NPE.

@page {-fs-page-sequence: "none";}没有任何运气.

--------------"解决方案"----------------

我找到的解决方案甚至不是很接近完美,但有效!

ITextRenderer renderer = new ITextRenderer();

byte[] bytes = htmlDocumentString.toString().getBytes("UTF-8");
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
InputSource is = new InputSource(bais);
Document doc = builder.parse(is);

renderer.setDocument(doc, null); …
Run Code Online (Sandbox Code Playgroud)

css java pdf flying-saucer pdfrenderer

8
推荐指数
1
解决办法
3449
查看次数

是否有计划在支持库中包含Android PdfRenderer?

在Android 5.0中,Google推出了PdfRenderer类,非常适合渲染PDF.问题是它仅适用于minSDK 21. https://developer.android.com/reference/android/graphics/pdf/PdfRenderer.html

如何确定是否有计划将此类包含在支持库中?

compatibility android pdfrenderer

7
推荐指数
1
解决办法
2136
查看次数

使用新的"PdfRenderer"类在android中打开密码保护的PDF文档和渲染?

在Android 5.0中,Google推出了用于呈现PDF的PdfRenderer类.我尝试使用它渲染pdf并且它有效.但是,当谈到受密码保护的PDF时,我找到了打开它的方法.

有没有人这样做或有任何想法如何解决这个问题.请建议.

pdf android pdfrenderer

7
推荐指数
0
解决办法
447
查看次数

如何实现PdfRenderer Zoom和Scroll支持?

我正在尝试使用PdfRenderer,并且要求使用Zoom和scroll可用,但在Android PdfRenderer中不提供任何缩放和滚动支持,只有页面导航支持可用.

但我猜缩放和滚动支持可以实现,因为PdfRenderer使用位图来使用imageview显示内容.

如何使用Google PdfRenderer示例实现缩放和滚动支持?

PS:我正在使用Google提供的这个PdfRenderer示例,https://github.com/googlesamples/android-PdfRendererBasic

java android pdfrenderer

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

Java PDF Viewer

我正在使用java和RCP,我试图在我的视图上显示带有Acrobat的pdf文档.我不需要改变它们.我有这个代码的错误.知道如何解决这个问题吗?Ps:它同时运作良好.

PDFFile pdfFile;
pdfFile = PdfFileLoader.loadPdf(file, new NullProgressMonitor());
PdfDocument pdfDocument = new OneDimensionalPdfDocument(pdfFile, new NullProgressMonitor());
pdfViewer.setPdfDocument(pdfDocument);

Error from PdfDocument pdfDocument = new OneDimensionalPdfDocument(pdfFile, new NullProgressMonitor()) : Unsupport CMap format: 6
java.nio.BufferUnderflowException
at java.nio.Buffer.nextGetIndex(Unknown Source)
at java.nio.HeapByteBuffer.getShort(Unknown Source)
at com.sun.pdfview.font.ttf.HmtxTable.setData(HmtxTable.java:79)
at com.sun.pdfview.font.ttf.TrueTypeTable.createTable(TrueTypeTable.java:113)
at com.sun.pdfview.font.ttf.TrueTypeFont.getTable(TrueTypeFont.java:106)
at com.sun.pdfview.font.TTFFont.getOutline(TTFFont.java:129)
at com.sun.pdfview.font.TTFFont.getOutline(TTFFont.java:89)
at com.sun.pdfview.font.OutlineFont.getGlyph(OutlineFont.java:118)
at com.sun.pdfview.font.PDFFont.getCachedGlyph(PDFFont.java:307)
at com.sun.pdfview.font.PDFFontEncoding.getGlyphFromEncoding(PDFFontEncoding.java:132)
at com.sun.pdfview.font.PDFFontEncoding.getGlyphs(PDFFontEncoding.java:98)
at com.sun.pdfview.font.PDFFont.getGlyphs(PDFFont.java:273)
at com.sun.pdfview.PDFTextFormat.doText(PDFTextFormat.java:283)
at com.sun.pdfview.PDFParser.iterate(PDFParser.java:742)
at com.sun.pdfview.BaseWatchable.run(BaseWatchable.java:88)
at java.lang.Thread.run(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

此致,Haythem

java pdf rcp pdfrenderer

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