mirror of
https://github.com/YACReader/yacreader
synced 2025-06-04 01:28:55 -04:00
Fixed unicode paths handling when pdfium is used by using FPDF_LoadCustomDocument and QFile for handling the file access.
This commit is contained in:
parent
250dfe24e0
commit
515a45f8b7
@ -1,6 +1,27 @@
|
|||||||
#include "comic.h"
|
#include "comic.h"
|
||||||
#include "pdf_comic.h"
|
#include "pdf_comic.h"
|
||||||
|
|
||||||
#if defined USE_PDFIUM && !defined NO_PDF
|
#if defined USE_PDFIUM && !defined NO_PDF
|
||||||
|
|
||||||
|
int pdfRead(void* param,
|
||||||
|
unsigned long position,
|
||||||
|
unsigned char* pBuf,
|
||||||
|
unsigned long size) {
|
||||||
|
|
||||||
|
QFile *file = static_cast<QFile *>(param);
|
||||||
|
|
||||||
|
file->seek(position);
|
||||||
|
|
||||||
|
qint64 numBytesRead = file->read(reinterpret_cast<char *>(pBuf), size);
|
||||||
|
|
||||||
|
if(numBytesRead > 0)
|
||||||
|
{
|
||||||
|
return numBytesRead;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
PdfiumComic::PdfiumComic()
|
PdfiumComic::PdfiumComic()
|
||||||
{
|
{
|
||||||
FPDF_InitLibrary();
|
FPDF_InitLibrary();
|
||||||
@ -17,7 +38,19 @@ PdfiumComic::~PdfiumComic()
|
|||||||
|
|
||||||
bool PdfiumComic::openComic(const QString & path)
|
bool PdfiumComic::openComic(const QString & path)
|
||||||
{
|
{
|
||||||
doc = FPDF_LoadDocument(path.toLocal8Bit().constData(), NULL);
|
pdfFile.setFileName(path);
|
||||||
|
|
||||||
|
if(pdfFile.open(QIODevice::ReadOnly) == false)
|
||||||
|
{
|
||||||
|
qDebug() << "unable to open file : " << path;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
fileAccess.m_FileLen = pdfFile.size();
|
||||||
|
fileAccess.m_GetBlock = pdfRead;
|
||||||
|
fileAccess.m_Param = &pdfFile;
|
||||||
|
|
||||||
|
doc = FPDF_LoadCustomDocument(&fileAccess, NULL);
|
||||||
if (doc)
|
if (doc)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QImage>
|
#include <QImage>
|
||||||
|
#include <QFile>
|
||||||
|
|
||||||
#if defined Q_OS_MAC && defined USE_PDFKIT
|
#if defined Q_OS_MAC && defined USE_PDFKIT
|
||||||
class MacOSXPDFComic
|
class MacOSXPDFComic
|
||||||
@ -37,6 +38,8 @@ class PdfiumComic
|
|||||||
private:
|
private:
|
||||||
FPDF_LIBRARY_CONFIG config;
|
FPDF_LIBRARY_CONFIG config;
|
||||||
FPDF_DOCUMENT doc;
|
FPDF_DOCUMENT doc;
|
||||||
|
FPDF_FILEACCESS fileAccess;
|
||||||
|
QFile pdfFile;
|
||||||
};
|
};
|
||||||
#else
|
#else
|
||||||
#include "poppler-qt5.h"
|
#include "poppler-qt5.h"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user