fix another project without Mode

This commit is contained in:
Kulikova Svetlana
2022-11-21 16:18:26 +03:00
parent d36b6038a2
commit edd5d6aead
9 changed files with 76 additions and 106 deletions

View File

@ -34,21 +34,23 @@
#include "OnlineOfficeBinToPdf.h"
#include "PdfReader.h"
#include "SrcReader/Adaptors.h"
#include "../DesktopEditor/common/File.h"
#include "../DesktopEditor/common/Path.h"
#include "../DesktopEditor/common/StringExt.h"
#include "SrcReader/Adaptors.h"
#include "lib/xpdf/PDFDoc.h"
#include "lib/xpdf/AcroForm.h"
#include "lib/xpdf/TextString.h"
#ifndef BUILDING_WASM_MODULE
#include "SrcWriter/Objects.h"
#include "SrcWriter/Document.h"
#include "SrcWriter/Pages.h"
#include "SrcWriter/Catalog.h"
#include "SrcWriter/EncryptDictionary.h"
#include "SrcWriter/Info.h"
#endif
#define AddToObject(oVal)\
{\
@ -161,6 +163,7 @@ class CPdfFile_Private
public:
std::wstring wsSrcFile;
std::wstring wsPassword;
std::wstring wsTempFolder;
NSFonts::IApplicationFonts* pAppFonts;
CPdfReader* pReader;
@ -239,27 +242,13 @@ public:
// ------------------------------------------------------------------------
CPdfFile::CPdfFile(NSFonts::IApplicationFonts* pAppFonts, bool isPDFA)
CPdfFile::CPdfFile(NSFonts::IApplicationFonts* pAppFonts)
{
m_pInternal = new CPdfFile_Private();
m_pInternal->pAppFonts = pAppFonts;
m_pInternal->pWriter = new CPdfWriter(m_pInternal->pAppFonts, isPDFA);
m_pInternal->pReader = new CPdfReader(m_pInternal->pAppFonts);
m_pInternal->wsPassword = L"";
m_pInternal->bEdit = false;
m_pInternal->bEditPage = false;
}
// nMode = 1/2/3, 01 - reader, 10 - writer, 11 - editer
CPdfFile::CPdfFile(NSFonts::IApplicationFonts* pAppFonts, int nMode, bool isPDFA)
{
m_pInternal = new CPdfFile_Private();
m_pInternal->pAppFonts = pAppFonts;
if (nMode & 1)
m_pInternal->pReader = new CPdfReader(m_pInternal->pAppFonts);
if (nMode & 2)
m_pInternal->pWriter = new CPdfWriter(m_pInternal->pAppFonts, isPDFA);
m_pInternal->pWriter = NULL;
m_pInternal->pReader = NULL;
m_pInternal->wsPassword = L"";
m_pInternal->bEdit = false;
m_pInternal->bEditPage = false;
@ -269,13 +258,6 @@ CPdfFile::~CPdfFile()
RELEASEOBJECT(m_pInternal->pWriter);
RELEASEOBJECT(m_pInternal->pReader);
}
void CPdfFile::SetTemp(const std::wstring& wsPath)
{
if (m_pInternal->pWriter)
m_pInternal->pWriter->SetTempFolder (wsPath);
if (m_pInternal->pReader)
m_pInternal->pReader->SetTempDirectory(wsPath);
}
NSFonts::IFontManager* CPdfFile::GetFontManager()
{
if (!m_pInternal->pReader)
@ -455,24 +437,30 @@ bool CPdfFile::EditPdf(const std::wstring& wsDstFile)
pagesRefObj.free();
return bRes;
}
bool CPdfFile::EditClose()
void CPdfFile::Close()
{
if (!m_pInternal->bEdit)
{
if (m_pInternal->pReader)
m_pInternal->pReader->Close();
return;
}
if (!m_pInternal->pWriter || !m_pInternal->pReader)
return false;
return;
PDFDoc* pPDFDocument = m_pInternal->pReader->GetPDFDocument();
PdfWriter::CDocument* pDoc = m_pInternal->pWriter->m_pDocument;
if (!pPDFDocument || !pDoc || !m_pInternal->bEdit)
return false;
if (!pPDFDocument || !pDoc)
return;
XRef* xref = pPDFDocument->getXRef();
if (!xref)
return false;
return;
// Добавляем первый элемент в таблицу xref
// он должен иметь вид 0000000000 65535 f
PdfWriter::CXref* pXref = new PdfWriter::CXref(pDoc, 0, 65535);
if (!pXref)
return false;
return;
PdfWriter::CDictObject* pTrailer = NULL;
Object* trailerDict = xref->getTrailerDict();
@ -500,12 +488,12 @@ bool CPdfFile::EditClose()
PdfWriter::CObjectBase* pInfo = pTrailer->Get("Info");
pInfoXref = new PdfWriter::CXref(pDoc, pInfo ? pInfo->GetObjId() : 0);
if (!pInfoXref)
return false;
return;
pInfoDict = new PdfWriter::CInfoDict(pInfoXref);
if (!pInfoDict)
{
RELEASEOBJECT(pInfoXref);
return false;
return;
}
for (int nIndex = 0; nIndex < info.dictGetLength(); ++nIndex)
@ -526,10 +514,10 @@ bool CPdfFile::EditClose()
bool bRes = m_pInternal->pWriter->EditClose();
if (!bRes)
return false;
return;
bRes = pDoc->AddToFile(pXref, pTrailer, pInfoXref, pInfoDict);
if (!bRes)
return false;
return;
std::wstring wsPath = pDoc->GetEditPdfPath();
std::string sPathUtf8New = U_TO_UTF8(wsPath);
@ -552,7 +540,6 @@ bool CPdfFile::EditClose()
m_pInternal->bEdit = false;
m_pInternal->bEditPage = false;
return bRes;
}
bool CPdfFile::EditPage(int nPageIndex)
{
@ -669,26 +656,26 @@ int CPdfFile::GetError()
bool CPdfFile::LoadFromFile(const std::wstring& file, const std::wstring& options, const std::wstring& owner_password, const std::wstring& user_password)
{
m_pInternal->pReader = new CPdfReader(m_pInternal->pAppFonts);
if (!m_pInternal->pReader)
return false;
m_pInternal->wsSrcFile = file;
m_pInternal->wsPassword = owner_password;
if (!m_pInternal->wsTempFolder.empty())
m_pInternal->pReader->SetTempDirectory(m_pInternal->wsTempFolder);
return m_pInternal->pReader->LoadFromFile(m_pInternal->pAppFonts, file, owner_password, user_password) && (m_pInternal->pReader->GetError() == 0);
}
bool CPdfFile::LoadFromMemory(BYTE* data, DWORD length, const std::wstring& options, const std::wstring& owner_password, const std::wstring& user_password)
{
m_pInternal->pReader = new CPdfReader(m_pInternal->pAppFonts);
if (!m_pInternal->pReader)
return false;
m_pInternal->wsSrcFile = L"";
m_pInternal->wsPassword = owner_password;
if (!m_pInternal->wsTempFolder.empty())
m_pInternal->pReader->SetTempDirectory(m_pInternal->wsTempFolder);
return m_pInternal->pReader->LoadFromMemory(m_pInternal->pAppFonts, data, length, owner_password, user_password) && (m_pInternal->pReader->GetError() == 0);
}
void CPdfFile::Close()
{
if (!m_pInternal->pReader)
return;
m_pInternal->pReader->Close();
}
NSFonts::IApplicationFonts* CPdfFile::GetFonts()
{
return m_pInternal->pAppFonts;
@ -703,11 +690,13 @@ std::wstring CPdfFile::GetTempDirectory()
return std::wstring();
return m_pInternal->pReader->GetTempDirectory();
}
void CPdfFile::SetTempDirectory(const std::wstring& directory)
void CPdfFile::SetTempDirectory(const std::wstring& wsPath)
{
if (!m_pInternal->pReader)
return;
m_pInternal->pReader->SetTempDirectory(directory);
m_pInternal->wsTempFolder = wsPath;
if (m_pInternal->pReader)
m_pInternal->pReader->SetTempDirectory(wsPath);
if (m_pInternal->pWriter)
m_pInternal->pWriter->SetTempFolder(wsPath);
}
int CPdfFile::GetPagesCount()
{
@ -749,6 +738,12 @@ BYTE* CPdfFile::GetLinks(int nPageIndex)
// ------------------------------------------------------------------------
void CPdfFile::CreatePdf(bool isPDFA)
{
m_pInternal->pWriter = new CPdfWriter(m_pInternal->pAppFonts, isPDFA);
if (!m_pInternal->wsTempFolder.empty())
m_pInternal->pWriter->SetTempFolder(m_pInternal->wsTempFolder);
}
int CPdfFile::SaveToFile(const std::wstring& wsPath)
{
if (!m_pInternal->pWriter)
@ -767,12 +762,6 @@ void CPdfFile::SetDocumentID(const std::wstring& wsDocumentID)
return;
m_pInternal->pWriter->SetDocumentID(wsDocumentID);
}
void CPdfFile::SetTempFolder(const std::wstring& wsPath)
{
if (!m_pInternal->pWriter)
return;
m_pInternal->pWriter->SetTempFolder(wsPath);
}
void CPdfFile::SetCore(const std::wstring& wsCoreXml)
{
if (!m_pInternal->pWriter)
@ -1415,16 +1404,13 @@ int CPdfWriter::SaveToFile(const std::wstring& wsPath) { return 0; }
void CPdfWriter::SetPassword(const std::wstring& wsPassword) {}
void CPdfWriter::SetDocumentID(const std::wstring& wsDocumentID) {}
void CPdfWriter::SetTempFolder(const std::wstring& wsPath) {}
std::wstring CPdfWriter::GetTempDirectory() { return std::wstring(); }
void CPdfWriter::SetCore(const std::wstring& wsCore) {}
std::wstring CPdfWriter::GetTempFile() { return std::wstring(); }
HRESULT CPdfWriter::get_Type(LONG* lType) { return 0; }
HRESULT CPdfWriter::NewPage() { return 0; }
HRESULT CPdfWriter::get_Height(double* dHeight) { return 0; }
HRESULT CPdfWriter::put_Height(const double& dHeight) { return 0; }
HRESULT CPdfWriter::get_Width(double* dWidth) { return 0; }
HRESULT CPdfWriter::put_Width(const double& dWidth) { return 0; }
HRESULT CPdfWriter::get_DpiX(double* dDpiX) { return 0; }
HRESULT CPdfWriter::get_DpiY(double* dDpiY) { return 0; }
HRESULT CPdfWriter::get_PenColor(LONG* lColor) { return 0; }
HRESULT CPdfWriter::put_PenColor(const LONG& lColor) { return 0; }
HRESULT CPdfWriter::get_PenAlpha(LONG* lAlpha) { return 0; }
@ -1465,7 +1451,6 @@ HRESULT CPdfWriter::put_BrushTextureAlpha(const LONG& lAlpha) { return 0; }
HRESULT CPdfWriter::get_BrushLinearAngle(double* dAngle) { return 0; }
HRESULT CPdfWriter::put_BrushLinearAngle(const double& dAngle) { return 0; }
HRESULT CPdfWriter::BrushRect(const INT& nVal, const double& dLeft, const double& dTop, const double& dWidth, const double& dHeight) { return 0; }
HRESULT CPdfWriter::BrushBounds(const double& dLeft, const double& dTop, const double& dWidth, const double& dHeight) { return 0; }
HRESULT CPdfWriter::put_BrushGradientColors(LONG* pColors, double* pPositions, LONG lCount) { return 0; }
HRESULT CPdfWriter::get_FontName(std::wstring* wsName) { return 0; }
HRESULT CPdfWriter::put_FontName(const std::wstring& wsName) { return 0; }
@ -1486,8 +1471,7 @@ HRESULT CPdfWriter::CommandDrawTextExCHAR(const LONG& lUnicode, const LONG& lGid
HRESULT CPdfWriter::CommandDrawText (const std::wstring& wsUnicodeText, const double& dX, const double& dY, const double& dW, const double& dH) { return 0; }
HRESULT CPdfWriter::CommandDrawTextEx (const std::wstring& wsUnicodeText, const unsigned int* pGids, const unsigned int nGidsCount, const double& dX, const double& dY, const double& dW, const double& dH) { return 0; }
HRESULT CPdfWriter::CommandDrawTextCHAR2 (unsigned int* unUnicode, const unsigned int& unUnicodeCount, const unsigned int& unGid, const double& dX, const double& dY, const double& dW, const double& dH) { return 0; }
HRESULT CPdfWriter::BeginCommand(const DWORD& lType) { return 0; }
HRESULT CPdfWriter::EndCommand(const DWORD& lType) { return 0; }
HRESULT CPdfWriter::EndCommand(const DWORD& lType, const LONG& lClipMode) { return 0; }
HRESULT CPdfWriter::PathCommandMoveTo(const double& dX, const double& dY) { return 0; }
HRESULT CPdfWriter::PathCommandLineTo(const double& dX, const double& dY) { return 0; }
HRESULT CPdfWriter::PathCommandLinesTo(double* pPoints, const int& nCount) { return 0; }
@ -1508,30 +1492,19 @@ HRESULT CPdfWriter::DrawImageFromFile(NSFonts::IApplicationFonts* pAppFonts, con
HRESULT CPdfWriter::SetTransform(const double& dM11, const double& dM12, const double& dM21, const double& dM22, const double& dX, const double& dY) { return 0; }
HRESULT CPdfWriter::GetTransform(double* dM11, double* dM12, double* dM21, double* dM22, double* dX, double* dY) { return 0; }
HRESULT CPdfWriter::ResetTransform() { return 0; }
HRESULT CPdfWriter::get_ClipMode(LONG* lMode) { return 0; }
HRESULT CPdfWriter::put_ClipMode(const LONG& lMode) { return 0; }
HRESULT CPdfWriter::CommandLong(const LONG& lType, const LONG& lCommand) { return 0; }
HRESULT CPdfWriter::CommandDouble(const LONG& lType, const double& dCommand) { return 0; }
HRESULT CPdfWriter::CommandString(const LONG& lType, const std::wstring& sCommand) { return 0; }
HRESULT CPdfWriter::AddHyperlink(const double& dX, const double& dY, const double& dW, const double& dH, const std::wstring& wsUrl, const std::wstring& wsTooltip) { return 0; }
HRESULT CPdfWriter::AddLink(const double& dX, const double& dY, const double& dW, const double& dH, const double& dDestX, const double& dDestY, const int& nPage) { return 0; }
HRESULT CPdfWriter::AddFormField(NSFonts::IApplicationFonts* pAppFonts, IFormField* pInfo) { return 0; }
HRESULT CPdfWriter::CommandDrawTextPdf(const std::wstring& bsUnicodeText, const unsigned int* pGids, const unsigned int nGidsCount, const std::wstring& wsSrcCodeText, const double& dX, const double& dY, const double& dW, const double& dH) { return 0; }
HRESULT CPdfWriter::PathCommandTextPdf(const std::wstring& bsUnicodeText, const unsigned int* pGids, const unsigned int nGidsCount, const std::wstring& bsSrcCodeText, const double& dX, const double& dY, const double& dW, const double& dH) { return 0; }
HRESULT CPdfWriter::DrawImage1bpp(NSImages::CPixJbig2* pImageBuffer, const unsigned int& unWidth, const unsigned int& unHeight, const double& dX, const double& dY, const double& dW, const double& dH) { return 0; }
HRESULT CPdfWriter::EnableBrushRect(const LONG& lEnable) { return 0; }
HRESULT CPdfWriter::SetLinearGradient(const double& dX1, const double& dY1, const double& dX2, const double& dY2) { return 0; }
HRESULT CPdfWriter::SetRadialGradient(const double& dX1, const double& dY1, const double& dR1, const double& dX2, const double& dY2, const double& dR2) { return 0; }
HRESULT CPdfWriter::DrawImageWith1bppMask(IGrObject* pImage, NSImages::CPixJbig2* pMaskBuffer, const unsigned int& unMaskWidth, const unsigned int& unMaskHeight, const double& dX, const double& dY, const double& dW, const double& dH) { return 0; }
std::pair<int, int> CPdfWriter::GetPageRef(int nPageIndex) { return std::make_pair(0, 0); }
bool CPdfWriter::EditPage(PdfWriter::CPage* pNewPage) { return false; }
bool CPdfWriter::AddPage(int nPageIndex) { return false; }
bool CPdfWriter::DeletePage(int nPageIndex) { return false; }
bool CPdfWriter::EditClose() { return false; }
void CPdfWriter::PageRotate(int nRotate) {}
void CPdfWriter::Sign(const double& dX, const double& dY, const double& dW, const double& dH, const std::wstring& wsPicturePath, ICertificate* pCertificate) {}
std::wstring CPdfWriter::GetEditPdfPath() { return std::wstring(); }
PdfWriter::CImageDict* CPdfWriter::LoadImage(Aggplus::CImage* pImage, const BYTE& nAlpha) { return NULL; }
bool CPdfWriter::DrawImage(Aggplus::CImage* pImage, const double& dX, const double& dY, const double& dW, const double& dH, const BYTE& nAlpha) { return false; }
bool CPdfWriter::DrawText(unsigned char* pCodes, const unsigned int& unLen, const double& dX, const double& dY) { return false; }
bool CPdfWriter::PathCommandDrawText(unsigned int* pUnicodes, unsigned int unLen, const double& dX, const double& dY, const unsigned int* pGids) { return false; }
@ -1553,10 +1526,8 @@ std::wstring CPdfWriter::GetDownloadFile(const std::wstring& sUrl) { return std:
CPdfWriter::CCommandManager::CCommandManager(CPdfWriter* pRenderer) {}
CPdfWriter::CCommandManager::~CCommandManager() {}
CRendererTextCommand* CPdfWriter::CCommandManager::AddText(unsigned char* pCodes, unsigned int nLen, const double& dX, const double& dY) {}
CRendererTextCommand* CPdfWriter::CCommandManager::AddText(unsigned char* pCodes, unsigned int nLen, const double& dX, const double& dY) { return NULL; }
void CPdfWriter::CCommandManager::Flush() {}
void CPdfWriter::CCommandManager::SetTransform(const CTransform& oTransform) {}
void CPdfWriter::CCommandManager::SetTransform(const double& m11, const double& m12, const double& m21, const double& m22, const double& dx, const double& dy) {}
void CPdfWriter::CCommandManager::Add(CRendererCommandBase* pCommand) {}
void CPdfWriter::CCommandManager::Clear() {}
void CPdfWriter::CBrushState::Reset() {}