dimuthuupe / androidpdfviewer Goto Github PK
View Code? Open in Web Editor NEWAndroid view for displaying PDFs rendered with PdfiumAndroid
License: Apache License 2.0
Android view for displaying PDFs rendered with PdfiumAndroid
License: Apache License 2.0
I need to get the PDF metadata, such as Title, author, etc. I didn't see a way to get it with this library, but just want to ask in case I missed it.
Thanks!
-Rick
Hi, recently i got this error
com.shockwave.pdfium.PdfOpenException: Open document failed
at com.shockwave.pdfium.PdfiumCore.newDocument(PdfiumCore.java:72)
at com.github.barteksc.pdfviewer.DecodingAsyncTask.doInBackground(DecodingAsyncTask.java:61)
at com.github.barteksc.pdfviewer.DecodingAsyncTask.doInBackground(DecodingAsyncTask.java:32)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)
Do you have any idea why? How could i fix this? Thanks
I have a few pdfs displayed in a view pager. When I zoom one and try to drag to the left/right, the pdf does not pan, but the view pager immediately takes hold of the scrolling and switches to the next page.
If I first drag up/down and then (without lifting my finger) drag left/right, it seems to work as expected.
Any ideas, how I can pass the touch events first to the PDFView and then to the view pager?
Is there any way to get Bitmap
from every page of PDF file? I need to render pdf and also get Bitmaps to do some extra operations with them (e.g. save).
There is onLayerDrawn
event, but it call not only once, but every time pdf is scrolled.
I know, that storing many Bitmaps in memory is not good idea, but it is important feature and will work for files with a few pages.
I got a Fatal error with the attached pdf, do you know why?
Is there a way to make the scroll bar horizontal instead of vertical?
Hi,
it would be helpful, if a PDFView has implemented the
public boolean canScrollHorizontally(int direction){}
method.
so it would be easy to use this views in viewpager.
Hi,
I want to use this awesome library unable to find a method for adding bookmark.
Can you please help me?
Thanks
Shubham
Hi,
As docs, the following callback is called when user uses swipe to change page:
void onPageChanged(int page, int pageCount);
But in some common gestures (such as single tap), actually the page is not changed but onPageChanged is still invoked.
I hope your lib can support some common gestures such as onSingleTapConfirmed, onSingleTapUp...With these events, we can exit/enter full screen while reading pdf file.
Best Regards.
Hi
I use pdfview and load a pdf file from assent folder.
It was working very good. I approve my app and now I don’t see my pdf file.
Pdfview load it, (I can change its pages and log it) but show only blank page (white screen).
Please help me.
thanks a lot.
I'm getting following error and app become crushed while swipe 30-35 page of any pdf file:
AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.pdf, PID: 11626
java.lang.ArithmeticException: divide by zero
at
Is it possible to make AndroidPdfViewer read a DocumentFile?
Right now, there are fromFile()
and fromAsset()
but I was thinking it would be great if we have something like fromDocumentFile()
.
public Configurator fromDocumentFile(Context context, DocumentFile document_file) {
if (!document_file.exists()) {
throw new FileNotFoundException(document_file.getUri().getPath().toString() + " does not exist.");
}
return new Configurator(context, document_file);
}
What I want to do is that I let a user pick up a PDF file using Android's Storage Access Framework
and display it on the screen using AndroidPdfViewer.
Right now, I can do this by copying DocumentFile to a temp File instance and pass it to fromFile(). However, I was thinking if I could avoid making a temporary file.
Help
How to add some gap between pages?
Hi @barteksc
I am planning to zoom in the pdf page on the point user double tapped. but as of now it is zooming from the center of the page.
How can I achieve my solutions. It's good to have such a library you provided but as per my requirement please suggest and want to achieve this.
Thanks
Vinod
FATAL EXCEPTION: AsyncTask #7
Process: com.dkhs.portfolio, PID: 11044
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:300)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)
Caused by: java.lang.NullPointerException
at com.github.barteksc.pdfviewer.RenderingAsyncTask.proceed(RenderingAsyncTask.java:103)
at com.github.barteksc.pdfviewer.RenderingAsyncTask.doInBackground(RenderingAsyncTask.java:67)
at com.github.barteksc.pdfviewer.RenderingAsyncTask.doInBackground(RenderingAsyncTask.java:31)
at android.os.AsyncTask$2.call(AsyncTask.java:288)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)
Hello,
I am getting "Fatal signal 11 (SIGSEGV) at 0x00000000 (code=128), thread 29948 (AsyncTask #3)" error while trying to load a 4MB pdf file. I don't encounter this error with smaller pdf files. Can you help me with this?
This is my code.
pdfView.fromAsset("brochure-eclassic.pdf")
.enableSwipe(true)
.enableDoubletap(true)
.swipeVertical(false)
.showMinimap(false)
.onError(new OnErrorListener() {
@Override
public void onError(Throwable t) {
Log.e("pdf", "error", t);
}
})
.load();
Thank you
I have done as below:
When I am trying to render the pdf file, below crash is not allowing to render
06-25 12:04:46.229 20365-20365/? I/applock: launch broadcast taken: com.joanzapata.pdfview.sample
06-25 12:04:46.291 19545-19545/? D/pdf file path:: /storage/emulated/0/pdf_files/page1.pdf
06-25 12:04:46.297 19545-19560/? D/PdfDroid: initializing PdfRender JNI library based on MuPDF
06-25 12:04:46.303 19545-19560/? I/PdfDroid: Corrupted file '/storage/emulated/0/pdf_files/page1.pdf', trying to repair
06-25 12:04:46.303 19545-19560/? D/PdfDroid: Exception 'java/lang/RuntimeException', Message: 'PDF file is corrupted'
06-25 12:04:46.303 19545-19560/? D/PdfDroid: PdfDocument.nativeOpen(): return handle = 0x74f5211050
I tried to render using other applications adobe etc... its good to go and render smoothly
Can you please provide or suggest me what is happening here?
Thanks
Hi,
Is there any way for getting thumbnails of pdf using this library. I want to show them in scrollview so that user can jump to a page by tapping on particular thumbnail.
Thanks
Shubham Vishnoi
Hello,
When I set the background of the PDFView to transparent it turn to black.
<com.github.barteksc.pdfviewer.PDFView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="@color/transparent"/>
where transparent is:
<color name="transparent">#00000000</color>
Occasionally, I get a NullPointerException when trying to show a PDF. I haven't really found a pattern yet - it doesn't seem related to the PDF, or if it is, the same PDF still works fine most of the time.
Version 1.1.1.
I suppose it's caused by an (internal) call to public void removeAllTasks(), which is not synchronized.
06-24 15:52:03.663 17306-17422/com.xxxx.android.beta D/jniPdfium: Draw Ver: 1536
06-24 15:52:03.663 17306-17422/com.xxxx.android.beta D/jniPdfium: Start X: 0
06-24 15:52:03.663 17306-17422/com.xxxx.android.beta D/jniPdfium: Start Y: -256
06-24 15:52:03.663 17306-17422/com.xxxx.android.beta D/jniPdfium: Canvas Hor: 256
06-24 15:52:03.663 17306-17422/com.xxxx.android.beta D/jniPdfium: Canvas Ver: 256
06-24 15:52:03.663 17306-17422/com.xxxx.android.beta D/jniPdfium: Draw Hor: 1280
06-24 15:52:03.663 17306-17422/com.xxxx.android.beta D/jniPdfium: Draw Ver: 1536
06-24 15:52:03.673 17306-17422/com.xxxx.android.beta E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #2
Process: com.xxxx.android.beta, PID: 17306
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:300)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.NullPointerException: Attempt to read from field 'float com.github.barteksc.pdfviewer.RenderingAsyncTask$RenderingTask.width' on a null object reference
at com.github.barteksc.pdfviewer.RenderingAsyncTask.proceed(RenderingAsyncTask.java:103)
at com.github.barteksc.pdfviewer.RenderingAsyncTask.doInBackground(RenderingAsyncTask.java:67)
at com.github.barteksc.pdfviewer.RenderingAsyncTask.doInBackground(RenderingAsyncTask.java:31)
at android.os.AsyncTask$2.call(AsyncTask.java:288)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
i hope to change rendering pdf file. example, i want to make 5 pages of file that is recognized 4 pages.
ex) 1 2 3 4 pdf file -> 4 1 2 3 4 pdf file
pages() method is likely my wish. but that's animation is incorrect that my wants.
First, thank you very much for your work, I think a lot of people are waiting for a library like yours.
I was wondering if it could be possible to improve the render when loading the tiles? I have noticed that the library displays bad quality of the tiles when "re-calculating" the render for the given zoom (I suppose!). You'll find a screenshot in attachment.
Thank you,
Am trying a populate a pdf which is stored in internal storage is throwing FileNotFoundException.
File file1 = new File(Environment.getExternalStorageDirectory()+"/pdf/Read.pdf");
pdfView.fromFile(file1)
.defaultPage(1)
.onPageChange(this)
.swipeVertical(true)
.showMinimap(false)
.load();
But when I manually check the directory, I could see that file exist. Or some times its giving me com.shockwave.pdfium.PdfOpenException: Open document failed in my log
Im looking forward a way to implement a scrolling navigation which will contain thumbs of all pages. Can I incorporate thumbs with scroller or can I get a list of thumbs of all pages?
Hi, a simple question, I would like to set my scroll indicator on the bottom of the PDF view. How do I flip the scrollBar indicator so that the user has to scoot from left to right instead of vertically from upper side to bottom?
Thanks
Is there any way to set initial zoom of an open document so that width matches its container (the PDFView) ?
In other words... when rotating to landscape, I would like the document to have the width matching the container, no worries for the height.
Thank you!
Can add it to Sample?
It would be great if we can turn pages when the view is being zoomed.
I checked DragPinchManager.java and realized that onDrag() and endDrag() methods ignore events when isZooming() returns true.
Is it possible to handle these events?
What changes should be made on PDFView.java for that?
Hello,
I need to put the PDFView in a ScrollView, how should I do it?
So far, either the PDFView is not showing or the scroll is not working.
Thank you
Hi, sometimes i got this error:
A/libc: Fatal signal 11 (SIGSEGV) at 0xffffffff (code=1), thread 16929 (AsyncTask #5)
This happened after i open -> exit -> reopen -> exit -> reopen... the activity.
This caused the activity to exit.
Hello!
Is there any opportunity to show two pages at once with swapping between two-page turns, like a magazine or book?
Hello, it seems that the library is locking me into using default animations thru .swipeVertical(false)
upon rendering a PDF.
Is there a way to disable this slide animation all in all? We just want our PDF to show up, and not slide from right to left (or bottom to top). The readme implies that the only possible configurations are here.
Hi
@barteksc Can you please help me on below (PFB)
E/com.shockwave.pdfium.PdfiumCore: mContext may be null
Thanks
Hi
I try to use the jump to function, but it does not seem to work.
Could someone help me?
Thank you
I don't know if this is a NativeScript issue or an AndroidPdfViewer issue, but since the app only crashes when I try to create an instance of PDFView
, I'm asking the question here first.
I'm building a NativeScript plugin, in which I need to manually create an instance of PDFView
by calling its constructor. However, the plugin seems to crash, and I have no stack trace to follow. With NativeScript
I have a TypeScript/JavaScript bridge to the native Android package, which allows me to instantiate the view this way inside _createUI
:
import * as view from 'ui/core/view';
import AndroidPdfView = com.github.barteksc.pdfviewer.PDFView;
export class PDFView extends view.View {
_android: AndroidPdfView;
_createUI() {
log(1);
this._android = new AndroidPdfView(this._context);
log(2); // never reaches this
}
}
In terms of logs, this is all I got:
I/DEBUG ( 84): #34 pc 002597db /data/app/com.merott.NativeScriptPDFViewDemo-1/lib/x86/libNativeScript.so (tns::CallbackHandlers::CallJSMethod(v8::Isolate*, _JNIEnv*, v8::Local<v8::Object> const&, std::string const&, _jobjectArray*)+635)
I/DEBUG ( 84): #35 pc 002abd26 /data/app/com.merott.NativeScriptPDFViewDemo-1/lib/x86/libNativeScript.so (tns::Runtime::CallJSMethodNative(_JNIEnv*, _jobject*, int, _jstring*, int, unsigned char, _jobjectArray*)+406)
I/DEBUG ( 84): #36 pc 002b6b8e /data/app/com.merott.NativeScriptPDFViewDemo-1/lib/x86/libNativeScript.so (Java_com_tns_Runtime_callJSMethodNative+222)
If instantiate a new SurfaceView
instead of AndroidPdfView
, the plugin doesn't crash. I realise that doesn't necessarily mean this is an issue with AndroidPdfViewer
but I'm asking for help here first.
Hi there
Great library for viewing a PDF file.
Just a request for new feature, can you add Fill a PDF form feature?
I think no open source library has that feature available.
Thanks
Good day!
Getting Fatal signal 11 at opening 70 mb size pdf.
Error - A/libc: Fatal signal 11 (SIGSEGV), code 128, fault addr 0x0 in tid 7413 (AsyncTask #4)
or
Error - A/libc: Fatal signal 11 (SIGSEGV), code 128, fault addr 0x0 in tid 7021 (AsyncTask #2)
Stacktrace:
`pid: 32022, tid: 32308, name: AsyncTask #4 >>> package.name <<<
signal 11 (SIGSEGV), code 128 (SI_KERNEL), fault addr 0x0
eax 00000000 ebx d4e9c20c ecx 00000000 edx cde485b8
esi 00000000 edi 00000001
xcs 00000023 xds 0000002b xes 0000002b xfs 000000ff xss 0000002b
eip d4c125a0 ebp d44f8df8 esp d44f8dbc flags 00210246
backtrace:
#00 pc 002af5a0 /data/app/package.name-1/lib/x86/libmodpdfium.so
#1 pc 002b2990 /data/app/package.name-1/lib/x86/libmodpdfium.so (opj_dwt_decode_real+1456)
#2 pc 002029ee /data/app/package.name-1/lib/x86/libmodpdfium.so (opj_tcd_decode_tile+414)
#3 pc 001f161b /data/app/package.name-1/lib/x86/libmodpdfium.so (opj_j2k_decode_tile+123)
#4 pc 001f1b67 /data/app/package.name-1/lib/x86/libmodpdfium.so
#5 pc 001e56b4 /data/app/package.name-1/lib/x86/libmodpdfium.so (opj_j2k_decode+180)
#6 pc 001f8360 /data/app/package.name-1/lib/x86/libmodpdfium.so (opj_jp2_decode+80)
#7 pc 001f529f /data/app/package.name-1/lib/x86/libmodpdfium.so (opj_decode+63)
#8 pc 00149a74 /data/app/package.name-1/lib/x86/libmodpdfium.so (CJPX_Decoder::Init(unsigned char const, int)+532)
#9 pc 00149bf9 /data/app/package.name-1/lib/x86/libmodpdfium.so (CCodec_JpxModule::CreateDecoder(unsigned char const, unsigned int, int)+73)
#10 pc 0011dd61 /data/app/package.name-1/lib/x86/libmodpdfium.so (CPDF_DIBSource::LoadJpxBitmap()+129)
#11 pc 0011e9f3 /data/app/package.name-1/lib/x86/libmodpdfium.so (CPDF_DIBSource::CreateDecoder()+579)
#12 pc 00120c87 /data/app/package.name-1/lib/x86/libmodpdfium.so (CPDF_DIBSource::StartLoadDIBSource(CPDF_Document, CPDF_Stream const, int, CPDF_Dictionary, CPDF_Dictionary, int, unsigned int, int)+487)
#13 pc 001172c9 /data/app/package.name-1/lib/x86/libmodpdfium.so (CPDF_ImageCache::StartGetCachedBitmap(CPDF_Dictionary, CPDF_Dictionary, int, unsigned int, int, CPDF_RenderStatus, int, int)+169)
#14 pc 001173b2 /data/app/package.name-1/lib/x86/libmodpdfium.so (CPDF_PageRenderCache::StartGetCachedBitmap(CPDF_Stream, int, unsigned int, int, CPDF_RenderStatus, int, int)+130)
#15 pc 00120ec9 /data/app/package.name-1/lib/x86/libmodpdfium.so (CPDF_ProgressiveImageLoaderHandle::Start(CPDF_ImageLoader, CPDF_ImageObject const, CPDF_PageRenderCache, int, unsigned int, int, CPDF_RenderStatus, int, int)+121)
#16 pc 00121032 /data/app/package.name-1/lib/x86/libmodpdfium.so (CPDF_ImageLoader::StartLoadImage(CPDF_ImageObject const, CPDF_PageRenderCache, void&, int, unsigned int, int, CPDF_RenderStatus, int, int)+130)
#17 pc 001184f3 /data/app/package.name-1/lib/x86/libmodpdfium.so (CPDF_ImageRenderer::StartLoadDIBSource()+179)
#18 pc 0011a3cd /data/app/package.name-1/lib/x86/libmodpdfium.so (CPDF_ImageRenderer::Start(CPDF_RenderStatus, CPDF_PageObject const, CFX_Matrix const, int, int)+173)
#19 pc 00115a10 /data/app/package.name-1/lib/x86/libmodpdfium.so (CPDF_RenderStatus::ContinueSingleObject(CPDF_PageObject const, CFX_Matrix const, IFX_Pause)+400)
#20 pc 00115bee /data/app/package.name-1/lib/x86/libmodpdfium.so (CPDF_ProgressiveRenderer::Continue(IFX_Pause)+414)
#21 pc 00115f51 /data/app/package.name-1/lib/x86/libmodpdfium.so (CPDF_ProgressiveRenderer::Start(CPDF_RenderContext, CFX_RenderDevice, CPDF_RenderOptions const, IFX_Pause, int)+129)
#22 pc 00082352 /data/app/package.name-1/lib/x86/libmodpdfium.so (FPDF_RenderPage_Retail(CRenderContext, void, int, int, int, int, int, int, int, IFSDK_PAUSE_Adapter*)+626)
#23 pc 00082d99 /data/app/package.name-1/lib/x86/libmodpdfium.so (FPDF_RenderPageBitmap+345)
#24 pc 0000654b /data/app/package.name-1/lib/x86/libjniPdfium.so (Java_com_shockwave_pdfium_PdfiumCore_nativeRenderPageBitmap+779)
#25 pc 002c9ded /data/dalvik-cache/x86/data@[email protected]@[email protected]`
Thanks for your help.
Best, Nick.
dear barteksc.
title say, i want to set just one landscape pdf page in portrait view.
but i don't fine method about that.
plz. tell me some advises or related methods.
Sincerely. :)
Password PDF are not asking, for password to enter.
07-08 15:21:57.020 13331-13331/com.jagdiv.android.gogleapplication E/PDFView: load pdf error
07-08 15:21:57.020 13331-13331/com.jagdiv.android.gogleapplication E/PDFView: java.io.IOException: cannot create document: Incorrect password.
07-08 15:21:57.020 13331-13331/com.jagdiv.android.gogleapplication E/PDFView: at com.shockwave.pdfium.PdfiumCore.nativeOpenDocument(Native Method)
07-08 15:21:57.020 13331-13331/com.jagdiv.android.gogleapplication E/PDFView: at com.shockwave.pdfium.PdfiumCore.newDocument(PdfiumCore.java:87)
07-08 15:21:57.020 13331-13331/com.jagdiv.android.gogleapplication E/PDFView: at com.github.barteksc.pdfviewer.DecodingAsyncTask.doInBackground(DecodingAsyncTask.java:59)
Hello,
I use this library and setMaxZoom, but when I test app, I can zoom to max zoom (10f).
Code:
int page = Integer.valueOf(path.replace("page_", "").replace(".pdf", ""));
switch (page) {
case 1: scaleSize = 1.5f; maxZoom = 2f; break;
case 2: scaleSize = 1.5f; maxZoom = 2.5f; break;
case 3: scaleSize = 3.5f; maxZoom = 4.5f; break;
case 4: scaleSize = 1f; maxZoom = 2f; break;
case 5: scaleSize = 1.7f; maxZoom = 2.5f; break;
case 6: scaleSize = 1.7f; maxZoom = 2.5f; break;
}
pdfView.fromAsset(path)
.showMinimap(false)
.onDraw(new OnDrawListener() {
@Override
public void onLayerDrawn(Canvas canvas, float pageWidth, float pageHeight, int displayedPage) {
x = pageWidth / 4;
}
})
.load();
pdfView.setSwipeVertical(true);
pdfView.useBestQuality(true);
pdfView.setMaxZoom(maxZoom);
pdfView.setMidZoom(maxZoom);
能否通过插件的形式集成 在需要的时候下载下来
I have a pdf file with mostly normal document pages but with a few large image-based pages. All the following pages seem to get stretched based on the width of the first page.
Is there a way to mix horizontal and vertical pages without either of them getting stretched?
how can i add flip animation like google play book? i try some library but i can't get animation like google play book. i put animation on onPageChange.
Is it possible to see issued certificate of PDF with this library?
Good day. Today found out few problems with showing ScrollbarIndicator on Android 4.2.2. It does not appears the first time when pdf opened, but returning back after rotation. Another thing that it can show 0 or number < 0 on first tap on indicator, and then it shows as expected. Does anyone has the same problem?
@barteksc - Awesome work.
I see pixelation on the top/middle of the page, while on certain devices.
For example:-
Galaxy S6 & S7 Edge - I can see pixelation at the top.
On other devices like HTC M8 it happens when I pinch/tap to zoom. Is there any way around this at the moment?
I want to select the text on which the user makes long click, but
pdfView.setOnLongClickListener(new View.OnLongClickListener() {
@OverRide
public boolean onLongClick(View v) {
//code
return true;
}
});
is not working, could you please tell me how to do this?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.